68:添加自定義監控項目 | 配置郵件告警及測試 | 不發郵件時問題處理

一、配置自定義監控項目python

zabbix的監控項目是在模板裏配置體現的,有時候會有一些個性化的需求,某一個業務的數據,有一些運營想知道網站的註冊量,會員活躍度,這些數據是能夠經過數據庫的表的數字體現出來的,可是zabbix是不提供那麼詳細的監控項目的,遇到這種狀況,就須要經過寫腳本把數字展示出來,經過一個監控項目來造成圖表,而後來分析每一天的用戶量是多少呢:linux

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

解決方法:兩步:web

1)、zabbix監控中心建立監控項目:數據庫

2)、針對該監控項目以圖形體現:vim

首先須要在客戶端(zabbix客戶端)添加一個腳本:   #獲取80端口的併發鏈接數瀏覽器

[root@localhost_01 ~]# vim /usr/local/sbin/estab.sh
#!/bin/bash
netstat -ant |grep ':80 ' |grep -c ESTABLISHED

更改能讓zabbix用戶執行的權限:賦予腳本執行權限bash

[root@localhost_01 ~]# chmod 755 /usr/local/sbin/estab.sh

編寫zabbix客戶端的配置:    /etc/zabbix/zabbix-agentd.conf       定義腳本功能和腳本的位置:併發

[root@localhost_01 ~]# vim /etc/zabbix/zabbix_agentd.conf 
[root@localhost_01 ~]# cat !$ |grep -v ^# |grep -v ^$
UnsafeUserParameters=1         #容許使用自定義腳本:開啓腳本功能:

UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh 
#表示自定義監控項的key爲my.estab.count(後面須要在web頁面設置時key值要用到),後面的[*]裏面寫腳本的參數,若是沒有參數則能夠省略,若是有參數寫入到 [ ] 裏面,用逗號分隔,腳本爲/usr/local/sbin/estab.sh

重啓zabbix客戶端服務:       systemctl      restart    zabbix-agent測試

[root@localhost_01 ~]# systemctl restart zabbix-agent

1:接下來到zabbix服務端驗證:驗證是否識別到這個腳本:    注意:腳本須要執行權限和防火牆須要放行的端口:

zabbix_get -s 192.168.149.130 -p 10050 -k 'my.estab.count'

[root@localhost_02 ~]# zabbix_get -s 192.168.149.130 -p 10050 -k 'my.estab.count'
0

註釋: -s:指定客戶端IP地址:     -p:指定端口號(不見p,默認是10050)       -k:表示鍵值:

註釋:下面須要在服務端監控中心操做:

而後在zabbix監控中心(web瀏覽器)配置:

zabbix頁面 -----> 配置  --->  主機  --->  監控項 ---> 建立監控項:

名稱:併發鏈接數(可自定義):

類型:選擇zabbix客戶端:
鍵值:填寫my.estab.count(可自定義):

單位:保持默認:

歷史數據保留時長(單位天):默認保持90天:

趨勢數據存儲週期(單位天):圖形化界面下那個圖:

應用集:能夠不選擇,由於沒有應用集:

 

 

 

 

2:有了數據下面就能夠添加圖形了:    配置 -----> 主機 ----->  圖形 -----> 建立圖形

名稱:併發鏈接數,而後是添加監控項,選擇併發鏈接數點擊添加

查看新建立的圖形:點擊併發鏈接數 -----> 點擊預覽:

點擊預覽:能夠查看的建立的圖形:

註釋:網站訪問量很大,那麼每隔30秒就能夠看到一個數字,時間長了,就可查看到網站訪問量的趨勢:

3:建立觸發器:  點擊  觸發器 -----> 建立觸發器 -----> 名稱(併發鏈接數)   -----> 當 報警達200以上,作警告級別:

觸發器裏關聯監控項:

註釋:服務端上獲取數值(經過在客戶端編寫的腳本實現),給予服務端訪問腳本的權限,在zabbix監控中心添加對應的監控項目(輸入鍵值),便可,其他就是建立圖形等:

二、配置郵件告警

使用163或者qq郵箱發告警郵件:

首先登錄163郵箱,設置並開啓pop3  IMAP  SMTP服務:

開啓並記錄受權碼

添加報警媒介:

而後到監控中心設置郵件告警: 管理 -----> 報警媒介類型 -----> 建立媒介類型:

添加以下:{ALERT.SENDTO} ,{ALERT.SUBJECT},{ALERT.MESSAGE}

