Zabbix 5.0:通過LLD方式自動化監控阿里雲RDS

Blog:部落格園 個人
之前做了RDS監控,由於 RDS 實例梳理增多,手動添加的方式已經不夠效率,故改為LLD(Low-level discovery)方式做監控。

什麼是LLD

LLD(Low-level discovery),即低級發現,提供了一種在電腦上為不同實體自動創建監控項,觸發器和圖形的方法。例如,Zabbix可以在你的機器上自動開始監控文件系統或網路介面,而無需為每個文件系統或網路介面手動創建監控項。此外,可以配置Zabbix根據定期執行發現後的得到實際結果,來移除不需要的監控。

用戶可以自己定義發現類型,只要它們遵循特定的JSON協議。

採集數據腳本

調用阿里雲Api,採集RDS相關數據,相關配置可參考之前的文章,採集腳本略。

需要將Api返回的數據處理,將欄位修改為{#MACRO} 形式的LLD宏,最後生成json格式的數據:

例如:

[{
	"{#DBINSTANCEID}": "rr-XXX",
	"{#DBNAME}": "XXX"
}, {
	"{#DBINSTANCEID}": "rm-XXX",
	"{#DBNAME}": "XXX"
}, {
	"{#DBINSTANCEID}": "rm-XXX",
	"{#DBNAME}": "XXX"
}]

說明:

  • {#DBINSTANCEID}:RDS實例ID
  • {#DBNAME}:RDS實例名稱

💡Tips:LLD宏必須大寫,否則會報錯。

配置模板

新建模板,創建自動發現規則:

image-20220706153747443

說明:

參數 說明
名稱 規則名稱
類型 發現的檢查類型
鍵值 可以是內置鍵值,也可以是自定義
更新間隔 執行發現的時間間隔
自定義時間間隔 非必選, 靈活:允許重定義默認更新間隔,調度:可以使監控項在特定時間或時間序列生效
資源周期不足 資源失效時間,若資源失效則刪除,如果設置為「0」,將立即刪除實體。不建議使用「0」

創建監控原型:

image-20220706161720897

創建觸發器原型:

image-20220706161842672

創建圖形原型:

image-20220706161936662

以此類推,把需要監控的項目都加上去。

查看效果:

image-20220706162706844

總結

LLD方式,大大減輕了人為添加監控的負擔,RDS實例的變更也不需要人為去增刪監控,真正做到自動化監控。

但也帶來一些問題,比如性能問題,實例越多,監控原型越多,同時執行的監控採集腳本進程就越多,伺服器的負載壓力越大,而且頻繁調用阿里雲Api也會帶來一些費用成本。

因此,這個監控方案僅限於阿里雲RDS實例數量不太多的場景。若實例數量很多,可以考慮增加快取,一次性讀取數據,將數據存於快取,然後監控客戶端從快取中讀取數據,減少調用採集腳本的頻率。