Centos6.10下Open-falcon學習記錄(三)——plugin機制使用、無git方案

其實這篇是在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就可以了

 

配置之後,等一兩分鐘,就可以了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章