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