內網採集器的主程序是jkbAgent,而jkbMaster是內網採集器的守護程序,負責啟動、重啟、更新jkbAgent。

jkbAgent啟動後,透過讀取用戶的外掛程式設定資訊,載入初始化外掛程式。外掛程式以jkbAgent執行緒的方式執行, 外掛程式之間的執行是並行的且互不干擾。

內網採集器會按時透過postData()方法向監控專家提交收集到的數據, 數據以json格式提交。 外掛程式返回給內網採集器的數據格式如下:

{'agentType':self.agentType,
   'taskId':self.taskId,
   'pluginId':self.pluginId,
   'code':self.code, 
   'time':time.time(),
   'data':redata, 
   'error_info':self.error_info}

內網採集器的程序id會被記錄在tmp資料夾下的agentpid.pid和masterpid.pid中。內網採集器的執行日誌會按天自動產生到log目錄下, 可以透過log分析內網採集器的執行情況。

外掛程式執行連續多次出錯時會被設為停止狀態,此時應透過日誌分析外掛程式的出錯原因,也可以直接聯絡我們。

開發新外掛程式

目前我們的自定義監控配合採集器的使用,支援您開發滿足自己需求的外掛程式。開發外掛程式時應該要遵守下規則:

  • 新外掛程式要放於plugin目錄下,外掛程式包含一個名為CustomClass的類和一個名為run()的入口方法。

  • 類的初始化方法應帶有接收調用對像的實例。

  • 數據返回return數組(在Python裡準確是叫字典),可以仿照custom_daemon.py 進行開發。

下面是記錄外掛程式錯誤資訊的方法:

  self.obj.logger.error(traceback.format_exc())
  self.obj.errorInfoDone(traceback.format_exc())

外掛程式程式碼範例如下:

  #類名必定義為CustomClass
  class CustomClass():
  def __init__(self,obj):
  #接收調用對像的實例
  self.obj=obj
  #必須有個run的入口方法
  def run(self):
      redata={}
      try:
    #數據收集開始
          redata['val1']=455
          redata['val2']=52662
          redata['val4']='descff'
    #數據收集結束
      except Exception :
    #下面是處理外掛程式錯誤資訊的方法
          self.obj.logger.error(traceback.format_exc())
          self.obj.errorInfoDone(traceback.format_exc());
      finally:
          #最終要把數據以字典格式返回
          return redata