ZABBIX整合OneAlert實現高階告警壓縮
前言
《Zabbix整合OneAlert來實現簡訊、郵件、微信、電話告警》的技術文章,它幫助我們非常的輕鬆的支援了各種告警通知方式,但是存在一個嚴重的問題,我們經常接到各種相類似或者相關聯告警,簡訊太多,難免會出現漏看情況,告警通知幾乎變成垃圾簡訊。為此OneAlert提供了一個適配方案:【高階告警壓縮】
備註:OneAlert目前正在支援更多告警方式,例如:釘釘、webhook、QQ、APP等等
OneAlert整合
首先需要安裝OneAlert Agent,有兩種安裝方式:通用安裝型、一鍵安裝型;OneAlert工程師告知目前只有一鍵安裝型才支援告警壓縮,並且壓縮比率較高,最高能夠達到98%(^_^不是所有壓縮都能到這麼高)
安裝OneAlert Agent
- 配置->新增應用->點選ZABBX圖示,如下圖:
- 建立應用 KEY
2. 選擇作業系統
3. 安裝Agent
Linux Centos 6:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# AppKey=90fd6c9a-b031-7afc-08c9-1df98690ec1a Plugin=zabbix sh -c "$(curl -L https://raw.githubusercontent.com/oneapm/onealert-agent-installer/master/onealert-zabbix-install-centos6.sh)" ……….. initialize onealert done. start add zabbix plugin. Host [http://localhost/zabbix]: http://10.0.0.2 /zabbix //這裡輸入你的zabbix地址 Zabbix Admin User: admin // zabbix使用者 Zabbix Admin Password: // 密碼 Select user type for new Zabbix user - [1] Super Admin, [2] Admin. The user accesses monitoring data to enable this OneAlert integration [1]: 2 //選使用者型別,我選擇2 onealert-config.zabbix: INFO: Logging in to http://10.0.0.2/zabbix onealert-config.zabbix: INFO: Creating OneAlert usergroup onealert-config.zabbix: INFO: OneAlert usergroup created: OneAlert Service with id 19 onealert-config.zabbix: INFO: Creating OneAlert user onealert-config.zabbix: INFO: OneAlert user created: onealert with id 9. Please note that this user is of type ADMIN. onealert-config: INFO: Writing configuration. onealert-config: INFO: All done. add zabbix plugin is done. start run onealert agent... onealert start/running, process 2165 |
Linux Centos 7:
1 2 3 |
# AppKey=90fd6c9a-b031-7afc-08c9-1df98690ec1a Plugin=zabbix sh -c "$(curl -L https://raw.githubusercontent.com/oneapm/onealert-agent-installer/master/onealert-zabbix-install-centos7.sh)" …….省略…. …….請參考Centos7……. |
備註:以上Appkey請替換成你的
以上步驟做了如下工作:
- 安裝OneAlert Agent,定期呼叫Zabbix API獲取事件,並回傳到OneAlert平臺. So,你不需要配置Action
- 建立OneAlert使用者:OneAlert
- 建立OneAlert組:OneAlert
- 啟動onealert
4. 啟停OneAlert Agent
Linux Centos 6 使用命令
1 2 3 |
# initctl start onealert # initctl stop onealert # initctl restart onealert |
Linux Centos 7 使用命令
1 2 3 |
# service onealert start # service onealert stop # service onealert restart |
配置分派策略
Agent安裝完畢之後,OneAlert平臺可以接收到Zabbix所有觸發器事件. 接下來配置分派策略,告知OneAlert應該將什麼級別、型別的告警分配給誰!
- 配置->分派策略->新增策略
如上圖配置,只要是來自zabbix-onealert應用的通知都會分配給使用者“OPS”
配置通知策略
OneAlert已經能成功將一個告警分配給一個使用者,但是如何通知到使用者呢?規則是什麼?[通知策略]!
- 配置à通知策略à新增à選擇時間、告警級別、告警型別、通知時間、方式à儲存
我的通知策略:
- 告警發生時、確認、解決立即通過APP或者微信通知
- 延遲10分鐘發簡訊通知
- 延遲30分鐘直接彪電話
重要告警電話比簡訊靠譜的多!有時候晚上也接到電話,為避免接到一些不必要的電話,請大家嚴格設定。
告警壓縮
告警合併
什麼是告警合併?
告警合併是將相同、類似、可能相關的事件能夠自動合併關聯起來,整個過程是自動化的。思路是:
- 時間序列合併,如同一個告警資訊,每個幾分鐘發生一次,就會合並,直到告警恢復/關閉掉。
- 機器學習合併,包括實時計算和離線計算,演算法方面參考了相似度、決策樹、分類等演算法。以相似度來說:首先採集告警的多維度資訊,包括時間、主機、服務、分組hostgroups、應用applications、標籤tags等基本維度資訊,計算不同告警之間相似度,如果達到閾值,如告警A和告警B有70%相似就關聯起來。目前沒有一種演算法是最合適的,以相似度為例因為根據業務不同,各維度的權重,閾值靈敏度有些差異。例如某些應用的機器名規範化很高,如portal_mysql_master,portal_mysql_slave1,portal_mysql_slave2之類的,機器名權重可以高一些。機器學習領域是未來的重要發展方向,目前OneAlert還在摸索中。
告警合併演示
關閉主機:dd-pre-01的Nginx,觸發了2個告警。OneAlert後臺如下:一個父告警裡面包含兩個子告警。
繼續關閉主機:dd-test-01的Nginx,觸發2個告警。OneAlert後臺如下:當前主機的兩個告警與dd-pre-01告警合併到同一個父告警ID:5183816
假想一下,如果沒有啟用告警合併功能,那麼下圖將變成成百上千條告警,運維人員/相關RD很可能會漏看甚至乾脆不看告警。
通知合併
通知合併是什麼?
告警合併後的相同父告警的事件,會進行合併通知。例如伺服器宕機引發大量程序告警,通知模組並不會同時傳送,只會傳送一部分,剩餘的會合並通知。
如下圖,前幾個告警會發送,後續的會合並起來一起傳送一個彙總通知。
通知合併演示
製造多次告警之後,收到OneAlert通知合併簡訊,內容蠻簡潔的
雖然目前官方暫未公佈合併通知的具體規則,但是我們可以參考以下例子:
某個叢集有100臺nginx,配置了nginx程序的監控項,如果此時100臺nginx全部異常退出。那麼首先會發送5(或者其他數值)條具體的告警通知,然後接下來的95臺機器的告警會合併成一條簡訊傳送給使用者,通知類似上圖(已合併95條通知)。
OneAlert APP
OneAlert提供了一個簡便、輕量級的APP給我們使用,目前支援:任務處理(待處理、處理中、已解決)、分派策略、通知策略、成員資訊檢視、整合論壇交流。一個APP便能支援配置與接收告警通知。
總結
告警壓縮包含告警合併、通知合併,告警合併將相似、關聯、相同的告警合併到一個父告警,比起以往的海量告警,告警合併極大的提高了告警可讀性、準確性。通知合併減少了不必要的通知,能讓我們最快的定位有意義告警。But,通知合併內容較少,是否適合使用,還需要看大家各自的業務環境。