添加自定義監控項目,配置郵件告警,測試告警,不發送郵件的問題處理
筆記內容:
19.12添加自定義監控項目
19.13/19.14配置郵件告警
19.15測試告警
19.16不發送郵件的問題處理
筆記日期:2017-11-20
19.12添加自定義監控項目
自定義的監控項目是用於實現一些特殊的、個性化的監控需求,因為zabbix自帶的模板裏的監控項目,是不能幫我們做到某個特定的監控的,所以需要自己去自定義一個監控項來完成這種個性化需求。
例如:我現在有一個需求,這個需求是監控某臺web服務器80端口的並發連接數量(ESTABLISHED狀態的),並繪制出圖表。
根據需求分析,首先我們第一步肯定得先通過腳本的方式獲得這個連接數量,得到連接數量後還要去zabbix監控中心去創建監控項目,然後再針對這個自定義項目繪制一個圖形出來。那麽下面就演示如何完成這個需求:
1. 對於第一步,需要到客戶端機器上定義腳本:
vim /usr/local/sbin/estab.sh
腳本內容如下:
#!/bin/bash
##獲取80端口並發連接數
netstat -ant |grep ‘:80 ‘ |grep -c ESTABLISHED
獲取80端口的連接數量就一條命令就可以搞定了,所以這個腳本很簡單:
給這個腳本設置權限:
chmod 755 /usr/local/sbin/estab.sh
然後編輯zabbix客戶端的配置文件:
vim /etc/zabbix/zabbix_agentd.conf
增加內容如下:
UnsafeUserParameters=1 //表示使用自定義腳本
UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh
//自定義監控項的key為my.estab.count,後面的[*]裏面寫腳本的參數*表示沒有參數,如果沒有參數則可以省略,腳本路徑為/usr/local/sbin/estab.sh
重啟zabbix-agent服務:
systemctl restart zabbix-agent
接著去服務端驗證一下這個自定義的腳本有沒有被識別,命令如下:
zabbix_get -s 192.168.77.128-p 10050 -k ‘my.estab.count‘
能得到數字證明沒問題,如果腳本有問題的話,是不會得到數字的。
完成以上的操作後,第二步就是到zabbix監控中心(瀏覽器)配置增加監控項目:
剩下的我都選擇了默認,你可以根據自己的需求選擇。
添加完監控項後,給這個監控項做一個圖形:
預覽看看有沒有問題:
創建觸發器,配置當並發數量到達某一個數量時就會告警:
我設置的規則如下,這個規則表示:並發鏈接數量大於200就告警:
然後其他的默認即可。
19.13/19.14配置郵件告警
在Zabbix服務端中可以設置郵件告警,當被監控的主機宕機了或者達到觸發器預設值時,就會自動發送報警郵件到指定的一個第三方郵箱,這個郵箱可以使用163或者QQ郵箱(因為我只嘗試過這兩個郵箱),我這裏使用163郵箱作為演示。
1. 登錄郵箱,設置開啟POP3、IMAP、SMTP服務,因為要在服務器上調用第三方的郵箱,需要這個郵箱開啟這些服務,登錄後點擊設置可以看到這些服務的選項:
設置服務,第一次設置的話,會需要短信驗證,然後還會要求你設置一個密碼:
進行短信驗證:
設置密碼:
完成:
這個設置的密碼也就是授權碼要記住,發送郵箱的時候需要這個密碼。
到監控中心,創建一個報警媒介類型:
{ALERT.SENDTO} 參數定義第三方的郵件地址
{ALERT.SUBJECT} 參數定義主題
{ALERT.MESSAGE} 參數定義郵件內容
在服務端上查看zabbix配置文件,看看定義的腳本文件存放的路徑是什麽:
vim /etc/zabbix/zabbix_server.conf
在文件中搜索AlertScriptsPath:
5. 得知腳本文件的存放路徑後,在該路徑下創建報警腳本mail.py:
vim /usr/lib/zabbix/alertscripts/mail.py
腳本內容從以下網址可獲得:
https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D22Z/mail.py
修改以下幾處內容:
gserver = ‘smtp.163.com‘ (因為我使用的是163郵箱)
6. 更改腳本文件的權限:
chmod 755 /usr/lib/zabbix/alertscripts/mail.py
測試一下這個腳本:
cd /usr/lib/zabbix/alertscripts
然後到你的郵箱裏看看是否有收到這個郵件,能正常收到就沒問題:
如果沒有收到郵件的話,就得檢查檢查你的腳本是否有問題。
以上操作完成後,需要到監控中心創建一個用戶用來發送郵件:
然後再添加報警媒介:
接著就是到用戶群組中修改權限:
如果你這一步權限沒有修改對的話,你是收不到告警郵件的。
修改完群組權限後,到你創建的用戶的權限界面裏,看看是否已經擁有所有組的讀寫權限:
用戶配置完後,需要去創建一個動作,動作就是觸發器觸發後會發生的行為動作,這個動作就是發郵件的動作:
然後操作界面裏還需要配置一下默認信息和操作:
默認信息的內容如下:
HOST:{HOST.NAME} {HOST.IP}
TIME:{EVENT.DATE} {EVENT.TIME}
LEVEL:{TRIGGER.SEVERITY}
NAME:{TRIGGER.NAME}
messages:{ITEM.NAME}:{ITEM.VALUE}
ID:{EVENT.ID}
恢復操作界面裏的默認信息也需要重新配置,配置內容如下:
HOST:{HOST.NAME} {HOST.IP}
TIME:{EVENT.DATE} {EVENT.TIME}
LEVEL:{TRIGGER.SEVERITY}
NAME:{TRIGGER.NAME}
messages:{ITEM.NAME}:{ITEM.VALUE}
ID:{EVENT.ID}
完成:
19.15測試告警
到目前為止,郵件告警就配置好了,接下來就是測試一下這個告警是否正常,首先創建一個自定義的觸發器:
條件:
然後到監控中心的儀表板中,等一會就會發現出現警告信息:
如圖,這是我們剛剛創建的觸發器告的警,並且動作顯示的是完成,代表郵件已經發送了,如果顯示的是失敗的話,那就是郵件發送失敗了,發送失敗的情況一般有以下幾個原因:
媒介類型
動作的默認信息
操作和恢復操作的默認信息
腳本文件不夠權限
沒有給用戶添加媒介
郵箱裏的服務沒有打開
觸發器
網絡問題
一般動作顯示失敗的話都會有一個具體的提示,根據提示排查錯誤快一些。
我這裏是發送成功的,那麽到郵箱裏看看郵件內容:
因為監控項的名稱是中文的,所以顯示的會是亂碼。
關於設置主動或被動模式:
在監控項裏設置,默認是被動,有個主動式字樣的就是主動模式。
19.16不發送郵件的問題處理
檢查發送郵件的腳本,先在命令行裏測試一下是否能正常收到。
檢查腳本文件的權限,確保能被zabbix用戶調用
檢查報警媒介中的配置
檢查用戶中是否有添加報警媒介,並且要具有讀寫權限
檢查動作、操作、恢復操作中的配置
如果從頭到尾都仔細檢查了,實在是無法收到郵件的話,那就是你搭建的zabbix有問題了,重新恢復快照,再安裝一遍。
本文出自 “zero” 博客,請務必保留此出處http://zero01.blog.51cto.com/12831981/1983610
添加自定義監控項目,配置郵件告警,測試告警,不發送郵件的問題處理