1. 程式人生 > >19.12 添加自定義監控項目 19.13/19.14 配置郵件告警 19.15 測試告警 19.16 不發郵件的問題處理

19.12 添加自定義監控項目 19.13/19.14 配置郵件告警 19.15 測試告警 19.16 不發郵件的問題處理

safe nbsp 信息 重新 depend msg sendmail left 郵件內容

19.12 添加自定義監控項目

  • zabbix的監控項目是在模板裏面體現,但是有時候就會有些個性化的需求:某一個業務的數據,例如:運營人員想知道網站會員註冊量,會員活躍度;實際上,這些數據,都可以通過數據庫裏面的表的數字來體現,但是zabbix模板是不可能提供那麽相信的監控項目;遇到這種情況,就需要通過編程工具,寫成腳本,最後通過zabbix監控項目,形成圖表,就可以實現;

  • 自定義的監控項目

  • 需求:監控某臺web的80端口連接數,並出圖

  • 解決方案:

  1. zabbix監控中心創建監控項目;

  2. 針對該監控項目以圖形展現

  • 對於第一步,需要到客戶端定義腳本

  • vim /usr/local/sbin/estab.sh //內容如下

[root@aming-02 ~]# vim /usr/local/sbin/estab.sh
#!/bin/bash
##獲取80端口並發連接數netstat -ant |grep ‘:80 ‘ |grep -c ESTABLISHED
~                                                                                                    
                                                                                                 
:wq
  • 配置一個能夠讓zabbix用戶執行的權限,最終是zabbix用戶去執行這個腳本,如果不給zabbix用戶執行權限,最終得不到結果

[root@aming-02 ~]# vim /usr/local/sbin/estab.sh
[root@aming-02 ~]# chmod 755 /usr/local/sbin/estab.sh
[root@aming-02 ~]#
  • 客戶端上編輯配置文件 vim /etc/zabbix/zabbix_agentd.conf //增加

  • UnsafeUserParameters=1 //表示使用自定義腳本,它就好比一個開關,如果等於0就沒有辦法去使用自定義的腳本

  • UserParameter=my.estab.count[],/usr/local/sbin/estab.sh //自定義監控項的key為my.estab.count,後面的[]裏面寫腳本的參數,如果沒有參數則可以省略,腳本為/usr/local/sbin/estab.sh

  • my.estab.count 這個是zabbix監控項裏的一鍵值

# Mandatory: no
# Range: 0-1# Default:
# UnsafeUserParameters=0UnsafeUserParameters=1### Option: UserParameter
-- 插入 --               


# Mandatory: no
# Default:
# UserParameter=
UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh

####### LOADABLE MODULES #######

[root@aming-02 ~]# vim /etc/zabbix/zabbix_agentd.conf
[root@aming-02 ~]#
  • 重啟zabbix-agent服務 systemctl restart zabbix-agent

[root@aming-02 ~]# systemctl restart zabbix-agent[root@aming-02 ~]#
  • 下面來驗證一下,自定義的腳本有沒有識別

  • 首先到服務端驗證,執行命令

  • zabbix_get -s 192.168.133.130 -p 10050 -k ‘my.estab.count‘ // -p端口,-k 鍵值 web 管理頁

[root@aming-01 ~]# zabbix_get -s 192.168.202.132 -p 10050 -k ‘my.estab.count‘0[root@aming-01 ~]#
  • 下面去 zabbix監控中心(瀏覽器)配置增加監控項目(並發鏈接數) 配置–>主機–>監控項->創建監控項

  • 技術分享圖片

  • 技術分享圖片

  • 技術分享圖片

  • 技術分享圖片

  • 添加完之後還要做一個圖形,因為這是我們的需求

  • 技術分享圖片

  • 技術分享圖片

  • 技術分享圖片

  • 技術分享圖片

  • 技術分享圖片

  • 技術分享圖片

  • 給他做一個觸發器

  • 技術分享圖片

  • 技術分享圖片

  • 技術分享圖片

  • 技術分享圖片

  • 技術分享圖片

  • 技術分享圖片

  • 技術分享圖片

