提示:開始本節內容以前有必要先作好快照!!!python
該配置的用途是監控模板中沒有的監控項目。web
需求:監控某臺web的80端口鏈接數,並出圖。vim
步驟:
1) zabbix監控中心建立監控項目
2) 針對該監控項目以圖形展示瀏覽器
統計80端口鏈接數量bash
能夠去查看ESTABLISHED的訪問量(established)服務器
[root@cham002 ~]# netstat -ant |grep ':80 ' |grep -c ESTABLISHED 1 [root@cham002 ~]# netstat -ant |grep ':80 ' |grep -c ESTABLISHED 1 [root@cham002 ~]# netstat -ant |grep ':80 ' |grep ESTAB tcp6 0 0 192.168.230.135:80 192.168.230.1:62973 ESTABLISHED
客戶端:145併發
[root@test ~]# vim /usr/local/sbin/estab.sh #!/bin/bash ##獲取80端口併發鏈接數 netstat -ant |grep ':80 ' |grep -c ESTABLISHED :wq [root@test ~]# chmod 755 !$ chmod 755 /usr/local/sbin/estab.sh [root@test ~]# ps aux |grep zabbix zabbix 54434 0.0 0.1 80592 1284 ? S 08:12 0:00 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbi_agentd.conf zabbix 54435 0.0 0.1 80592 1360 ? S 08:12 0:00 /usr/sbin/zabbix_agentd: collector [idle 1 sec] zabbix 54436 0.0 0.2 80712 2448 ? S 08:12 0:00 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection] zabbix 54437 0.0 0.2 80716 2448 ? S 08:12 0:00 /usr/sbin/zabbix_agentd: listener #2 [waiting for connection] zabbix 54438 0.0 0.2 80716 2448 ? S 08:12 0:00 /usr/sbin/zabbix_agentd: listener #3 [waiting for connection] zabbix 54439 0.0 0.2 80720 2228 ? S 08:12 0:00 /usr/sbin/zabbix_agentd: active checks #1 [idle 1 sec] root 54652 0.0 0.0 112664 972 pts/0 R+ 08:23 0:00 grep --color=auto zabbix 配置zabbix-agent.conf: [root@test ~]# vim /etc/zabbix/zabbix_agentd.conf UnsafeUserParameters=1 #表示使用自定義腳本 UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh #自定義監控項的key(監控web端「鍵值」)爲my.estab.count,後面的[*]裏面寫的是腳本參數 #若是沒有參數則能夠省略,腳本爲/usr/local/sbin/estab.sh 重啓zabbix-agent服務: [root@test ~]# systemctl restart zabbix-agent [root@test ~]#
客戶端配置完成後在 服務端使用zabbix自帶命令測試該腳本是否生效:tcp
(防火牆要麼關閉,要麼添加規則)測試
[root@cham002 ~]# zabbix_get -s 192.168.230.145 -p 10050 -k 'my.estab.count' 0
如上所示,說明客戶端腳本配置成功!spa
瀏覽器訪問服務端zabbix主頁:192.168.230.135/zabbix
進入客戶機cham-002「監控項配置」頁面:
1「建立監控項」:
說明: 在此設置監控項名稱和鍵值,其餘參數保持默認(研究透徹以後,全部參數能夠根據我的需求進行更改)。
2「建立圖形」:
「添加」添加完成後,爲該監控項配置「圖形」——「建立圖形」:
注意: 在此設定圖形名稱後,須要先爲該圖形「添加」(該添加爲參數「監控項」下的添加)監控項,而後再點擊最下面的「添加」將該圖形參數添加到zabbix圖形監控參數中!!!
3建立觸發器:
所謂觸發器即設定觸發警報的規則!
「觸發器」——「建立觸發器」:
點擊「添加」,設定該觸發器所要監控的對象及觸發規則:
即,當併發鏈接數最新值T大於N(自定義該值,在此N=2)時觸發該警報。
使用163郵箱或QQ郵箱發送告警郵件。
登陸QQ.或者163郵箱,開啓POP三、IMAP、SMTP服務:
說明: 首次開啓該服務須要進行用戶認證,根據提示信息進行認證並設定「客戶端受權密碼」(用於登陸第三方郵件客戶端的專用密碼),記錄該密碼。
郵箱相關服務配置完成後到監控中心進行報警配置。
「管理」——「報警媒介類型」——「建立媒介類型」:
說明: 設定媒介類型名稱、類型、腳本名稱(與服務器中腳本名稱保持一致)、添加腳本參數(該參數爲zabbix內置參數,以後會配置在mail.py腳本中),上述內容配置完後再點「添加」(最下面藍色)。
服務端:
[root@cham002 ~]# vim /etc/zabbix/zabbix_server.conf AlertScriptsPath=/usr/lib/zabbix/alertscripts [root@cham002 alertscripts]# vim 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['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('xxxx@163.com','xxxxxxxxxxxxxxxx','xxxx@163.com',to,subject,content) if __name__ == "__main__": main() [root@cham002 alertscripts]# chmod 755 mail.py 測試可否正常發送郵件: [root@cham002 alertscripts]# python mail.py xxxx@163.com "test" "1212121"
發送成功!至此說明發郵件的腳本沒問題!!!
在監控中心(web端)建立一個接收告警郵件的「用戶」,在建立用戶前須要先建立一個「用戶組」,在此使用一個已經存在的用戶組。「管理」——「用戶」——「建立用戶」:
打開用戶adai——報警媒介——添加報警媒介——更新:
配置用戶權限:
須要到用戶所在的「用戶羣組」更改用戶的權限:
選擇後權限後點擊「添加」——「更新」,若是此處設置錯誤,以後將沒法收到報警郵件。
設置觸發器被觸發後所要執行的的操做!
設置動做,「配置」,「動做」,「建立動做」,名稱寫(自定義),「操做」頁面,內容以下
•「新的觸發條件」,A維護狀態 非在 維護,B觸發器示警度>=未分類
•「操做」,選擇發送的用戶爲剛建立的用戶,僅送到選擇「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} ID:{EVENT.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} ID:{EVENT.ID}
最後狀態是已起用
將監控項目改爲故障項目。
「配置」——「主機」——「觸發器」——「建立觸發器」
注: 該觸發器只用於測試,完成測試後要刪除!
選擇「添加」表達式設定觸發規則:
其餘參數保持默認,點藍色按鈕「添加」。配置完成後進入「儀表盤」等一分鐘左右
經屢次嘗試都顯示動做完成,可是查看郵箱並無收到任何郵件!
排查故障
[root@cham002 alertscripts]# python mail.py xxxx@163.com "test" "1212121333333333333333333" 能收到郵件 [root@cham002 alertscripts]# ls -l 總用量 4 -rwxr-xr-x 1 root root 1207 2月 5 09:35 mail.py 更改腳本權限:權限改大一點 [root@cham002 alertscripts]# chmod 777 mail.py
即,能正常發送郵件,說明腳本內容沒問題!
將操做中的默認信息更改成其自帶的配置:
恢復快照再多來幾回~····