天天看點

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

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

一、添加自定義監控項目

需求:監控某台web的80端口連接配接數,并出圖

思路:先寫一個腳本,能擷取到資料,因為成圖需要資料,再給這個腳本執行的權限,然後再用zabbix_get指令使服務端可以獲得這些資料,再到服務端建立監控項目,再建立圖形,有需要報警的再設定觸發器。

兩步:1)zabbix監控中心建立監控項目;2)針對該監控項目以圖形展現

對于第一步,需要到用戶端定義腳本,腳本名字位置都可以自定義

# vim /usr/local/sbin/estab.sh //内容如下

#!/bin/bash

##擷取80端口并發連接配接數

netstat -ant |grep ':80 ' |grep -c ESTABLISHED

//-nat:顯示網絡連結的狀态

檢視80端口下ESTABLISHED狀态的連結有多少個。

# chmod 755 /usr/local/sbin/estab.sh

用戶端上編輯配置檔案

# 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.93.131 -p 10050 -k 'my.estab.count'

//預設10050端口,做這個驗證,一定要保持網絡的通暢,沒有防火牆規則,沒有selinux。

然後在zabbix監控中心(浏覽器)主機裡配置建立監控項

填寫名稱和鍵值即可,其他暫時不改,鍵值寫my.estab.count,鍵值是可以自定義的。

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

添加該項目後,到“監測中” “最新資料”檢視剛添加的項目是否有資料出現

有了資料就可以添加圖形了

“配置”“主機” “圖形” “建立圖形”

六十六、添加自定義監控項目、配置郵件告警、測試告警、不發郵件的問題處理
再建立一個觸發器
六十六、添加自定義監控項目、配置郵件告警、測試告警、不發郵件的問題處理
最大連接配接數超過200時報警
六十六、添加自定義監控項目、配置郵件告警、測試告警、不發郵件的問題處理

二、配置郵件告警

使用163或者QQ郵箱發告警郵件

首先登入你的163郵箱,設定開啟POP3、IMAP、SMTP服務

六十六、添加自定義監控項目、配置郵件告警、測試告警、不發郵件的問題處理
開啟并記住授權碼,這個密碼盡量複雜,因為發郵件的密碼就是這個。
六十六、添加自定義監控項目、配置郵件告警、測試告警、不發郵件的問題處理
六十六、添加自定義監控項目、配置郵件告警、測試告警、不發郵件的問題處理

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

“管理”,“報警媒介類型”,“建立媒體類型”

名稱和腳本名稱都可以設定自定義,類型選擇腳本

這三個參數分布在py腳本的參數裡,這個順序不能變。

{ALERT.SENDTO}        收件人

{ALERT.SUBJECT}       主題

{ALERT.MESSAGE}      郵件内容

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

服務端/etc/zabbix/zabbix_server.conf的zabbix配置檔案裡搜尋Alert可以看到AlertScriptsPath=/usr/lib/zabbix/alertscripts,是以腳本需要放到這個目錄下。

建立報警腳本mail.py

# vim /usr/lib/zabbix/alertscripts/mail.py   //這是一個Python腳本,内容參考如下

#!/usr/bin/env python
#-*- coding: UTF-8 -*-
import os,sys
reload(sys)
sys.setdefaultencoding('utf8')
import getopt
import smtplib
from email.MIMEText import MIMEText
from email.MIMEMultipart import MIMEMultipart
from  subprocess import *
def sendqqmail(username,password,mailfrom,mailto,subject,content):
gserver = 'smtp.163.com'
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]
##定義163郵箱的賬号和授權碼,你需要修改成你自己的賬号和密碼(請不要把真實的使用者名和密碼放到網上公開,否則你會死的很慘)
sendqqmail('[email protected]','aaaaaaaaaa','[email protected]',to,subject,content)
if __name__ == "__main__":
main()
#####腳本使用說明######
#1. 首先定義好腳本中的郵箱賬号和密碼
#2. 腳本執行指令為:python mail.py 目标郵箱 "郵件主題" "郵件内容"      

# chmod 755 /usr/lib/zabbix/alertscripts/mail.py

測試一下這個腳本,發一封郵件到自己的郵箱,自己的郵箱能收到郵件,就代表這個發郵件的腳本寫對了。

建立一個接受告警郵件的使用者,zabbix監控中心web界面:

“管理”,“使用者”,“建立使用者”,

名字自定義,群組暫時先選Zabbix administrators組,語言中文;

“報警媒介”,類型選擇“baojing”,分類全選;

注意使用者的權限,如果沒有需要到使用者組去設定權限,

進入使用者群組,進入Zabbix administrators組,再點權限,再按照如下順序全選所有群組,再添加即可,權限将變成讀寫,使用者的權限也變成了讀寫。

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

設定動作,動作:觸發器觸發後所做的操作。

“配置”,“動作”,“建立動作”,名稱寫“sendmail”(自定義)

“新的觸發條件”,A維護狀态 非在 維護,B觸發器示警度>=未分類

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

“操作”頁面,預設資訊,内容如下

HOST:{HOST.NAME} {HOST.IP}                  Hostname

TIME:{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}

點選“新的”,“操作”,選擇發送的使用者為剛建立的使用者,僅送到選擇“baojing”

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

這個動作最後的狀态試已啟用

三、測試告警

測試1:

到自己的主機的觸發器裡建立一個自定義的觸發器

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

添加一個監控項:

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

最後添加這個觸發器即可。

    然後到儀表闆檢視等待,這個動作啟用需要一點點時間,等一會看會不會成功:

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

這個動作的狀态一定要注意看,如果失敗,可以點選看一下是什麼原因,如果是空的,就可能是腳本沒有執行的權限,或者動作的條件沒有定義好。動作成功,163郵箱就立馬收到了郵件了。

測試2:

把觸發器裡的表達式,将<1改為>1,再将這個監控項的資料更新間隔改為10秒,過了10秒以後,儀表闆的告警(最近20個問題)便沒有了。

“監測中”,“問題”,最下方可以看到系統負載的問題狀态為已解決,還發送了兩封郵件。

總結:不發郵件檢查:

1.檢查腳本,用python指令發郵件試一試,成功代表腳本沒問題。

2.檢查使用者,報警媒介的收件人要寫對,權限一定要是讀寫。

3.檢查動作,條件,操作。

發送來的郵件,都是ID成對出現,就說明這是一對ID事件。

繼續閱讀