Zabbix 隨筆:事件通知淺析(觸發(fā)器篇)
每天都會發(fā)生不同的事件,在軟件的世界也不例外,Zabbix 里面所發(fā)生的一切也稱為事件。Zabbix 的事件類型有如下幾種:
- 觸發(fā)器事件
- 服務(wù)事件
- 發(fā)現(xiàn)事件
- 自動注冊事件
- 內(nèi)部事件
如何知道這些事件的內(nèi)容?也是本文要提的事件通知,不過本文的內(nèi)容只涉及觸發(fā)器事件,也是我們常說的告警。
正文
Zabbix 的事件是帶有時間戳的,因此具備事件通知的基礎(chǔ)條件,如果需要查看前端事件的詳細信息,可以在 Monitoring ->Prombles 里查看,也可以單擊時間查看時間的詳細信息。
可以查看問題清單
點擊時間戳查看問題詳情
本文環(huán)境
- RockyLinux 8.5
- Zabbix 6.0.2 LTS
邏輯分析
事件通知用人話來講,就是通知的內(nèi)容是什么?通知到誰?通過什么渠道通知到人?如果把這幾個問題搞定了其實問題就不大了,全文將通過這三個問句探討。
模擬主機告警
創(chuàng)建一個模擬主機,掛載 ICMP Ping 模板,該主機是一個不存在的主機。
創(chuàng)建一個不存在的機器
觸發(fā)告警
查看告警
回到首頁,在默認儀表盤里是有問題模塊的,可以看到相關(guān)告警,可以通過告警查看當前問題為什么 ICMP ping 不可達,這是通過內(nèi)部的組件告訴你一臺主機出現(xiàn)異常了,作為 NOC 團隊看這個儀表盤的確就可以了,但前提是24小時得有人盯著這個儀表盤,那么如果相關(guān)業(yè)務(wù)的人員也想看他們的主機情況,就得需要創(chuàng)建相關(guān)賬號,同時對賬號進行資源授權(quán),而細分領(lǐng)域后,告警量級明顯會降低很多,此時業(yè)務(wù)人員也不可能時時刻刻盯著這個儀表盤,所以可以通過一些渠道告知業(yè)務(wù)人員,例如郵件、一些即時通信軟件,本文采用飛書的方式演示。
通過什么渠道告知?
第一個要解決的問題是通過什么渠道來發(fā)送通知這件事情,本文確定以飛書的形式通知業(yè)務(wù)方相關(guān)告知內(nèi)容。由于官方?jīng)]有相對應(yīng)的媒介,所以需要自行創(chuàng)建,本文不做媒介創(chuàng)建演示,具體可以參考我之前的文章。
創(chuàng)建的飛書媒介
發(fā)送通知的本質(zhì)就是動作
既然確定了用什么渠道來發(fā)送通知,那么怎么發(fā)送通知呢?發(fā)送通知本身就是一個動作,在 Zabbix 里也是動作(Actions)。
觸發(fā)器動作(Trigger actions)
點擊創(chuàng)建一個動作,動作模塊里有兩個 tab,分別是動作和操作 動作部分有四塊,紅星的地方必須填寫。
進入觸發(fā)器動作
動作板塊
多個條件才會觸發(fā)計算類型
name 字段自定義即可:
Type of calculation,關(guān)于這個只有在兩個條件及以上的的時候才會觸發(fā),里面包含四個選項。
- And/Or:和與或同時存在,And 和 Or 的放置方法為同類型條件為 Or,非同類型為 And。
- And:所有條件必須滿足。
- Or:滿足任意條件即可。
- Custom expression:自定條件組合。
A和D為觸發(fā)器條件,所以為Or,其他為觸發(fā)器級別和名稱,所以為and
Conditions,點擊 Add 后,會彈出條件對話框,會有三個選項:
- Type:包含很多種類型,就不一一贅述了。
- Operator:包含與不包含。
- 根據(jù)Type可變。
條件界面
條件類型
操作部分有6塊,紅星的地方必須填寫。
操作部分
Default operation step duration,默認操作步驟的時間,動作內(nèi)全局變量。
Operations,告警動作。
- Steps:第一個數(shù)字代表步驟,后面的數(shù)字代表此步驟重復(fù)次數(shù),如果是1-10,就證明此步驟每間隔一小時執(zhí)行此動作。
- Step duration:步驟持續(xù)時間,0代表永不過期。
- Send to user groups:發(fā)送到用戶組。
- Send to users:發(fā)送到用戶。
- Send only to :推送渠道。
- Custom message:自定義消息模板。
- Conditions:條件(不常用,只有一個條件,就是事件被標記)。
Recovery operations,恢復(fù)動作。
- Operation,動作內(nèi)容。
- Send to user groups,發(fā)送到組。
- Send to users,發(fā)送到用戶。
- Send only to,發(fā)送渠道。
- Custom message,自定義消息模板。
- Update operations,更新動作,內(nèi)容與恢復(fù)動作一致。
- Pause operations for suppressed problems,暫停維護期間(被監(jiān)控設(shè)備)的告警通知。
- Notify about canceled escalations 取消通知。
根據(jù)環(huán)境創(chuàng)建動作
本文的環(huán)境是創(chuàng)建一臺主機,主機組為 Linux Servers,告警推送給 Admin 用戶,根據(jù)上文淺析,判斷條件只需要一個就夠了,主機組為該組即可;動作詳情僅修改 Send to users,Send only to 即可。
創(chuàng)建條件
創(chuàng)建動作
建立完成后,首頁會出現(xiàn)動作的箭頭,此時證明寫的動作生效了,但是此時出現(xiàn)紅色的箭頭,點開查看原因為 No media defined for user,字面意思是用戶沒有定義媒介,言外之意是該用戶沒有定義媒介的配置。所以需要進入到用戶界面配置,需要配置的部分包括該用戶可以通過飛書接受信息,測試用戶就隨便填寫了,和應(yīng)用無關(guān)(郵件與SMS除外),其他的字段分別是什么時間可以接受告警,接受的告警有哪些級別,啟用狀態(tài)。
添加用戶媒介配置
調(diào)整完用戶后,此時會發(fā)現(xiàn)依然會出現(xiàn)動作失敗的提示,只不過內(nèi)容變?yōu)?No message defined for media type。這個報錯為消息模板未定義,即是通知內(nèi)容模板未寫,有兩個地方可以填寫內(nèi)容模板,第一個是媒介里的消息模板,第二個為動作里的自定義消息模板,消息模板是支持變量的,具體可以參閱官方文檔的宏,也可以參閱筆者的內(nèi)容美化文章,這里不展開贅述了,至于區(qū)別就是媒介里的只需要創(chuàng)建一次,動作里的需要每一條都需要單獨寫,就這區(qū)別,兩者任選其一,本文使用媒介里的消息模板。
提示未定義消息模板
媒介里的消息模板
動作里的消息模板
媒介里自定消息模板效果圖
當出現(xiàn)下圖時候,代表發(fā)送已經(jīng)成功,飛書 APP 也接收到相關(guān)信息,恢復(fù)和更新動作同理配置,限于篇幅原因不再展開。
寫在最后
整個事件通知其實以通知到相關(guān)人員為邏輯展開,理解起來就沒那么復(fù)雜,當然有很多細節(jié)需要自己體會,包括后期的事件升級功能、高階事件通知運用等等,技術(shù)本是以人為本,所以大家不理解的時候多想想背后的邏輯,自然簡單的多。