天天看點

Zabbix報警功能

一、報警機制概述

1.什麼是報警機制

報警機制在Zabbix中是由兩組動作組成的,即觸發器+動作

觸發器(trigger):一個表達式,或者說一個條件,如使用者超過30等,當觸發條件後,會導緻一個觸發事件,這個事件會執行一個或多個動作

動作(Action):動作是條件被觸發後的行為,可以是發送一條短信或郵箱,或是重新開機某個服務

當這二者結合起來時,就構成了我們所說的報警機制,比如cpu的使用率達到80%以上,觸發了報警動作,系統将自動發送一封郵件到我指定的郵箱。然後我們可以及時的去處理這個錯誤。

2.監控流程

如果要掌握一款監控軟體,那麼它的報警流程和報警機制則是我們必須要學習和研究的重點内容之一。

應該說Zabbix系統的報警流程還是比較複雜的,因為,首先它有多種類型的事件驅動。其次,它有獨特的行為更新機制,特别是對于同一個事件,在不同的時間階段,可以将不同的資訊發送給不同的使用者的機制。

應該說,這個機制在許多開源監控系統中都是沒有的(至少筆者所了解的開源監控系統中除了Zabbix以外,其他系統都沒有這個機制)。再次,在Zabbix系統的報警流程中,使用者可以設定靈活和複雜的觸發條件,且這些條件還可以支援邏輯運算,而這也是許多監控軟體所不具備的。最後,在Zabbix系統的報警流程中增加了使用者權限控制功能。

下面是Zabbix系統報警流程圖

Zabbix報警功能

Zabbix系統中的報警是通過系統中的事件來驅動動作,而後由動作來執行相應的行為,最後由行為通過指定的消息媒體接口将報警資訊發送給使用者的。

下面我們從流程圖從上往下進行分解。

1)确定事件源

事件主要來源于三個方面:

- 觸發器狀态的改變

- 被監控裝置代理的自動注冊

 被監控裝置代理的自動發現等

2)事件被觸發後執行動作

而一旦系統中有新的事件産生,Zabbix系統中的相關程序就會自動比對,系統中所有已經存在的動作中所配置的觸發條件和事件來源類型,并觸發所有觸發條件和事件類型都比對成功的動作。

3)動作評判目标使用者或目标組的權限

動作一旦被觸發,則系統就會執行對應動作的行為。而在執行動作行為時,系統會根據事件來源所屬的主機或主機組,來判斷動作行為所指定的目标使用者或使用者組是否至少具有讀取權限。如Zabbix系統中權限最高的是Admin使用者,如果你指定的使用者不具備權限去執行動作,則視作失敗的動作。

Zabbix系統中的動作都是由某個具體使用者所執行。

4)确定消息媒體,發送消息通知

隻有在上述過程都比對成功以後,系統才能根據行為中所指定的消息接口,調用相應的消息媒體所對應的方法和程式,并将報警資訊發送給目标使用者或使用者組中的所有使用者。

5.行為更新

什麼是行為更新:

比如,我監控使用者的數量不超過30,超過30後觸發報警,這是第一級行為

我又設定了數量不超過40,超過40後觸發報警,這是第二級行為

而從一級行為更新到二級行為就叫做行為更新

對于事件類型是觸發器的動作:

系統在完成新事件之後的首次報警資訊發送後,如果觸發動作的事件類型是觸發器類的,且觸發器的狀态不是由“問題(PROBLEM)”轉變為“正常(OK)”,則對應的動作行為将進入更新過程。在動作行為的更新過程中,系統會依據行為中所配置的更新時間間隔,有計劃有步驟地執行對應動作中的行為,直到引起對應動作被觸發的觸發器的狀态從“問題”轉變為“正常(OK)”為止。

對于事件類型非觸發器的動作:

而對于被監控裝置代理自動注冊、自動發現和觸發器從“問題”狀态轉變為“正常”狀态等類型事件所觸發的動作,則不會有行為的更新過程。由這些類型事件觸發的動作,隻會執行一次對應行為,即隻會給相應使用者發送一次報警資訊。

而如果系統在調用某個消息媒體時出錯,則Zabbix會按照伺服器端配置檔案中SenderFrequency配置項所指定的時間間隔重複嘗試調用出錯的消息媒體。但是,這樣的嘗試次數并不是無限制的,在配置動作的時候需要指定次數。

二、Zabbix設定報警裝置

本節将通過一個案例來講解如何這是報警裝置

本節需要提前準備好一個模闆