註釋如上:    手機人:                  郵件主題                        郵件內容

建立報警腳本mail.py:   /usr/lib/zabbix/alertscripts/mail.py:腳本內容:

賦予腳本權限:chmod 755 /usr/lib/zabbix/alertscripts/mail.py              #很重要,可能會由於權限而沒法收取郵件:

[root@localhost_02 ~]# vim /usr/lib/zabbix/alertscripts/mail.py 
[root@localhost_02 ~]# cat !$
cat /usr/lib/zabbix/alertscripts/mail.py
#!/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 = MIMEText(content,'plan','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('yzhm188@163.com','受權碼','yzhm188@163.com',to,subject,content)

if __name__ == "__main__":
    main()
    
#####腳本使用說明######
#1. 首先定義好腳本中的郵箱帳號和密碼
#2. 腳本執行命令爲:python mail.py 目標郵箱 "郵件主題" "郵件內容"
[root@localhost_02 ~]# chmod 755 /usr/lib/zabbix/alertscripts/mail.py

測試後,能夠正常收到郵件的:

註釋:如果在郵件裏面寫中文,到郵箱裏面會顯示亂碼,這是由於在zabbix使用的是utf-8的字符集,而在郵箱裏使用的是GBK字符集,因此會亂碼

3:建立一個接受告警郵件的用戶(用戶是用來接受郵件的):用戶組能夠如今建立,也能夠用以前的用戶組:

 zabbix頁面  ----->   用戶 ----->  建立用戶

註釋:本次使用的以前的用戶組: zabbix   administartors管理員組:設置密碼:nihao123!

3:在剛剛建立的用戶設置郵箱,      管理 ----->  用戶 -----> 報警媒介 ----->  添加:

5:還須要注意用戶的權限,若是沒有權限,郵件仍是沒法發送的,到用戶組去修改(管理 -----> 用戶羣組)

默認權限是無:須要去修改羣組,給予權限:(用戶 -----> 用戶羣組)

6:修改用戶羣組權限:用戶 -----> 用戶羣組 -----> 權限:   選擇讀寫:

7:設置動做:(配置好了觸發器後,觸發以後須要作什麼),    配置 -----> 動做 ----->  建立動做

名稱:中英文均可以,自定義:

條件:維護狀態 非在維護  表示維護狀態的機器不發郵件:

新的觸發條件:添加:當觸發器示警度(也就是信息,警告,通常嚴重...)大於等於未分類(未分類 表示 全部狀態,都會發信息)

8:配置 -----> 動做 ----->  操做:    表示發給誰呀:何時發:

默認信息:直接刪除原有的,拷貝下面的內容:

維護間暫停操做:選擇打勾(若不打對勾也能夠,由於在動做的條件裏定義了):

默認信息定義當發生報警時,zabbix會向你的郵箱發送什麼內容:

HOST:{HOST.NAME} {HOST.IP}:定義主機名

TIME:{EVENT.DATE} {EVENT.TIME}:定義事件發生時間 

LEVEL:{TRIGGER.SEVERITY}:定義示警度 

NAME:{TRIGGER.NAME}:定義哪個觸發器發出的報警

messages:{ITEM.NAME}:{ITEM.VALUE}:發出告警會出現什麼狀態碼

ID:{EVENT.ID}:發生事件的id

9:配置 -----> 動做 -----> 恢復操做:

默認信息:刪除原有的信息,負責下面的信息:   二者是相同的:

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

TIME:{EVENT.DATE} {EVENT.TIME}

LEVEL:{TRIGGER.SEVERITY}

NAME:{TRIGGER.NAME}

messages:{ITEM.NAME}:{ITEM.VALUE}

ID:{EVENT.ID}

10:最後的動做哪裏的狀態是已啓用:

11:測試告警:建立觸發器來實現告警:

配置 -----> 主機 -----> 觸發器 -----> 建立觸發器:

名稱:系統負載:                      嚴重性:警告:              表達式內容以下:

11:看到信息以下:回到儀表盤頁面,等待一下子便可:

註釋:查看郵箱,會看到告警郵件已發送,這表示郵件告警測試成功了:

註釋:想要解決這個問題,只要將觸發器 系統負載條件數值調整 >1 便可,再來查看監控中心,就會發現問題消失了,而且會給郵箱發送 OK 的郵件:

3:不發郵件狀況處理:

相關文章
相關標籤/搜索