Golang 基於Prometheus Node_Exporter 開發自定義腳本監控

Golang 基於Prometheus Node_Exporter 開發自定義腳本監控

img

公司是今年決定將一些傳統應用從虛擬機上遷移到Kubernetes上的,項目多而亂,所以遷移工作進展緩慢,爲了建立統一的監控平臺,我們使用的是在Kubernetes集羣內部署Prometheus-operator,不得不說Prometheus-operator對k8s的監控支持的非常好,helm安裝後會把Prometheus、Alertmanger、Grafana、以及NodeExporter都給安裝完成,打開Grafana k8s中所有監控指標和圖標都已經創建好,大大降低監控部署的複雜性。但是對於我們項目遷移較慢的環境,Promethues只監控k8s集羣當然是不行的,所以我們選擇使用在虛擬機上部署Node_Exporter來監控虛擬機的各項指標,但是Node_Exporter只能監控系統指標,我們可能想要業務的一些監控,比如(文件狀態監控,業務日誌監控...都是一些傳統軟件留下來的坑),這樣Node_Exporter就顯得力不從心了,而且每個項目監控的一些指標並不相同,所以開發統一Exporter不但耗時還會出現一些兼容性和運維複雜性的問題,所以根據原來zabbix自定義監控項的思路考慮對Node_Exporter進行二次開發,增加一個自定義腳本監控項

Node_Exporter源碼目錄結構

通過collector目錄下源碼文件名可以看到具體監控項通過單獨的代碼文件去採集

img

新建custom_scripts.go 開始編寫自定義腳本監控項採集器

  • 定義struct

img

  • 定義所要用到的變量

img

  • 定義init函數去註冊collector,NewCoustomScriptCollector 返回CoustomScriptCollector結構體

img

  • 實現*Unix執行腳本函數

img

  • 註冊Collector接口Update方法

主要邏輯:遍歷目錄下的腳本文件,給腳本文件增加執行權限,然後執行腳本,腳本輸出格式Key=Value,取key、value生成metrics數據

img

在腳本目錄放入測試腳本

img

編譯運行

img

查看metrics數據

img


最後展示的話可以在grafana中添加圖表,也可在alertmanger添加報警規則,具體可以參考Prometheus-Operator實戰

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