19.13 配置郵件告警(上)

  • 使用163發告警郵件

  • 首先登錄你的163郵箱,設置開啟POP3、IMAP、SMTP服務

  • 技術分享圖片

  • 技術分享圖片

  • 技術分享圖片

  • 設置授權碼,授權碼為cc293016

  • 技術分享圖片

  • 開啟並記錄授權碼(需要牢記)

  • 然後到監控中心設置郵件告警

  • “管理”,“報警媒介類型”,“創建媒體類型” {ALERT.SENDTO}收件人,{ALERT.SUBJECT}主題,{ALERT.MESSAGE}郵件內容 //這三個東西分布在py腳本參數下

  • 技術分享圖片

  • 技術分享圖片

  • 技術分享圖片

  • 技術分享圖片

  • 接下來去定義mail.py腳本了, 定義腳本報警 在配置文件定義 在服務端上定義

  • vim /etc/zabbix/zabbix_server.conf,搜索Alert,找到 AlertScriptsPath=/usr/lib/zabbix/alertscripts //這就是報警腳本所在路徑

[root@aming-01 ~]# vim /etc/zabbix/zabbix_server.conf### Option: UnreachableDelay## Mandatory: no# Range: 1-3600# Default:# UnreachableDelay=15### Option: AlertScriptsPath#       Full path to location of custom alert scripts.#       Default depends on compilation options.## Mandatory: no# Default:# AlertScriptsPath=${datadir}/zabbix/alertscriptsAlertScriptsPath=/usr/lib/zabbix/alertscripts### Option: ExternalScripts#       Full path to location of external scripts.#       Default depends on compilation options.## Mandatory: no# Default:# ExternalScripts=${datadir}/zabbix/externalscriptsExternalScripts=/usr/lib/zabbix/externalscripts### Option: FpingLocation[root@aming-01 ~]# vim /etc/zabbix/zabbix_server.conf
[root@aming-01 ~]#
  • 打開目錄裏面看下,是空的,所以我們進來目錄,創建一個mail.py

[root@aming-01 ~]# ls /usr/lib/zabbix/alertscripts[root@aming-01 ~]# [root@aming-01 ~]# cd /usr/lib/zabbix/alertscripts[root@aming-01 alertscripts]# [root@aming-01 alertscripts]# vi mail.py[root@aming-01 alertscripts]# vim mail.py#!/usr/bin/env python#-*- coding: UTF-8 -*-import os,sys
reload(sys)
sys.setdefaultencoding(‘utf8‘)import getoptimport smtplibfrom email.MIMEText import MIMETextfrom email.MIMEMultipart import MIMEMultipartfrom  subprocess import *
    gport = 25
    try:
        msg = MIMEText(unicode(content).encode(‘utf-8‘))
        msg[‘from‘] = mailfrom
        msg[‘to‘] = mailto
        msg[‘Reply-To‘] = mailfrom
        msg[‘Subject‘] = subject
        smtp = smtplib.SMTP(gserver, gport)
        smtp.set_debuglevel(0)
        smtp.ehlo()
        smtp.login(username,password)
        smtp.sendmail(mailfrom, mailto, msg.as_string())
        smtp.close()
    except Exception,err:        print "Send mail failed. Error: %s" % err
def main():    to=sys.argv[1]
    subject=sys.argv[2]
    content=sys.argv[3]##定義QQ郵箱的賬號和密碼,你需要修改成你自己的賬號和密碼(請不要把真實的用戶名和密碼放到網上公開,否則你會死的很慘)
    sendqqmail(‘[email protected]‘,‘cc293016‘,‘[email protected]‘,to,subject,content)if __name__ == "__main__":
:wq
  • 一定要記得 需要改下權限 mail.py

[root@aming-01 alertscripts]# vim mail.py[root@aming-01 alertscripts]# chmod 755 mail.py[root@aming-01 alertscripts]#
  • 測試mail.py是否能發郵件

[root@aming-01 alertscripts]# chmod 755 mail.py[root@aming-01 alertscripts]# python mail.py [email protected] "This is the first test mail" "121212121212"[root@aming-01 alertscripts]#
  • 技術分享圖片

  • 技術分享圖片

  • 已經收到了,時間也差不多

[root@aming-01 alertscripts]# date2017年 11月 18日 星期六 22:32:58 CST
[root@aming-01 alertscripts]#

