zabbix企业微信报警

1.微信报警原理流程

注册微信企业号,通过企业号提供的信息ID、以及获取微信的API接口,就可以将服务器的报警数据,发给API,发给微信,发给关注这个公众号的所有用户、

2.注册企业微信

https://work.weixin.qq.com/wework_admin/frame

3.修改通讯录组名

4.创建自定义zabbix应用

5.查看企业ID

6.微信报警架构图逻辑图

7.添加通信群组成员
想让其他人也加入到这个组,便于接收消息,因此需要邀请加入组。
扫码加入企业
加入监控小分队即可。

8.关注监控公众号(无须下载企业微信了)

9.推送报警信息(python)
脚本是python3,你的目标机器,是否支持python3

yum install python3 python3-devel  python3-pip -y

pip3 install requests
#!/usr/bin/env python3
# Author: www.yuchaoit.cn


import requests
import sys
import os
import json
import logging

# 日志格式构造
logging.basicConfig(level = logging.DEBUG, format = '%(asctime)s, %(filename)s, %(levelname)s, %(message)s',
                datefmt = '%a, %d %b %Y %H:%M:%S',
                filename = os.path.join('/tmp','weixin_python.log'),
                filemode = 'a')
# 企业ID
corpid='ww76b67c7e3bea'

# 应用秘钥
appsecret='Z2LpWY2H15svWZXuXAzyxqCuGUWrDPKhhHvvnY'

# 应用id
agentid=1000002

# 获取身份令牌,用于和微信通信的认证
# 参考企业微信API文档https://developer.work.weixin.qq.com/document/path/90487
token_url='https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid +'&corpsecret=' + appsecret
req=requests.get(token_url)
accesstoken=req.json()['access_token']
msgsend_url='https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + accesstoken

# 构造消息体
#touser=sys.argv[1]
toparty=sys.argv[1]
subject=sys.argv[2]

# 发送微信消息的数据格式
message=sys.argv[2] + "\n\n" +sys.argv[3]

params={
        #"touser": touser,
        "toparty": toparty,
        "msgtype": "text",
        "agentid": agentid,
        "text": {
            "content": message
            },
    "safe":0
    }

# 最终发请求
req=requests.post(msgsend_url, data=json.dumps(params))
# 调试请求发送结果
print(req.content)
# 记录日志
logging.info('sendto:' + toparty + ';;subject:' + subject + ';;message:' + message)

坑记录,添加ip白名单

# 踩坑了,tmd,需要加入自建应用的ip白名单
# https://open.work.weixin.qq.com/devtool/query?e=60020


应用管理
python3版本的坑

#!/usr/bin/env python3

别忘记,修改脚本的python解释器!!

测试发微信(python)

python3 weixin_zabbix.py 2 "zabbix微信报警测试" "当前使用python脚本发送,发送人www.yuchaoit.cn"

10.推送报警信息(bash)

cat > weixin.sh << 'EOF'
#!/bin/bash
# Authror: www.yuchaoit.cn
#需要将下列信息修改为自己注册的企业微信信息 #应用ID
agentid='1000002'

#secretID
corpsecret='Z2LpWYv2tswSWZXuXAzyxqCuGUWrDPKhhHvvnY' 

#企业ID 
corpid='ww76b673e3bea'

#接受者的账户,由zabbix传入 
#user=$1

#报警邮件标题,由zabbix传入 
title=$2 

#报警邮件内容,由zabbix传入 
message=$3

# 接收信息的组
group=$1 

#获取token信息,需要在链接里带入ID
token=$(curl -s -X GET "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=${corpid}&corpsecret=${corpsecret}"|awk -F \" '{print $10}')

#构造语句执行发送动作,发送http请求
curl -s -H "Content-Type: application/json" -X POST "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=${token}" -d' {
   "toparty" : "'"${group}"'",
   "msgtype" : "text",
   "agentid" : '"${agentid}"',
   "text" : {
       "content" : "'"${title}\n\n${message}"'"
   },
   "safe":0
}' >> /tmp/weixin_bash.log

#将报警信息写入日志文件
echo -e "\n报警时间:$(date +%F-%H:%M)\n报警标题:${title}\n报警内容:${message}" >> /tmp/weixin_bash.log
EOF

bash发报警

[root@m-61 ~]#bash weixin.sh 2 "bash还是不如python美丽啊" "bash发送报警了!!"

注意,该脚本,放入服务端的一个alter脚本目录中即可,
zabbix-server可以去调用它
AlertScriptsPath=/usr/lib/zabbix/alertscripts

确保脚本如下即可

[root@zabbix-server-71 /usr/lib/zabbix/alertscripts]#ll
total 8
-rwxr-xr-x 1 zabbix zabbix 1739 Jul 11 11:57 dingding.py
-rwxr-xr-x 1 zabbix zabbix 2328 Jul 8 16:24 weixin.sh

去zabbix-UI,添加报警动作,执行你的脚本,实现zabbix+脚本实现微信报警通知

1. 需要设置zabbix-server的配置文件,设置一个脚本目录,zabbix才能去这里去找到脚本且执行

[root@zabbix-server-71 ~]#cat  /etc/zabbix/zabbix_server.conf 
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_server.pid
SocketDir=/var/run/zabbix
DBHost=localhost 
DBName=zabbix
DBUser=zabbix
DBPassword=linux0224
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
# zabbix定义的一个脚本目录
AlertScriptsPath=/usr/lib/zabbix/alertscripts


2. bash py的脚本放入该目录即可,还得注意权限。。。太坑了

修改脚本的权限
[root@zabbix-server-71 /usr/lib/zabbix/alertscripts]#chown zabbix.zabbix weixin.sh 
[root@zabbix-server-71 /usr/lib/zabbix/alertscripts]#
[root@zabbix-server-71 /usr/lib/zabbix/alertscripts]#
[root@zabbix-server-71 /usr/lib/zabbix/alertscripts]#chmod +x weixin.sh 
[root@zabbix-server-71 /usr/lib/zabbix/alertscripts]#ll
total 4
-rwxr-xr-x 1 zabbix zabbix 2328 Jul  8 16:24 weixin.sh

12.zabbix页面配置微信报警
添加报警媒介类型


用户设置报警媒介

请注意,这里的收件人,是指微信的组,或者微信的联系人!
传入的参数,我这里是传入的1,是zabbix监控小组的id


posted @   不太聪明的大鹅  阅读(329)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示