zabbix proxy通過公網訪問zabbix server,有時會出現公網不穩定的情況,導致zabbix proxy無法訪問zabbix server。
這時會產生大量zabbix agent不可達告警。如何解決這個問題?
我們可以在zabbix proxy上添加一個監控項及觸發器zp2zs,探測zabbix server的網絡連通性。
zabbix proxy下的所有的zabbix agent不可達觸發器都依賴這個zp2zs觸發器即可。
這設計到跨主機告警依賴。目前似乎只能在每個zabbix agent上分別添加告警依賴。無法在模板中使用跨主機告警依賴。
zp2zs這個觸發器應該遵循“快速失敗,延遲恢復”的原則。如連續2分鍾都失敗則告警,連續10分鍾正常才恢復。
觸發器表達式如下:
({TRIGGER.VALUE}=0 and {Template xxxx:net.tcp.port[xxxx,xxxx].count(#2,0,eq)}=2) or ({TRIGGER.VALUE}=1 and {Template xxxx:net.tcp.port[xxxx,xxxx].count(#10,0,eq)}>0)
但是還有一種情況可能導致整個告警風暴。proxy 和 agent之間出現問題。
針對整個問題,我們可以在其中一台主機上添加一個觸發器。整個觸發器涉及到幾台主機,只要其中一台agent.ping沒有數據即告警,時間應該搶在常規的5分鍾沒數據即告警之前,比如設置為4分鍾。
然后所有主機的主機不可達觸發器再依賴這個觸發器,就可以達到收斂告警的效果。
這個觸發器表達式如下:
({TRIGGER.VALUE}=0 and ({xxxx:agent.ping.nodata(4m)}=1 or {xxxx:agent.ping.nodata(4m)}=1)) or ({TRIGGER.VALUE}=1 and ({xxxx:agent.ping.count(15m,1)}<15 or {xxxx:agent.ping.count(15m,1)}<15))