天天看點

第六章 動作Actions、告警方式Medias

通知條件

實戰添加一個動作(告警方式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,如需轉載請自行聯系原作者