解決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是能夠正常接收的。