在客戶端寫腳本而後在服務端檢測腳本。前端
需求:監控某臺web的80端口鏈接數,並出圖python
兩步:1)zabbix監控中心建立監控項目;2)針對該監控項目以圖形展示linux
對於第一步,須要到客戶端定義腳本git
vim /usr/local/sbin/estab.sh //內容以下web
#!/bin/bash ##獲取80端口併發鏈接數 netstat -ant |grep ':80 ' |grep -c 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-agentvim
首先須要開啓服務,第一次會進行手機驗證,而後輸入受權碼。 受權碼=發郵件警告使用的密碼bash
而後到zabbix前端新建立一個報警。併發
{ALERT.SENDTO} = 郵件接收者 {ALERT.SUBJECT} = 郵件主題 {ALERT.MESSAGE} = 郵件內容
在服務端上面配置文件裏面找到路徑:vi /etc/zabbix/zabbix_server.conf測試
進入配置文件之後而後搜索 AlertScriptsPath 找到/ usr/lib/zabbix/alertscripts 目錄spa
進入到 /usr/lib/zabbix/alertscripts/ 裏面,建立一個在zabbix上定義過名稱的腳本
而後在建立的裏面裏面寫入代碼。
https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D22Z/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.qq.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('1234567@qq.com','aaaaaaaaaa','1234567@qq.com',to,subject,content) if __name__ == "__main__": main() #####腳本使用說明###### #1. 首先定義好腳本中的郵箱帳號和密碼 #2. 腳本執行命令爲:python mail.py 目標郵箱 "郵件主題" "郵件內容"
代碼寫入完之後還須要修改一下里面的:使用郵箱,郵箱帳號,郵箱受權碼 等等。
郵箱都填寫ok之後,咱們還須要給腳本一個執行的權限,而後就能夠測試腳本了。
測試腳本命令:python mail.py 郵件接收者 「郵件的主題」 「郵件的內容」
上面所有配置完之後,第二步咱們就須要去給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}
配置恢復操做
恢復操做裏面的默認信息:
HOST:{HOST.NAME} {HOST.IP} TIME:{EVENT.DATE} {EVENT.TIME} LEVEL:{TRIGGER.SEVERITY} NAME:{TRIGGER.NAME} messages:{ITEM.NAME}:{ITEM.VALUE} ID:{EVENT.ID}
最後添加完成之後能夠看到狀態是直接啓用的。
說明:故意把監控項目更改爲有問題的, 設置觸發器,讓它告警.
步驟:配置-->主機--> root -02 選擇觸發器 --> 建立觸發器 --> 名稱(自定義)- 系統負載 --> 添加
-->最新的T值<N --> N 設置爲1 ; 當小於1的時候就告警,正常狀況下負載是0 ,那麼就會立刻告警
點擊Zabbix -->查看最近20個問題
能夠看到動做完成1,說明能夠正常發送郵件
#查看郵件,是能夠收到告警郵件的
#本來負載值更改成1了,就會立刻告警,那麼如今把負載值更回正常的,也會收到ok的郵件
如果設置回正常,仍然收不到郵件,那麼檢查恢復操做.
1.檢查發郵件的腳本
[root@aminglinux-01 alertscripts]# python mail.py anna_wqd@163.com "test" "This is test jiaoben" [root@aminglinux-01 alertscripts]# ls -lt mail.py -rwxr-xr-x. 1 root root 1163 9月 11 12:42 mail.py
能夠收到郵件,說明腳本ok
2. 檢測Zabbix 監控中心 -- 用戶設置
檢查報警媒,查看收件人郵箱地址是否有誤
說明:點擊管理 -->用戶 -->報警媒介;
檢查用戶權限是不是讀寫,若不是將沒法收到告警郵件
3.檢查Zabbix 監控中心 --動做
檢查動做--操做是否有選擇發送到用戶(Anna)
說明:點擊配置-->動做-->發郵件-->條件