zabbix的nginx监控+邮件报警
2024-09-06 07:22:32
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}
最新文章
- [.NET] C# 知识回顾 - Event 事件
- java 开发业务逻辑的思考(1)- 通知短信发送
- Java8函数式编程
- IT 相关期刊
- 【转】C#环形队列
- udp之nat穿透的困惑
- 通往WinDbg的捷径
- Launchpad灰色图标怎么删除?重置Launchpad教程
- 2、微信小程序之弹幕的实现(无后台)
- Activiti源代码分析
- linux_Nginx优化
- Oracle之数组
- 通信导论-IP数据网络基础(3)
- pandas数据清洗策略2
- mybatis 相关
- 【NOI2005】 聪聪可可
- 华为荣耀V8这个7.0的系统的root
- MyTalkStuffHomeIcon-2
- c语言静态断言
- C#获取AD域中计算机和用户的信息
热门文章
- 微服务简介和SOA比较
- Hibernate对象的状态分类
- Kibana 创建索引 POST 403 (forbidden) on create index
- delete file SVN commit error has no URL
- etcd安全集群三节点扩容至四个节点
- JavaScript(1)——编程真善美
- Redis客户端信息的存取
- configparser模块 subprocess 模块,xlrd 模块(表格处理)
- (转) pip Fatal error in launcher: Unable to create process using
- superset连接sqlite频繁断开