1. 程式人生 > >使用zabbix監控位於兩臺不同的機器上的文件是否一致

使用zabbix監控位於兩臺不同的機器上的文件是否一致

zabbix;calculate item



生產上有一需求,要把某個文件同步到另一臺備機上,備機啟動程序的時候需要引用這個文件,以便能夠實現failover。文件同步的方法這裏不言,這裏主要討論怎麽通過zabbix平臺實現對兩個位於不同機器上的文件是否一致進行監控,若出現不一致的情況立即告警,需要人為幹預。

在網上也搜索了好多帖子,差不多都使用了腳本來實現,感覺都不適合自己。於是曲曲折折走了一段彎路,最開始打算用Python腳本實現的,腳本都準備好了也測試過了。後來看到了calculate item這種方式,只是單純的通過zabbix就能實現了,所以何樂而不為呢,於是就用這種方案了。現在把最後方案整理一下,與大家分享一下。

一、首先創建合適的基礎監控項

我一開始就考慮著使用vfs.file.md5sumvfs.file.cksum這兩個item來實現。後來操作起來發現vfs.file.cksum比較適合,因為vfs.file.cksum的返回值是一串數字,便於下一步計算。

技術分享


技術分享

1.首先在源主機上創建一個item(註意這裏面的KeyType 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+701e-70.)

Character:字符(字符串)類型數據限制為255B

Log:日誌文件,必須使用的Keylog[]logrt[]

Text:文本(text)不限制大小

三、創建觸發器,測試結果

在備機上創建一個觸發器,當結果不為0時產生告警

技術分享

手動操作一下讓兩個文件不一樣時能立刻產生告警:

技術分享

目的達成!


本文出自 “清渺淡寫” 博客,請務必保留此出處http://qingmiao.blog.51cto.com/7286083/1942296

使用zabbix監控位於兩臺不同的機器上的文件是否一致