zabbix 告警收斂


背景

在多個運維技術分享中都會談及到“告警風暴”這個詞,即在大規模網絡發生異常的時候,報警量激增,運維伙伴手機在1個多小時中不斷的接受報警通知,這樣有可能會造成“狼來了”等一系列的問題,不但對運維人員造成了困擾,給排查問題帶了不小的難度。

收斂方案

  • 所有產生告警均由zabbix調用腳本推入緩存redis當中
  • 分析系統將在規定時間(1分鍾)內去redis中拉取數據,根據定義好的一系列規則進行,合並、分析或直接丟棄,並存入分析平台數據庫,以便供歷史查詢。
  • 根據預先定義好的規則將報警通過定義好的方式發送給相關人員。

Zabbix 配置

Actions 配置

對Actions進行特殊設置,Default subject極為重要,是識別收斂的標示。

Default subject
{EVENT.ID}_1

Default message
triggervalue|1#hostname|{HOSTNAME1}#ipaddress|{IPADDRESS}#hostgroup|{TRIGGER.HOSTGROUP.NAME}#triggernseverity|{TRIGGER.NSEVERITY}#triggername|{TRIGGER.NAME}#triggerkey|{TRIGGER.KEY1}#triggeritems|{ITEM.NAME}#itemvalue|{ITEM.VALUE}#eventid|{EVENT.ID}

Recovery subject
{EVENT.ID}_0

Recovery message
triggervalue|0#hostname|{HOSTNAME1}#ipaddress|{IPADDRESS}#hostgroup|{TRIGGER.HOSTGROUP.NAME}#triggernseverity|{TRIGGER.NSEVERITY}#triggername|{TRIGGER.NAME}#triggerkey|{TRIGGER.KEY1}#triggeritems|{ITEM.NAME}#itemvalue|{ITEM.VALUE}#eventid|{EVENT.ID}

Media 配置

police.py--報警函數:zabbix告警是調用此函數,將事件id推入redis。

/usr/local/zabbix/share/zabbix/alertscripts/police.py
#!/usr/bin/env python
#coding:utf-8
import redis
import sys
subject=sys.argv[1]
# 需要修改為對應的redis主機
r = redis.StrictRedis(host="********", password="123456", port=6379)
print subject
r.set(subject,subject)

環境安裝

#安裝python、mysql、redis模塊
pip install redis
pip install mysql-python
yum install gcc python-devel

腳本部署

腳本文件下載地址

├── police
│   ├── dbread.py    --- 據庫查詢函數:接收事件id參數,將zabbix數據庫內的數據切割分片並返回告警信息
│   ├── allpolice.py --- 綜合函數:將①②③整合起來,定時每1分鍾執行一次
│   ├── operation.py --- 操作函數:接收dbread.py返回的告警信息,進行告警合並,告警壓縮處理。並返回處理結果
│   └── weixin.py    --- 發送微信告警通知函數:將處理結果發送至指定運維人員
│   └── config.py    --- 配置信息
├── police.py	     --- 報警函數:zabbix告警是調用此函數,將事件id推入redis。

定時任務



# 告警收斂
*/1 * * * * /usr/bin/python /usr/lib/zabbix/alertscripts/police/allpolice.py >> /usr/lib/zabbix/alertscripts/police/send.log 2>&1

最終效果


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM