一、配置自定義監控項目: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:不發郵件狀況處理: