天天看點

解決zabbix_get 擷取不到自定義key一例

解決zabbix_get 擷取不到自定義key一例 

最近發現線上一個機器a無法ping通,×××另一端機器b。請公司網絡組的兄弟确認路由後(同一段的其他機器均正常),懷疑可能是的系統問題。之間決定讓值班的同僚在零晨重新開機網絡服務。之後,杯具發生了......

零晨重新開機網絡服務後,死都連不上這台機器a;接到夜晚值班同僚的電話後,進行簡單判斷懷疑是系統問題;該機上所運作的應用對業務系統相當重要,立即連接配接到公司網絡。考慮到對業務系統的影響,便立即在另外一台機器上快速恢複應用。之後,決定天亮上班後,再請管伺服器的兄弟看看。

具體情況如下:

a機器應用: 1、業務系統   2、zabbix_proxy (接收線上其他業務系統監控資料)

具體操作如下:

找到c機器,設定雙ip後重新安裝業務系統與zabbix_proxy,發現監控正常後,回家睡覺。

關于zabbix 擷取不到自定義key

下午上班看了一下監控,發現線上系統所有關于自定義key的資料都在a機器故障前。其他zabbix_proxy監控的節點,卻沒有這種情況。

 分析:

1、其他節點相同的自定義key是有資料的,表明我的自定義不存在問題,畢竟已經跑了很久了。

2、被c機器監控的節點,系統自帶的key資料都是正常的,排除網絡問題。

3、在c機器上使用zabbix_get 無法擷取到節點的自定義key的值,基本上是傳回一個空值。

經過多次驗證,發現問題的根源其實很簡單。

c機器  eth0  a.a.a.a (該機器本身的ip)  eth0:0 b.b.b.b (b機器的ip位址) 

原因: 被監控節點,發資料發送給b.b.b.b,在zabbix_proxy上執行zabbix_get時,使用的源位址是a.a.a.a,這就導緻了使用zabbix_get傳回空值。

解決方法:

方法1:使用腳本批量修改了被監控節點的server位址為a.a.a.a 

方法2:修改zabbix_proxy的配置檔案選項# sourceip=b.b.b.b <已進行測試确認ok>

方法3: 把eth0 eth0:1 的ip互換一下<這個最簡單,但是系統在跑,沒法搞>

使用方法2時,使用zabbix_get時,傳回的仍然是空值。但是zabbix_server/zabbix_proxy是能夠正常接收的。