通知條件
實戰添加一個動作(告警方式Medias《自定義腳本發媒介》)
zabbix腳本報警媒體自定義
我們前面花了大量時間去講解item、trigger、event都是為發送報警做準備的,什麼是事件通知呢?簡單的說故障發生了,zabbix會發郵件或者短信給你,告訴你伺服器的一些狀況。如果沒有通知這塊内容,你要盯着zabbix的事件才知道伺服器發生什麼狀況了。這和保安有什麼差別?
發送通知,需要有如下步驟
定義一個通知媒體
這個媒體包含email、shell腳本、sms短信網關(用得比較少)。zabbix将需要發送的内容傳遞給這些媒體,然後這些媒體把事件放到對應的終端。例如通知内容發給email,email媒體将内容發送到報警郵箱中。
配置action
Action由conditions(條件)和operations(操作)組成。當滿足指定的條件,然後執行操作。這就是一個action。
1、建立動作
<code>action支援如下事件</code>
觸發器事件 – 觸發器狀态在OK和PROBLEM之間變化 發現事件 自動注冊時間 – 新的用戶端注冊進來 内部事件 – item轉變為unsupported狀态,觸發器轉變為unknown狀态
1、選擇觸發項,點選建立動作
<a href="http://s4.51cto.com/wyfs02/M00/89/CC/wKiom1gccx2QVaXgAAB9g8RCvzg519.png" target="_blank"></a>
2、按照表格填寫好資訊,包括這個動作的名稱,郵件方面都是用的内建的宏,如果不滿足我們的需求可以自定義腳本,現在網上面很多zabbix微信報警的文檔
<a href="http://s5.51cto.com/wyfs02/M00/89/C9/wKioL1gccy-QJmJ8AAC54RiJfIA265.png" target="_blank"></a>
3、設定條件,就是符合我們要求了,我們就執行動作或者操作
<a href="http://s4.51cto.com/wyfs02/M01/89/CC/wKiom1gcc0CgUgvdAACBMInFViU834.png" target="_blank"></a>
4、建立操作,當我們條件滿足了,我們可以選擇發送消息或者執行指令
<code>我添加兩個操作,第一個是執行動作,當80端口down後,先去用戶端主機上面</code><code>ssh</code><code>登入執行重新開機httpd服務</code>
<code>如果還沒有恢複,就給管理發送故障消息郵件</code>
4.1、設定遠端指令
<a href="http://s5.51cto.com/wyfs02/M02/89/CC/wKiom1gcc1iRw6m_AACLr9Vsy_g787.png" target="_blank"></a>
4.2、設定發送消息
<a href="http://s3.51cto.com/wyfs02/M02/89/C9/wKioL1gcc4iDOZ52AAC8Ga27CrE104.png" target="_blank"></a>
5、我們預設的設定是釋出出去郵件的,因為媒介裡面沒有設定郵件伺服器位址,以及發件人的使用者名和密碼
<a href="http://s5.51cto.com/wyfs02/M00/89/CC/wKiom1gcc5zBYTWNAAC3Vzd-6Gc678.png" target="_blank"></a>
6、現在我們停止服務,看遠端指令能不能幫我們執行成功
7、傳回我們zabbix的web界面看下時間,因為時間短,隻能到時間裡面看執行動作(下圖,故障就幾秒會恢複了)
<a href="http://s5.51cto.com/wyfs02/M01/89/C9/wKioL1gcc62xrx5QAACPAjh9GyA639.png" target="_blank"></a>
8、當我們重新開機服務也沒有用時候,需要人工智能介入了,(為了示範效果,我把用戶端的httpd監聽位址改成了8080,這樣伺服器監聽tcp80端口不成功,重新開機也無法監聽80端口,就會去執行第二步,給管理者發送故障郵件消息)(看下圖,已經提示執行了我們第二步操作了)
<a href="http://s5.51cto.com/wyfs02/M00/89/C9/wKioL1gcc8rCgu32AACS-ewtjLI593.png" target="_blank"></a>
9、進入伺服器檢視有沒有收到報警的郵件資訊(看下圖,都是郵件)因為我設定5秒觸發一次
<a href="http://s2.51cto.com/wyfs02/M01/89/CC/wKiom1gcc9vibw43AAGmRyzKsNk906.png" target="_blank"></a>
郵件内容
<a href="http://s3.51cto.com/wyfs02/M01/89/C9/wKioL1gcc-izfc1QAACqQqVzfug654.png" target="_blank"></a>
zabbix媒介類型包括mail、sms、自定義腳本,我們用的最多的還是腳本媒介,再次我們就不講另外兩個媒介了。當事件通知到腳本,會傳遞三個參數它, zabbix調用腳本時會向其傳遞參數;3.0之前的版本通過 <code>$1:消息接收人;</code> <code>$2:消息主題;</code> <code>$3:消息主體;</code> 3.x之後的版本,此三個參數預設不再傳遞,需自行定義; 可以使用宏來模拟此前的行為: <code>{ALERT.SENDTO}</code> <code>{ALERT.SUBJECT}</code> <code>{ALERT.MESSAGE}</code> 例如發送郵件給[email protected],标題為nginx離線,内容是IP位址:1.1.1.1,nginx離線,請立即處理。
1、添加媒介
<a href="http://s3.51cto.com/wyfs02/M02/89/CC/wKiom1gcc_-hIcZ4AACPKMAEOrs639.png" target="_blank"></a>
2、設定媒介的名稱和腳本的路徑,已經需要傳遞的宏
3、添加腳本檔案
配置AlertScriptsPath //腳本存放的路徑
4、給使用者添加我們建立的媒介
<a href="http://s1.51cto.com/wyfs02/M02/89/CC/wKiom1gcdCny1Z3GAABhdwj6goA469.png" target="_blank"></a>
5、選擇需要使用的媒介,設定好對方收件人位址
<a href="http://s3.51cto.com/wyfs02/M02/89/C9/wKioL1gcdD-yOeLgAABV9-y8Jg0467.png" target="_blank"></a>
6、在動作的操作裡面也添加選擇我們建立的媒介
<a href="http://s5.51cto.com/wyfs02/M01/89/CC/wKiom1gcdE_w0bOmAACczR0s92Y730.png" target="_blank"></a>
7、我把原來的第二步删了,這裡才會顯示隻有兩步的(下圖裡面有已經執行完兩步的,還有正在發送的,因為我設定的頻率很快,是以有很多)
8、已經收到了郵件
<a href="http://s1.51cto.com/wyfs02/M01/89/CC/wKiom1gcdISzIeCwAADiAihck04102.png" target="_blank"></a>
<a href="http://s4.51cto.com/wyfs02/M01/89/C9/wKioL1gcdIXjtlnWAACqIipKpl4166.png" target="_blank"></a>
本文轉自 好筆記運維 51CTO部落格,原文連結:http://blog.51cto.com/zhang789/1869616,如需轉載請自行聯系原作者