說明
Plugin可以看做是對agent功能的擴充。使用插件可以對采集腳本進行統一管理,方便定制修改,也可以免去在crontab中添加計划任務。
開啟plugin功能
# 修改agent配置文件
"plugin": {
"enabled": true, # 打開設置為true
"dir": "/opt/programs/open-falcon-agent_0.2.1/plugin", # git插件目錄
"git": "http://user:password@ip/open-falcon/plugin.git", # git相關地址、用戶名及密碼
"logs": "/opt/programs/open-falcon-agent_0.2.1/logs" # git插件執行目錄
},
編寫采集腳本
用什么語言寫沒關系,只要目標機器上有運行環境就行,腳本本身要有可執行權限。采集到數據之后直接打印到stdout即可,agent會截獲並push給server。數據格式是json,舉個例子:
#./600_ntp.py
[{"endpoint": "host01", "tags": "", "timestamp": 1431349763, "metric": "sys.ntp.offset", "value": 0.73699999999999999, "counterType": "GAUGE", "step": 600}]
注意,這個json數據是個list
上傳腳本到git
插件腳本也是code,所以最好也用git、svn管理,這里我們使用git管理,公司內部如果沒有搭建gitlab,可以使用gitcafe、coding.net之類的,將寫好的腳本push到git倉庫,比如上例中的600_ntp.py,姑且放到git倉庫的sys/ntp目錄下。
注意,這個腳本在push到git倉庫之前要加上可執行權限。
拉取plugin腳本
agent開了一個http端口1988,執行命令curl一下http://ip:1988/plugin/update 這個地址,這會讓agent主動git pull這個插件倉庫。
讓plugin run起來
上一步我們拉取了plugin腳本到所有機器上,不過plugin並沒有執行。哪些機器執行哪些plugin腳本,是在portal上面配置的。在portal上找到要執行插件的HostGroup,點擊對應的plugins超鏈接,對於上例sys/ntp目錄下的600_ntp.py,直接把sys/ntp綁定上去即可。sys/ntp下的所有插件就都執行了。
備注
portal上配置完成之后並不會立馬生效,有個同步的過程,最終是agent通過調用hbs的接口獲取的,需要一兩分鍾。上例我們綁定了sys/ntp,這實際是個目錄,這個目錄下的所有插件都會被執行,那什么樣的文件會被看做插件呢?文件名是數字下划線打頭的。這個數字代表的是step,即多長時間跑一次,單位是秒,比如60_a.py,就是在通過命名告訴agent,這個插件每60秒跑一次。sys/ntp目錄下的子目錄、其他命名方式的文件都會被忽略。