1. 程式人生 > >ZABBIX整合OneAlert實現高階告警壓縮

ZABBIX整合OneAlert實現高階告警壓縮

前言

Zabbix整合OneAlert來實現簡訊、郵件、微信、電話告警》的技術文章,它幫助我們非常的輕鬆的支援了各種告警通知方式,但是存在一個嚴重的問題,我們經常接到各種相類似或者相關聯告警,簡訊太多,難免會出現漏看情況,告警通知幾乎變成垃圾簡訊。為此OneAlert提供了一個適配方案:【高階告警壓縮】

備註:OneAlert目前正在支援更多告警方式,例如:釘釘、webhook、QQ、APP等等

OneAlert整合

首先需要安裝OneAlert Agent,有兩種安裝方式:通用安裝型、一鍵安裝型;OneAlert工程師告知目前只有一鍵安裝型才支援告警壓縮,並且壓縮比率較高,最高能夠達到98%(^_^不是所有壓縮都能到這麼高)

安裝OneAlert Agent

  • 配置->新增應用->點選ZABBX圖示,如下圖:

OneAlert

OneAlert

  1. 建立應用 KEY

OneAlert

OneAlert

2. 選擇作業系統

OneAlert

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應該將什麼級別、型別的告警分配給誰!

  • 配置->分派策略->新增策略

OneAlert

如上圖配置,只要是來自zabbix-onealert應用的通知都會分配給使用者“OPS”

配置通知策略

OneAlert已經能成功將一個告警分配給一個使用者,但是如何通知到使用者呢?規則是什麼?[通知策略]

  • 配置à通知策略à新增à選擇時間、告警級別、告警型別、通知時間、方式à儲存

我的通知策略:

  • 告警發生時、確認、解決立即通過APP或者微信通知
  • 延遲10分鐘發簡訊通知
  • 延遲30分鐘直接彪電話

重要告警電話比簡訊靠譜的多!有時候晚上也接到電話,為避免接到一些不必要的電話,請大家嚴格設定。

OneAlert

告警壓縮

告警合併

什麼是告警合併?

告警合併是將相同、類似、可能相關的事件能夠自動合併關聯起來,整個過程是自動化的。思路是:

  • 時間序列合併,如同一個告警資訊,每個幾分鐘發生一次,就會合並,直到告警恢復/關閉掉。
  • 機器學習合併,包括實時計算和離線計算,演算法方面參考了相似度、決策樹、分類等演算法。以相似度來說:首先採集告警的多維度資訊,包括時間、主機、服務、分組hostgroups、應用applications、標籤tags等基本維度資訊,計算不同告警之間相似度,如果達到閾值,如告警A和告警B有70%相似就關聯起來。目前沒有一種演算法是最合適的,以相似度為例因為根據業務不同,各維度的權重,閾值靈敏度有些差異。例如某些應用的機器名規範化很高,如portal_mysql_master,portal_mysql_slave1,portal_mysql_slave2之類的,機器名權重可以高一些。機器學習領域是未來的重要發展方向,目前OneAlert還在摸索中。

告警合併演示

關閉主機:dd-pre-01的Nginx,觸發了2個告警。OneAlert後臺如下:一個父告警裡面包含兩個子告警。

OneAlert

繼續關閉主機:dd-test-01的Nginx,觸發2個告警。OneAlert後臺如下:當前主機的兩個告警與dd-pre-01告警合併到同一個父告警ID:5183816

OneAlert

假想一下,如果沒有啟用告警合併功能,那麼下圖將變成成百上千條告警,運維人員/相關RD很可能會漏看甚至乾脆不看告警。

OneAlert

通知合併

通知合併是什麼?

告警合併後的相同父告警的事件,會進行合併通知。例如伺服器宕機引發大量程序告警,通知模組並不會同時傳送,只會傳送一部分,剩餘的會合並通知。

如下圖,前幾個告警會發送,後續的會合並起來一起傳送一個彙總通知。

OneAlert

通知合併演示

製造多次告警之後,收到OneAlert通知合併簡訊,內容蠻簡潔的

OneAlert

雖然目前官方暫未公佈合併通知的具體規則,但是我們可以參考以下例子:

某個叢集有100臺nginx,配置了nginx程序的監控項,如果此時100臺nginx全部異常退出。那麼首先會發送5(或者其他數值)條具體的告警通知,然後接下來的95臺機器的告警會合併成一條簡訊傳送給使用者,通知類似上圖(已合併95條通知)。

OneAlert APP

OneAlert提供了一個簡便、輕量級的APP給我們使用,目前支援:任務處理(待處理、處理中、已解決)、分派策略、通知策略、成員資訊檢視、整合論壇交流。一個APP便能支援配置與接收告警通知。

OneAlert

總結

告警壓縮包含告警合併、通知合併,告警合併將相似、關聯、相同的告警合併到一個父告警,比起以往的海量告警,告警合併極大的提高了告警可讀性、準確性。通知合併減少了不必要的通知,能讓我們最快的定位有意義告警。But,通知合併內容較少,是否適合使用,還需要看大家各自的業務環境。