zabbix 配置企业微信报警详细步骤
首先这里白眉大叔准备了一个 weixin.py 的脚本文件。
下载地址在这里;
weixin.py: https://url69.ctfile.com/f/253469-855035022-e6dfaa?p=2206 (访问密码: 2206)
我们需要 获取这3个 信息。接下来我们操作一下 ,需要用到企业微信
第一步: 注册企业微信
https://mp.weixin.qq.com/
然后填写响应的信息
找到我的企业, 然后底部有已给 企业的 id
把这ID 记录一下,我们需要在 weixin.py 中填写
然后我们创建一个应用:
然后我们用 手机的企业微信登录 我们刚才创建 的 白眉大叔的企业微信 ,可以查看 secret 信息
这样我们需要的3个信息都有了,
我们上传 weixin.py脚本:
在我们 的服务端安装 71上
安装pip需要epel仓库
[root@zabbix ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
[root@zabbix ~]# yum install python-pip -y &>/dev/null
[root@zabbix ~]# pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple
[root@zabbix ~]# mv weixin.py /usr/lib/zabbix/alertscripts/
[root@zabbix ~]# chmod +x /usr/lib/zabbix/alertscripts/weixin.py
测试一下:这里注意, ZhaoBaiMei 必须是你自己真是姓名的全拼,
python weixin.py 'ZhaoBaimei' '下雨了!' '回家收衣服'
[root@zabbix /usr/lib/zabbix/alertscripts]#cat /tmp/weixin.log
Tue, 09 May 2023 22:26:40, connectionpool.py, INFO, Starting new HTTPS connection (1): qyapi.weixin.qq.com
Tue, 09 May 2023 22:26:41, connectionpool.py, DEBUG, "GET /cgi-bin/gettoken?corpid=ww7ff204aa8d29d59e&corpsecret=SXJE88_LHcriNrfixF-hARryFzBzqNw9yc7ujqfavCI HTTP/1.1" 200 277
Tue, 09 May 2023 22:26:41, connectionpool.py, INFO, Starting new HTTPS connection (1): qyapi.weixin.qq.com
Tue, 09 May 2023 22:26:41, connectionpool.py, DEBUG, "POST /cgi-bin/message/send?access_token=FGUTvTXwU2EbIaJ54OLpEja5946Is3bUAabLY4zMuVjT0FjKgbd_9syuY9B2505-r6d4-2IP6PLKuQ8fkwLcghfOAuTUbXFZNrJvhniIf7_ASSytnA1XfDNts7-ZoMLStO4U1ndFnd62sDaOWtfLSwIV9O9w3dOOJMPAivIbtsYt75o00rOPJJvnQBDl8dmrofmVygBRWYpA7Oo2by4wKQ HTTP/1.1" 200 188
Tue, 09 May 2023 22:26:41, weixin.py, INFO, sendto:baimei;;subject:xiayul;;message:xiayul
后台日志显示 200 成功了
但是企业微信没有收到消息,我们需要在企业微信后台 配置一下 备案域名:
这个ip 我们可以在 71 服务端的服务器上输入:
curl cip.cc
我们再测试一下:
python weixin.py 'ZhaoZhiYong' 'xiayul' 'huijia111'
企业微信收到消息了,成功了
接下来我们配置一下 zabbix
第2步: 配置 zabbix
{ALERT.SENDTO} #发给谁
{ALERT.SUBJECT} #报警标题
{ALERT.MESSAGE} #报警内容
配置动作发送邮件修改为微信媒介进行告警
然后我们 进行测试一下:
我们把 /tmp/weixin
.log 删除后重新测试
rm -rf /tmp/weixin.log
测试成功
我们在来看看正常的报警是否可以企业微信报警。
{#more-8993}
weixin.py内容如下:
#!/usr/bin/env python
#-*- coding: utf-8 -*-
#author: baimeidashu
#date: 2021
#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='ww60ee0d0f023c367e'
appsecret='Juni-or-Qm9HaPN374zMtAJ8dnsqBHRAAHo-hsPGXuk'
agentid=1000002
#获取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)