node_exporter自定義監控

背景

我們在使用Zabbix的時候,可以自己寫自定義腳本。在使用Promethues的時候,有很多的exporter,但是有一些特殊的情況沒有,比如,我需要監控進程一啟動就告警,但是進程沒啟動,是使用process_exporter監控不了的,在process_exporter官網找了一圈,也問了一圈,發現還是只有自己動手才行。但是自定義的腳本有一個缺點就是,你不知道他有什麼缺點,你光是想要完成這個任務的話,有很多辦法,但是想要他至少沒有啥副作用,是有挑戰的。

步驟

1)自定義腳本並把內容以key:value的形式寫入以.prom結尾的文件
2)定時任務執行自定義腳本
3)添加啟動參數,node_exporter採集數據(採集頻率為定時任務的頻率)

 

1、配置啟動

通過textfile採集用戶自己生成的指標,參數--collector.textfile.directory,如下:

./node_exporter --collector.textfile.directory='/path/'

 

2、輸出格式

#HELP example_metric read from /path/example.prom  
#TYPE example_metric untyped  
example_metric 1

 

3、任務執行

一般腳本任務(輸出指標到.prom文件)會被放入crontab中,按照需求設置指標採集時間,同時node_exporter採集的時候文件執行寫入操作,可能導致文件出現問題。我們可以將任務先轉移到一個臨時文件,然後通過臨時文件的重命名進行操作。

*/2 * * * * sh test.sh && mv /path/example.promm /path/example.prom

 

4、指標採集

指標採集的時間是根據你的crontab的定時任務的時間來的,可以根據通過這個指標來判斷數據是否上報node_textfile_mtime_seconds;也可以對這個指標監控, node_textfile_mtime_seconds這個key值表示的是textfile最後一次採集文件的時間,如 

node_textfile_mtime_seconds{file="process_counts.prom"}

 

寫在最後

李先生(Lemon),高級運維工程師(自稱),SRE專家(目標),夢想在35歲買一輛保時捷。喜歡鑽研底層技術,認為底層基礎才是王道。一切新技術都離不開操作系統(CPU、內存、磁盤)、網絡等。堅持輸入輸出,記錄自己學習的點滴,在平凡中堅持前行,總有一天會遇見不一樣的自己。公眾號:運維汪(ID:Leeeee_Li)。