文章目录
zabbix 微信报警
一、微信和短信报警的思路
在配置报警媒介类型里,选择脚本。为脚本传递参数,这个参数是zabbix 内置的,在zabbix手册中 已经定义好了。通常需要传入的参数有三个:
脚本参数 | value |
---|---|
{ALERT.SENDTO} | 发送给谁 |
{ALERT.SUBJECT} | 报警内容的主题 |
{ALERT.MESSAGE} | 具体的报警内容 |
让zabbix_agent 执行特定的脚本实现报警的功能。
下面这三个参数如何传递到脚本中,以及它的涵义
1. 在alertscripts 目录下创建脚本
root@z1:~# cd /apps/zabbix_server/share/zabbix/alertscripts/
root@z1:/apps/zabbix_server/share/zabbix/alertscripts# vim sms.sh
echo $1 $2 $3 >> /tmp/test.txt
root@z1:/apps/zabbix_server/share/zabbix/alertscripts# chmod +x sms.sh
2. 创建脚本媒介类型
==注意:==此处的脚本类型不用写绝对路径
3. 为用户添加接收报警的途径
4. 故意造成报警,验证报警内容
root@z1:~# cat /tmp/test.txt
110 业务报警PROBLEM 北京业务报警服务器:192.168.1.104-web2,IP:192.168.1.104,详情:nginx_listen_80:0
所以,既然可以取到这些参数值,短信报警的要素就具备了,购买xx平台的短信服务,向这个平台的短信业务接口 发起http请求,脚本的内容差不多也就一条curl 命令 就可以了。而微信报警,只不过是脚本的内容不一样罢了
二、微信报警
2.1 下载并且注册企业版微信
下载企业微信是为了接收报警信息 ,而管理和查看企业信息在网页中(https://work.weixin.qq.com/)
关键点: 在 我的企业/企业信息/ 最后一行可以看到我的企业ID
2.2 在应用管理里创建应用
点击刚才新创建的应用,可以看见 AgentId 和 Secret。
2.3 为公司添加用户
点击 /通讯录/xx用户/ 这里 头像下面可以看到 账号
2.4 发送微信信息的过程
官方文档: https://work.weixin.qq.com/api/doc/90000/90003/90487
2.5 微信脚本
#!/usr/bin/env python
#coding:utf-8
#Author:Zhang ShiJie
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='企业ID'
appsecret="秘钥"
agentid="AgentID"
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]
message=sys.argv[2] + "\n\n" +sys.argv[3]
params={
"touser": touser,
"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)
2.6 调用脚本
root@z1:/apps/zabbix_server/share/zabbix/alertscripts# chmod +x wechat.py
root@z1:~# apt install python-pip
测试
root@z1:/apps/zabbix_server/share/zabbix/alertscripts# python3 wechat.py xxx(接收者的账号) "这是主题" "这是内容"
之后
和上面类似,以此添加报警媒介类型、为用户添加微信报警媒介、设置动作(操作、恢复操作)即可
若遇到以下问题, rm /tmp/weixin.log 即可
2.7 验证
当触发器报警时,微信客户端可以收到报警