1. 程式人生 > >添加自定義監控項目,配置郵件告警,測試告警,不發送郵件的問題處理

添加自定義監控項目,配置郵件告警,測試告警,不發送郵件的問題處理

添加自定義監控項目 配置郵件告警 測試告警 zabbix 不發送郵件的問題處理

筆記內容:

  • 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服務,因為要在服務器上調用第三方的郵箱,需要這個郵箱開啟這些服務,登錄後點擊設置可以看到這些服務的選項:

技術分享圖片

  1. 設置服務,第一次設置的話,會需要短信驗證,然後還會要求你設置一個密碼:

技術分享圖片

技術分享圖片


進行短信驗證:

技術分享圖片


設置密碼:

技術分享圖片


完成:

技術分享圖片

這個設置的密碼也就是授權碼要記住,發送郵箱的時候需要這個密碼。


  1. 到監控中心,創建一個報警媒介類型:

技術分享圖片

{ALERT.SENDTO} 參數定義第三方的郵件地址

{ALERT.SUBJECT} 參數定義主題

{ALERT.MESSAGE} 參數定義郵件內容


  1. 在服務端上查看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


  1. 測試一下這個腳本:

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測試告警

到目前為止,郵件告警就配置好了,接下來就是測試一下這個告警是否正常,首先創建一個自定義的觸發器:

條件:

技術分享圖片

技術分享圖片


然後到監控中心的儀表板中,等一會就會發現出現警告信息:

技術分享圖片

如圖,這是我們剛剛創建的觸發器告的警,並且動作顯示的是完成,代表郵件已經發送了,如果顯示的是失敗的話,那就是郵件發送失敗了,發送失敗的情況一般有以下幾個原因:

  1. 媒介類型

  2. 動作的默認信息

  3. 操作和恢復操作的默認信息

  4. 腳本文件不夠權限

  5. 沒有給用戶添加媒介

  6. 郵箱裏的服務沒有打開

  7. 觸發器

  8. 網絡問題


一般動作顯示失敗的話都會有一個具體的提示,根據提示排查錯誤快一些。


我這裏是發送成功的,那麽到郵箱裏看看郵件內容:

技術分享圖片

因為監控項的名稱是中文的,所以顯示的會是亂碼。


關於設置主動或被動模式:

技術分享圖片

在監控項裏設置,默認是被動,有個主動式字樣的就是主動模式。






19.16不發送郵件的問題處理

  1. 檢查發送郵件的腳本,先在命令行裏測試一下是否能正常收到。

  2. 檢查腳本文件的權限,確保能被zabbix用戶調用

  3. 檢查報警媒介中的配置

  4. 檢查用戶中是否有添加報警媒介,並且要具有讀寫權限

  5. 檢查動作、操作、恢復操作中的配置


如果從頭到尾都仔細檢查了,實在是無法收到郵件的話,那就是你搭建的zabbix有問題了,重新恢復快照,再安裝一遍。








本文出自 “zero” 博客,請務必保留此出處http://zero01.blog.51cto.com/12831981/1983610

添加自定義監控項目,配置郵件告警,測試告警,不發送郵件的問題處理