zabbix5.0企业微信报警
- 先去申请企业微信,要以管理员的权限创建机器人,建完机器人后会有一串webhook,类似这种
1 | https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxxx509-4f42-xxxxxxxx |
- 测试这个钩子能不能用,具体使用方法可以看微信机器人文档
1 | https://work.weixin.qq.com/help?doc_id=13376 |
- 看完机器人文档后,需要写个python脚本调用这个钩子机器人,这个脚本放在/usr/lib/zabbix/alertscripts/目录下(注意服务器上要安装python3环境!)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | #!/usr/local/python3/bin/python3 # coding:utf-8 # zabbix企业微信报警 import requests, json, sys, os, datetime #微信钩子机器人地址 webhook = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxxxxxxxxxxxxxxxxxxxxxx" #zabbix传过来的三个变量 user = sys.argv[ 1 ] title = sys.argv[ 2 ] text = sys.argv[ 3 ] #每发送一次报警,就记一次日志 file = r "/var/log/zabbix/send2wechat.log" #报警的信息 data = { "msgtype" : "markdown" , "markdown" : { "content" : title + "\n" + text } } #请求这个钩子机器人 headers = { 'Content-Type' : 'application/json' } x = requests.post(url = webhook, data = json.dumps(data), headers = headers) if os.path.exists( file ): f = open ( file , "a+" ) else : f = open ( file , "w+" ) f.write( " " + " - -" * 30 ) f.write( "\n" ) #记录日志 if x.json()[ "errcode" ] = = 0 : f.write( " " + str (datetime.datetime.now()) + " " + str (user) + " " + "发送成功" + " " + str (title) + "\n" ) f.close() else : f.write( " " + str (datetime.datetime.now()) + " " + str (user) + " " + "发送失败" + " " + str (title) + "\n" ) f.close() |
- 去zabbix页面创建报警类型
-
- 脚本名称就是刚才创建的python脚本
-
- 故障报警信息(#和>都需要打上,markdown标记):
1 2 3 4 5 6 7 8 9 10 | # 服务故障: <font color="warning">{EVENT.NAME}</font> { > 告警主机: **{HOST.NAME}** > 主机地址: **{HOST.IP}** > 监控项目: {ITEM.NAME} > 当前取值: {ITEM.LASTVALUE} > 告警等级: {TRIGGER.SEVERITY} > 告警时间: {EVENT.DATE}-{EVENT.TIME} > 事件ID: {EVENT.ID} } |
-
- 类似这样
-
- 故障恢复信息(#和>都需要打上,markdown标记):
1 2 3 4 5 6 7 8 9 10 11 | # 故障恢复: <font color="info">{EVENT.NAME}</font> { > 主机名称: **{HOST.NAME}** > 主机地址: **{HOST.IP}** > 告警名称: {EVENT.NAME} > 持续时长: {EVENT.DURATION} > 恢复时间: {EVENT.RECOVERY.DATE}-{EVENT.RECOVERY.TIME} > 当前状态: {TRIGGER.STATUS} > 当前取值: {ITEM.LASTVALUE} > 事件ID: {EVENT.ID} } |
-
- 类似这样
- 创建发送报警的用户
***用户的报警媒介这必须加上刚刚创建的媒介,不然消息发不出去
- 创建触发器动作
-
- 条件是所有报警动作都触发条件
- 触发器和监控项自己去创建,之后搞挂一个服务,企业微信上就会收到消息了
- zabbix服务器上的监控脚本日志
--------------------------
根据限定条件,把领导想看的报警发到他们自己群里
依照上面的博客,在创建一个报警媒介
在用户里面需要把刚刚创建的媒介也加上去
添加触发器动作,第二个动作限定好条件,这样再发消息,领导就能看到他想看到的了
初学linux,每学到一点东西就写一点,如有不对的地方,恳请包涵!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能