19.14 配置郵件告警(下)

  • 創建一個接受告警郵件的用戶,“管理”,“用戶”,“創建用戶”

  • 1,2,3 都是為了容易分辨填寫的,按習慣就好

  • 4,選擇群組,歸屬於那個群組,這個涉及到之後的權限是否能發送郵件

  • 5,密碼,用於,登錄,接收,發送郵件 (密碼是aming)

  • 6,登錄系統時,默認顯示的界面

  • 下面創建一個用戶,這個用戶是用來接收郵件的,得給指定郵箱,沒有人,發給誰?

  • 技術分享圖片

  • 技術分享圖片

  • 技術分享圖片

  • 技術分享圖片

  • 技術分享圖片

  • 添加完了之後,忘記給它設置郵箱

  • 技術分享圖片

  • 技術分享圖片

  • 再來看看權限

  • 技術分享圖片

  • 技術分享圖片

  • 只能去用去組裏面去改權限

  • 技術分享圖片

  • 技術分享圖片

  • 技術分享圖片

  • 技術分享圖片

  • 技術分享圖片

  • 註意,這個地方如果設置不對的話,最終報警也是收不到的,郵件收不到

  • 再來看看這個用戶的權限

  • 技術分享圖片

  • 技術分享圖片

  • 這裏發現報警媒介沒有添加

  • 技術分享圖片

  • 繼續添加報警媒介

  • 技術分享圖片

  • 技術分享圖片

  • 技術分享圖片

  • 用戶配置完了,還有一個地方需要配置,就是動作

  • 創建動作

  • 技術分享圖片

  • 設置動作,“配置”,“動作”,“創建動作”,名稱寫“sendmail”(自定義),“操作”頁面,內容如下:

  • 1、“維護狀態 非在 維護” // 維護狀態機器不進行發郵件

  • 2、“觸發器示警度”>=未分類 // 即任何情況都進行發郵件

  • 技術分享圖片

  • 技術分享圖片

  • 技術分享圖片

  • 修改發郵件的模板

HOST:{HOST.NAME} {HOST.IP}     //主機,IPTIME:{EVENT.DATE}  {EVENT.TIME}   //時間LEVEL:{TRIGGER.SEVERITY}             //示警度NAME:{TRIGGER.NAME}                //那個觸發器messages:{ITEM.NAME}:{ITEM.VALUE}      //狀態ID:{EVENT.ID}         //時間ID
  • 技術分享圖片

  • 技術分享圖片

  • 技術分享圖片

  • “操作”,選擇發送的用戶為剛創建的用戶,僅送到選擇“baojing”

  • 技術分享圖片

  • 技術分享圖片

  • 再來看恢復操作

  • 技術分享圖片

  • 切換到“恢復操作”,把信息改成如下 (客戶端狀態恢復了,需要確認已經恢復狀態)

  • 修改默認信息,和剛剛操作裏面是一樣的

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

  • 下面來做實驗 ,手動調節觸發器,以實現報警,發郵件

  • 技術分享圖片

  • 檢查到上一節的aming用戶沒有設置報警媒介,給設置好

  • 技術分享圖片

  • 技術分享圖片

  • 技術分享圖片

  • 自定義配置一個觸發器,

  • 技術分享圖片

  • 技術分享圖片

  • 技術分享圖片

  • 技術分享圖片

  • 查看郵箱

  • 技術分享圖片

  • 技術分享圖片

  • 已經告警了,說明成功了,那現在我們把它改好

  • 技術分享圖片

  • 技術分享圖片

  • 刷新瀏覽器 發現沒有問題了

  • 技術分享圖片

  • 技術分享圖片

  • 技術分享圖片

  • 技術分享圖片

19.16 不發郵件的問題處理

  • 因為虛擬機,可能存在一些bug,第一次配置的時候,經常會出現zabbix發現問題,做了郵件告警,但是郵箱卻沒有收到郵件的問題;重新恢復快照以後再做一次,就又能正常發送郵件,接收郵件了 配置郵件告警總結

  • 1、到163郵箱開啟SMTP服務,並記錄授權碼,沒有開啟,腳本裏面就沒有寫的密碼

  • 2、設置郵件告警 首先設置一個報警媒介;三個參數必須填寫正確,順序也不能錯誤

  • 3、編輯郵件告警腳本 /usr/lib/zabbix/alertscripts

  • 路徑不能錯誤,必須在這個路徑下,添加一個腳本,創建好之後,記得給腳本755權限

  • 4、配置用戶 配置用戶之前,把用戶群組的權限改一下,讓組有一個讀寫權限 用戶加到指定的群組裏 報警媒介,添加自己的郵箱,自己給自己發,這個成功率會比較高

  • 5、配置動作 操作修改默認信息(發送郵件的格式),操作需要添加一個“新的”給誰發郵件;恢復操作同樣

  • 6、測試一下告警是否能成功發送郵件 人為創建一個觸發器,設置一個系統最低運行都會觸發報警的觸發器 也可以在客戶端上斷開連接(停止客戶端的zabbix服務) PS: 客戶端主動模式和被動模式,在監控項裏,選擇一個監控項打開,選擇類型是客戶端主動,客戶端;客戶端主動即為主動模式,客戶端為被動模式

19.12 添加自定義監控項目 19.13/19.14 配置郵件告警 19.15 測試告警 19.16 不發郵件的問題處理