本项目的目的是构建一个能实现微信告警的zabbix监控系统,方便的监控整个NGINX集群,同时能批量的去部署和管理整个集群。
zabbix服务端(192.168.2.138)安装好zabbixserver,nginx端安装好zabbixagent(192.168.2.58),配置好Nginx负载均衡集群,并打开状态统计。
nginx端编写监控脚本,取到nginx的状态。
服务端web添加监控项,出图。
注册企业微信,配置好微信接口。
zabbix服务端添加接口推送脚本,测试接口正常。
在web端配置报警媒介,群组和用户,添加相关触发器和动作。
nginx关停服务,测试是否能通过微信告警。
在测试接收消息过程中,返回值一直是参数{ALTER.MESSAGE},排查脚本问题,版本问题,最后发现是参数{ALERT.MESSAGE},所以打字一定要细心,认真。同时对监控也有了一定的认识,运维人员不可能7*24小时盯着zabbix看,所以做到及时告警是非常必要的,对之前的高可用web集群项目叶可以进行完善。
zabbix-agent客户端nginx配置监控
nginx打开状态统计功能
nginx配置增加stub_status模块
stub_status;}
测试状态统计功能是否打开
nginx端(zabbix客户端)编写监控脚本
cd/etc/zabbix/zabbix_agentd.d
#在zabbix_agentd.d目录下编写监控脚本
vimzabbix-nginx_status.sh
#!/bin/bash
curlhttp://192.168.2.58:80/wyt_status2>/dev/null|awk'/Active/{print$NF}'
curlhttp://192.168.2.58:80/wyt_status2>/dev/null|awk'NR==3{print$1}'
curlhttp://192.168.2.58:80/wyt_status2>/dev/null|awk'NR==3{print$2}'
curlhttp://192.168.2.58:80/wyt_status2>/dev/null|awk'NR==3{print$3}'
curlhttp://192.168.2.58:80/wyt_status2>/dev/null|awk'NR==4{print$2}'
curlhttp://192.168.2.58:80/wyt_status2>/dev/null|awk'NR==4{print$4}'
curlhttp://192.168.2.58:80/wyt_status2>/dev/null|awk'NR==4{print$NF}'
#通过查询进程PID值,测试nginx存活状态
esac
vimuserparameter_nginx.conf
#在zabbix_agentd.d目录下自定义参数配置文件
UserParameter=nginx.status[*],/etc/zabbix/zabbix_agentd.d/zabbix-nginx_status.sh$1
chmod+xzabbix-nginx_status.sh
servicezabbix-agentrestart
zabbix_get-knginx.status[ping]-s192.168.2.58
#去服务端测试是否返回参数1
zabbix-server-web配置监控
先创建nginx主机master-nginx

除nginx-ping,nginx-accepts外,需要添加所有状态监控项,只有nginx-ping创建触发器,这里不一一举例。
添加好所有监控项,下一步制图,图中包含所有监控项
因为我们监控实际上就是在一直请求,所以看到nginx-requests在不断增加。
注册成功之后创建一个运维部门
创建成功后,查看信息记住自己的AgentId和Secret
微信扫码企业微信插件就可以在微信接收消息
zabbix-server接口脚本配置告警
cd/usr/lib/zabbix/alertscripts
vimweixin.sh
#!/bin/bash
CorpID="wwaa6fb8ff1b81aa77"#你的企业id
Secret="Cxyd*****"#你的SecretID
GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CorpID&corpsecret=$Secret"
Token=$(/usr/bin/curl-s-G$GURL|awk-F":'{print$4}'|awk-F"'{print$2}')
PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Token"
localintagentid=1000002#你的agentdid
localUserID="@all"#发送的用户ID
localMsg=$(echo"$@"|cut-d""-f3-)#发送给所有人
printf' "touser":"'"$UserID""",
printf' "toparty":"'"$PartyID""",
printf' "msgtype":"text",
printf' "agentid":"'"$agentid""",
printf' "content":"'"$Msg"""
/usr/bin/curl--data-ascii"$(body$1$2$3)"$PURL
测试脚本能否正常接收消息
然后我们回到zabbix-server-web配置
zabbix-server-web配置告警
管理->报警媒介类型->创建媒体类型
故障{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}
zabbix-agent关停nginx服务测试
新建一个测试群聊,在群里添加机器人,记住webhook地址
除了使用Shell脚本配置接口之外,还可以使用Python脚本
headers={'Content-Type':'application/json;charset=utf-8'}
api_url="https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=****”
printrequests.post(api_url,json.dumps(json_text),headers=headers).content
pythonweixin.pytest
web配置同上
以上就是Zabbix自定义脚本监控nginx及微信告警的方法的详细内容,更多请关注主机测评网其它相关文章!
本文来源:国外服务器--zabbix监控nginx模板
本文地址:https://www.idcbaba.com/guowai/2514.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 1919100645@qq.com 举报,一经查实,本站将立刻删除。



