zabbix 告警小試
1. 實驗內容簡述
本次實驗,旨在通過zabbix監控,實現對告警信息的實時通知,主要用到了zabbix中的item、trigger、action、user、user group、media等內容,通過item監控特定的對象,當item返回值滿足一定條件的時候,觸發觸發器的action動作,通知相關的用戶。實現的功能有以下幾點:
- 監控的內容是什么
- 在什么樣的情況下屬於異常,需要通知
- 以什么樣的方式通知用戶,怎么通知
- 通知用戶的內容是什么
2. 實驗步驟
2.1 創建觸發器
在之前創建的item上,直接創建一個觸發器,使用的item是nginx.active,當該item獲取的最后的值,大於1時,就產生trigger,所以條件就是大於1或者是大於等於2.
在這里選擇的是configuration-template-trigger,直接在模板里面創建觸發器,關聯該模板的所有主機就都會有這個觸發器了。輸入觸發器的名稱、該觸發器觸發之后的服務級別(未定義、information、warnning、average、high、disater),輸入觸發器的表達式,可以直接通過表達式向導編寫,選擇所需要的item,然后獲取該item的指定規則的值,條件是該值大於1即可。生成的結果就是:
{Template Nginx Status:nginx.status[8080,active].last()}>=2
添加完成后就可以開始添加action了。
2.2 創建告警介質media
默認的告警介質有Email、jabber和SMS,實際上還可以通過腳本的形式,生成告警介質,在這里為了模擬介質,我們選擇將告警內容輸入到一個文本文件中,假裝是通過短信接口發送出去了。首先是要找到zabbix-server上關於告警腳本的配置路徑,也就是alertscripts的路徑,在zabbix-server的配置文件中:
vim /etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/lib/zabbix/alertscripts
所以我們需要將編寫的發送腳本,放在該目錄下,而且還是能有可執行權限的shell腳本,這里我們寫的很簡單,對於發送短信,一般都是有三個參數,收件人、收件主題和收件內容。所以我們這里面模擬的時候也是需要三個參數,然后將內容寫入到一個臨時文件中。具體腳本如下:
#/bin/bash
ALERT_TO=$1
ALERT_TITLE=$2
ALERT_MESSAGE_BODY=$3
echo "-------A NEW MESSAGE-------">> /tmp/sms.log
echo "$ALERT_TO" >> /tmp/sms.log
echo "$ALERT_TITLE" >> /tmp/sms.log
echo "$ALERT_MESSAGE_BODY" >> /tmp/sms.log
在這腳本中,先獲取三個變量參數值,然后將對應的內容寫入到臨時文件中。在這個地方有個小坑,就是message字段是換行的多個字段,如果直接用變量寫入文件,只寫入了最后一行,其他的內容內容都丟了,這是shell腳本應該注意的地方。其中這三個參數分別代表着收件人聯系方式、收件主題和收件內容。
腳本編寫完成之后,要添加可執行權限,一會是zabbix用戶去調用該腳本寫入,所以這涉及到權限問題,如果是先執行了腳本,生成了/tmp/sms.log文件,則當出現告警的時候,zabbix用戶是無法寫入的,因為該文件的屬主是root,其他用戶無法寫入,需要重新修改權限。所以建議是刪除該文件,由zabbix用戶去創建。
腳本編寫完成之后,就需要去web頁面上進行配置了,主要是配置告警媒介media,在administration-media type中,我們選擇新建,然后選擇scripts,輸入不帶路徑的腳本名稱,因為腳本就存放在默認路徑下。在這里,升級改版之后,需要輸入參數,因為我們的腳本有三個參數,所以我們在這里也需要輸入三個參數,分別是{ALERT.SENDTO},{ALERT.SUBJECT},{ALERT.MESSAGE}.這三個參數,分別對應的內容是這樣的:
{ALERT.SENDTO}:對應的是在user中用戶的聯系方式,可以是電話號碼、Email-address等
{ALERT.SUBJECT}:對應的是在action中的subject主題
{ALERT.MESSAGE}:對應的是在action中的message信息,包含operation和recovery operation

2.3 創建用戶和用戶組
用戶和用戶組,是用來接收告警信息的,所以需要創建,在trigger觸發器中,可以選擇將告警信息內容,發送給用戶組或單獨用戶,比較關鍵的一點時,對於主機或主機組的權限,只能授權給用戶組,不能單獨授權給某一個用戶,所以需要創建用戶組。在這里我們創建的用戶組是test,用戶是zhangsan。在用戶的media配置中,可以選擇剛剛創建的sms媒介media。然后就完成用戶和用戶組的創建了。
2.4 創建action
創建action,就是將之前創建的觸發器,和用戶關聯起來,並設置通知用戶的內容,配置路徑在configuration-action,選擇新建action。
創建action的時候,需要選定條件,也就是觸發器的名稱。這里我們選擇的是剛才創建的觸發器,Template Nginx Status: Nginx Active link overload
創建了action之后,需要在operation中進行操作了,編寫告警內容信息,以及發送對象。對於告警信息,默認給了一個模板,如果技術比較好,完全可以自己寫,這里我就完全是照搬了。選擇operation的操作內容,選擇操作方式和發送方式,send message。
配置完成之后,就可以通過來模擬觸發器告警,來收信息了。
2.5 模擬告警
在這里,通過對nginx的多次訪問,就能觸發告警,在出發告警之后,在monitor中的problem,就能直接看到告警的概要,包含告警內容、操作action方式,是否發送成功等,點擊前面的時間,可以看到詳細的事件信息。
同時,通過查看記錄文件,可以發現,已經有了告警通知消息。
以上就完成了告警的簡單配置。