[自定義模闆教程]https://blog.csdn.net/ck784101777/article/details/102949023

實驗流程:

  1. 監控Linux伺服器系統賬戶
  2. 建立Action,Triggers,Items,Media,設定郵件伺服器及收件人郵箱
  3. 當系統賬戶數量超過30人時發送報警郵件

步驟一:建立觸發器規則

1)建立觸發器

建立觸發器時強烈建議使用英文的語言環境,通過Configuration--> Templates,找到我們之前建立的count.line.passwd模闆,點選模闆後面的triggers

Zabbix報警功能

點選triggers後,點選右上角建立Trigger,進去之後看到的界面如下,寫入一個名稱

2)觸發器表達式

建立觸發器時需要定義表達式,觸發器表達式(Expression)是觸發異常的條件,觸發器表達式格式如下:

{<server>:<key>.<function>(<parameter>)}<operator><constant>

{主機:key.函數(參數)}<表達式>常數

在如圖-2所示的藍色方框中編寫觸發器表達式,可以直接手寫,也可以通過add選擇表達式模闆。

Zabbix報警功能

下面,我們看幾個表達式的案例:

如果web1主機最新的CPU平均負載值大于5,則觸發器狀态Problem:{web1:system.cpu.load[all,avg1].last(0)}>5        //0為最新資料

根分區,最近5分鐘的最大容量小于10G,則狀态進入Problem:{vfs.fs.size[/,free].max(5m)}<10G                 //5m為最近5分鐘

最新一次校驗/etc/passwd如果與上一次有變化,則狀态進入Problem:{vfs.file.cksum[/etc/passwd].diff(0)}>0                 //0為最新資料

大多數函數使用秒作為參數,可以使用#來表示其他含義(具體參考表-1)。

avg, count, last, min and max 等函數支援額外的第二個參數time_shift(時間偏移量),這個參數允許從過去一段時間内引用資料。

3)建立表達式

名稱的格式最好能展現這個動作的内容,點選Add

Zabbix報警功能

 如圖所示,第一行為Item,即觸發事件,選擇相比對的事件,本節并沒有教大家如何配置事件,我在本節開始出給出了一個連結,裡面有配置事件的教程。

Function:函數,可以選擇zabbix提供的函數

Time shift : 間隔秒數,當使用者在最近60秒 使用者數量超過30後觸發動作,(若在60秒内降到30以下則不會觸發)

N:數量,這裡寫30

Zabbix報警功能

完了之後,将安全級别設定為Warring,點選添加

Zabbix報警功能

步驟二:設定郵件

1)建立Media

通過Administration(管理)-->Media Type(報警媒體類型)-->選擇Email(郵件)

Zabbix報警功能

2)修改參數

SMTP修改為本地郵件伺服器

Zabbix報警功能

步驟三:設定動作執行人

我們這個發郵件的動作需要一個使用者執行,并且這個使用者需要有執行的權限

我們選擇Admin,即Zabbix的管理者來執行這個動作

Zabbix報警功能

點選Admin,選擇Media,添加一個媒介

Zabbix報警功能

點選Add,隻需要修改Send to 即可

Zabbix報警功能

步驟四:建立Action動作

1)建立動作,設定觸發器觸發動作

填寫Action動作的名稱,配置什麼觸發器被觸發時會執行本Action動作(賬戶數量大于30)

點選Select後選擇一個觸發器即可

Zabbix報警功能

2)配置Action的具體行為

點選Operations,點選New

Zabbix報警功能

Steps代表動作的執行次數,1-0代表無限次執行,一般1-3即可

Step duration 持續時間,寫60秒,合理即可

Send to Users:發送給某個使用者,為什麼這個動作觸發後發送給Admin?因為Admin的媒介配置中,我們為其設定的Linux媒介使用者是[email protected],即本地的root使用者,所是以實際上這封郵件是發送給root使用者的

點選Add

Zabbix報警功能

步驟五:測試

在被監控主機建立賬戶(讓賬戶數量大于30),然後登入監控端Web頁面,在儀表盤中檢視問題報警(需要等待一段時間),如圖-16所示。

多添加幾個使用者(一定要在被監控伺服器上)

Zabbix報警功能

觀察到一根警戒線,我們使使用者數量超過警戒線

Zabbix報警功能

檢視報警郵件,在監控伺服器上使用mail指令查收報警郵件

如果沒有郵件你需要耐心等待一下,2分鐘之後任然沒有可能是上面步驟出現了問題

Zabbix報警功能