使用zabbix監控位於兩臺不同的機器上的文件是否一致
生產上有一需求,要把某個文件同步到另一臺備機上,備機啟動程序的時候需要引用這個文件,以便能夠實現failover。文件同步的方法這裏不言,這裏主要討論怎麽通過zabbix平臺實現對兩個位於不同機器上的文件是否一致進行監控,若出現不一致的情況立即告警,需要人為幹預。
在網上也搜索了好多帖子,差不多都使用了腳本來實現,感覺都不適合自己。於是曲曲折折走了一段彎路,最開始打算用Python腳本實現的,腳本都準備好了也測試過了。後來看到了calculate item這種方式,只是單純的通過zabbix就能實現了,所以何樂而不為呢,於是就用這種方案了。現在把最後方案整理一下,與大家分享一下。
一、首先創建合適的基礎監控項
我一開始就考慮著使用vfs.file.md5sum和vfs.file.cksum這兩個item來實現。後來操作起來發現vfs.file.cksum比較適合,因為vfs.file.cksum的返回值是一串數字,便於下一步計算。
1.首先在源主機上創建一個item(註意這裏面的Key和Type of information參數設置)
2.備機上同樣的方法創建一個item(這裏不貼圖了)
二、使用item類型中的Calculated來實現兩個監控項之間的比較
用calculate可以對item進行計算,計算方式主要靠一系列的表達式組成。計算後的結果存放在數據庫中,也就是說歷史數據、趨勢數據都會存在數據庫中。這就意味著可以對calculate item監控項進行告警配置。詳細介紹請點擊鏈接
https://www.zabbix.com/documentation/2.4/manual/config/items/itemtypes/calculated
Key在每個HOST中都是唯一的,不能重復。其表達式如下:
func(<key>|<hostname:key>,<parameter1>,<parameter2>,...)
各個參數的含義如下圖所示:
現在在備機上創建一個calculate item監控項,來比較兩個文件是否一致。通過前者的cksum值與後者sksum作差運算
註:如果操作完成後中出現下面提示的錯誤,需要檢查一下Type of information設置:
這裏解釋一下出現這個問題的原因:當前者cksum值比後面大的時候正常顯示,而當前值比後面小的時候就會出現上面這種結果,究其原因也就是類型不同其能包含的值也不同。
下面詳細介紹一下item參數中的Type of information
Numeric(unsigned):64位無符號的整數
Numeric(float):浮點數類型(從zabbix2.2開始,接收的值大小可以支持如1e+70、1e-70.)
Character:字符(字符串)類型數據限制為255B
Log:日誌文件,必須使用的Key為log[]和logrt[]
Text:文本(text)不限制大小
三、創建觸發器,測試結果
在備機上創建一個觸發器,當結果不為0時產生告警
手動操作一下讓兩個文件不一樣時能立刻產生告警:
目的達成!
本文出自 “清渺淡寫” 博客,請務必保留此出處http://qingmiao.blog.51cto.com/7286083/1942296
使用zabbix監控位於兩臺不同的機器上的文件是否一致