跳到主要内容

[toc]

zabbix3.4使用企业微信告警

第一步、注册企业微信,个人就可以注册,然后按照提示填写相关信息

企业微信注册地址

iShot_2022-08-31_18.10.07

第二步、登陆企业微信

企业微信首界面

iShot_2024-08-28_21.50.10

应用与小程序-->创建应用,根据提示填写相关信息,这里已经创建好了一个zabbix监控

iShot_2024-08-28_21.51.46

点击创建的应用,后续python脚本会用到Agentld和Secret

iShot_2024-08-28_21.53.15

点击我的企业,后续python脚本会用到企业ID

iShot_2024-08-28_21.54.09

第三步 、zabbix-server端配置python脚本

3.1 环境准备

#安装依赖包
[root@zabbix-server ~]# yum -y install python-pip
[root@zabbix-server ~]# pip install requests
[root@zabbix-server ~]# cd /usr/lib/zabbix/alertscripts
[root@zabbix-server alertscripts]# ls
weixin.py

#给脚本赋予执行权限
[root@zabbix-server alertscripts]# chmod +x weixin.py

#一定要修改/tmp/weixin.log这个文件的权限为zabbix,因为zabbix程序在执行weixin.py的时候是以zabbix用户执行的,而这个文件默认是root,不修改权限会报错
[root@zabbix-server alertscripts]# chown zabbix.zabbix /tmp/weixin.log

3.2 编写企业微信告警脚本

3.2.1 使用管理员id

[root@zabbix-server alertscripts]# pwd
/usr/lib/zabbix/alertscripts
[root@zabbix-server alertscripts]# cat >weixin.py <<'EOF'
#!/usr/bin/env python
#-*- coding: utf-8 -*-
#author: bxb
#date: 2018
#comment: zabbix接入微信报警脚本

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.log'),
filemode = 'a')

#corpid和appsecret在创建的应用中查看
#agentid在我的企业中查看
corpid='xxxxxx'
appsecret='xxxxxxx'
agentid=xxxxxx
#获取accesstoken
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]
subject=sys.argv[2]
#toparty='3|4|5|6'
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))

logging.info('sendto:' + touser + ';;subject:' + subject + ';;message:' + message)
EOF


#验证脚本是否能正确发送信息,BaiXueBing为企业微信账号,在通讯录-->成员信息中查看
[root@zabbix-server alertscripts]# ./weixin.py 企业微信号 test test

3.2.2 企业微信机器人告警

编辑脚本

cat > /usr/lib/zabbix/alertscripts/enterprise_wechat.py <<EOF
#!/usr/bin/python
# -*- coding: utf-8 -*-
import requests
import json
import sys
import os

headers = {'Content-Type': 'application/json;charset=utf-8'}
api_url = "xxx" # 企业微信机器人地址
def msg(text):
json_text= {
"msgtype": "text",
"text": {
"content": text
},
}
print requests.post(api_url,json.dumps(json_text),headers=headers).content

if __name__ == '__main__':
text = sys.argv[1]
msg(text)
EOF

测试,机器人能收到告警即可

python enterprise_wechat.py 告警测试

企业微信收到信息即为正确

iShot_2024-08-28_21.55.32

第四步、zabbix-server端配置

4.1 管理-->报警媒介类型-->创建媒体类型

iShot_2024-08-28_21.57.35

4.2 填写相关信息

脚本名称为自己定义的weixin.py,路径为在zabbix-server端/etc/zabbix/zabbix_server.conf中定义

AlertScriptsPath=/usr/lib/zabbix/alertscripts

在下图中脚本参数的地方写入以下3个参数,注意脚本参数一定要填写正确

{ALERT.SENDTO}

{ALERT.SUBJECT}

{ALERT.MESSAGE}

iShot_2024-08-28_21.58.21

4.3 设置收件人

右上角小人头-->报警媒介-->添加

iShot_2024-08-28_21.59.46

iShot_2024-08-28_22.01.54

第五步、修改告警相关信息

5.1 修改告警操作

修改操作标题如下

服务器:{HOST.NAME}发生: {TRIGGER.NAME} 故障!

修改消息内容如下

服务器:{HOST.NAME}发生: {TRIGGER.NAME} 故障!
{
告警主机:{HOST.NAME}
告警地址:{HOST.IP}
监控项目:{ITEM.NAME}
监控取值:{ITEM.LASTVALUE}
告警等级:{TRIGGER.SEVERITY}
当前状态:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
事件ID:{EVENT.ID}
}

iShot_2024-08-28_22.02.40

5.2 修改恢复操作

修改恢复标题如下

服务器:{HOST.NAME}: {TRIGGER.NAME} 已恢复!

修改恢复内容如下

服务器:{HOST.NAME}: {TRIGGER.NAME} 已恢复!
{
告警主机:{HOST.NAME}
告警地址:{HOST.IP}
监控项目:{ITEM.NAME}
监控取值:{ITEM.LASTVALUE}
告警等级:{TRIGGER.SEVERITY}
当前状态:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
恢复时间:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}
持续时间:{EVENT.AGE}
事件ID:{EVENT.ID}
}

iShot_2024-08-28_22.03.35

5.3 修改确认信息

修改确认标题如下

服务器:{HOST.NAME}: 报警确认

修改确认内容如下

服务器:{HOST.NAME}: 报警确认
{
确认人:{USER.FULLNAME}
时间:{ACK.DATE} {ACK.TIME}
确认信息如下:
"{ACK.MESSAGE}"
问题服务器IP:{HOSTNAME1}
问题ID:{EVENT.ID}
当前的问题是: {TRIGGER.NAME}
}

iShot_2024-08-28_22.04.16

第六步、验证

企业微信中创建的zabbix监控应用能收到信息即为正确

pc端企业微信

iShot_2024-08-28_22.05.00

手机端企业微信

iShot_2024-08-28_22.07.15