其實這篇是在Centos6.7下做的,不過沒感受到差距
官方文檔http://book.open-falcon.org/zh_0_2/philosophy/plugin.html
plugin就是open-falcon上類似於zabbix的用戶自定義監控項userparameter的功能,簡單來說,你把採集監控數據的可執行文件弄好,在open-falcon前端頁面配置一下,他就會按你設置的時間間隔去執行腳本並獲取輸出作爲監控數據
官方給的教程是把可執行文件放在git上,再通過http請求讓agent自動去拉取這些文件,但是我的服務器連不上外網,所以寫了這篇,其實也沒差多少
1 配置agent
open-falcon的agent配置文件要進行修改,使能plugin
因爲我們不用git的那些功能,只要改enabled和dir就可以了
"plugin": {
"enabled": true, // 使能
"dir": "./plugin", // 本地插件目錄,相對目錄是相對於open-falcon這個腳本的目錄而言
"git": "https://github.com/open-falcon/plugin.git",
"logs": "./logs"
},
這個dir是相對於open-falcon這個可執行文件而言的(就是我們./open-falcon start agent那個),比如下面這麼寫,就要建立這樣的目錄結構
改完重啓agent
sudo ./open-falcon restart agent
2 編寫監控腳本
只要這個腳本執行後,可以打印出json,json按open-falcon push數據的json格式來就好了
因爲每個監控腳本都要寫一下怎麼把數據封裝成open-falcon的json格式很麻煩,所以我寫了一個封裝腳本,要執行shell命令還是腳本,自己填就好了,支持中文,output裏面每一行代表一個自定義監控項,自己要幾個寫幾個,用逗號分隔
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import time
import json
import os
def cmd(command):
return os.popen(command).read().split("\n")[0]
output = [
{"endpoint": "這裏寫你的endpoint", "tags": "這裏寫你的tag", "timestamp": int(time.time()), "metric": "這裏寫你的counter名", "value": cmd(這裏寫上你要執行的shell命令,或者腳本), "counterType": "GAUGE", "step": 這裏寫監控週期},
{"endpoint": "這裏寫你的endpoint", "tags": "這裏寫你的tag", "timestamp": int(time.time()), "metric": "這裏寫你的counter名", "value": cmd(這裏寫上你要執行的shell命令,或者腳本), "counterType": "GAUGE", "step": 這裏寫監控週期}
]
print json.dumps(output, ensure_ascii=False)
腳本要用數字加下劃線開頭,數字就是step,比如我這個腳本60s執行一次,就命名爲60_xxx.py
腳本放在剛纔建立的plugin目錄下,再建立一個子目錄MetaStore,把腳本放進去
再強調一下,目錄結構是plugin/MetaStore/60_xxx.py
3 前端配置
現在來到HostGroup那裏,找到你要綁定這個plugin的主機組
這裏的目錄是plugin下面的目錄,比如我剛纔的目錄結構,這裏填寫MetaStore就可以了
配置之後,等一兩分鐘,就可以了