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

Node_Exporter源碼目錄結構

經過collector目錄下源碼文件名能夠看到具體監控項經過單獨的代碼文件去採集golang

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實戰函數

相關文章
相關標籤/搜索