zabbix的nginx監控+郵件報警
阿新 • • 發佈:2018-11-21
nginx監控
下載nginx的監控模板
在配置-模板-匯入,新增模板
給主機與模板連結
在zabbix客戶端編寫nginx監控指令碼
cat /etc/zabbix/zabbix_agentd.d/nginx_lzx.sh
#!/bin/bash
HOST="10.0.0.101"
PORT="80"
#檢測nginx程序是否存在
function ping {
/sbin/pidof nginx | wc -l
}
# 檢測nginx效能
function active {
/usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Active' | awk '{print $NF}'
}
function reading {
/usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Reading'| awk '{print $2}'
}
function writing {
/usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Writing'| awk '{print $4}'
}
function waiting {
/usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Waiting'| awk '{print $6}'
}
function accepts {
/usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $1}'
}
function handled {
/usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $2}'
}
function requests {
/usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $3}'
}
#執行function
$1
修改客戶端zabbix配置檔案,重啟伺服器
vi /etc/zabbix/zabbix_agentd.conf
UnsafeUserParameters=1
UserParameter=nginx.status[*],/etc/zabbix/zabbix_agentd.d/nginx_lzx.sh $1
systemctl restart zabbix-agent
檢視nginx的監控是否開啟
curl -L http://10.0.0.101/nginx_status
Active connections: 1
server accepts handled requests
288 288 288
Reading: 0 Writing: 1 Waiting: 0
在服務端安裝zabbix測試工具
yum install zabbix-get.x86_64
zabbix_get -s 10.0.0.101 -p 10050 -k "nginx.status[reading]"
0 #伺服器可以獲取到客戶端的監控資料
在服務端可以看到監控引數
三/zabbix郵件告警
微信公眾號 釘釘 簡訊 郵箱
編寫指令碼
vi /usr/lib/zabbix/alertscripts/zabbix_sendmail.py
#!/usr/bin/python
#coding:utf-8
import smtplib
from email.mime.text import MIMEText
import sys
mail_host = '
smtp.163.com' # 郵箱smtp配置
mail_user = 'm15002782079' # 郵箱賬號
mail_pass = 'lizhanxun2021' # 郵箱密碼
mail_postfix = '163.com'
def send_mail(to_list,subject,content):
me = "zabbix監控告警平臺"+"<"+mail_user+"@"+mail_postfix+">"
msg = MIMEText(content, 'plain', 'utf-8')
msg['Subject'] = subject
msg['From'] = me
msg['to'] = to_list
try:
s = smtplib.SMTP()
s.connect(mail_host)
s.login(mail_user,mail_pass)
s.sendmail(me,to_list,msg.as_string())
s.close()
return True
except Exception,e:
print str(e)
return False
if __name__ == "__main__":
send_mail(sys.argv[1], sys.argv[2], sys.argv[3])
修改指令碼路徑
vi /etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/lib/zabbix/alertscripts
給指令碼執行許可權,測試指令碼,如果傳送失敗,可能是網路不通,或者163郵箱的imtp/pop3沒開
chmod +x zabbix_sendmail.py
chown -R zabbix.zabbix zabbix_sendmail.py
python zabbix_sendmail.py
457214467 @qq.com test test
檢視當前被監控的主機
將nginx監控項裡的監控時間間隔改為1
在admin使用者中新增報警媒介,郵件報警
zabbix伺服器報警媒介型別
增加三個引數
{ALERT.SENDTO} 收件人地址
{ALERT.SUBJECT} 主題
{ALERT.MESSAGE} 詳細內容
配置報警動作,建立新的觸發動作
配置操作
故障{TRIGGER.STATUS},伺服器:{HOSTNAME1}發生: {TRIGGER.NAME}故障!
告警主機:{HOSTNAME1}
告警時間:{EVENT.DATE} {EVENT.TIME}
告警等級:{TRIGGER.SEVERITY}
告警資訊: {TRIGGER.NAME}
告警專案:{TRIGGER.KEY1}
問題詳情:{ITEM.NAME}:{ITEM.VALUE}
當前狀態:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
恢復操作
恢復{TRIGGER.STATUS}, 伺服器:{HOSTNAME1}: {TRIGGER.NAME}已恢復!
告警主機:{HOSTNAME1}
告警時間:{EVENT.DATE} {EVENT.TIME}
告警等級:{TRIGGER.SEVERITY}
告警資訊: {TRIGGER.NAME}
告警專案:{TRIGGER.KEY1}
問題詳情:{ITEM.NAME}:{ITEM.VALUE}
當前狀態:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}