通过脚本发送zabbix微信报警
实现zabbix通过微信报警的方式也是通过脚本来实现,与邮件报警不同的是,脚本调用的微信的相关接口的获取相对复杂一点
1、申请一个微信公众号(企业号)
申请方法不多说,如果已申请请忽略
2、在微信企业号上新建应用

上传应用logo,填写应用名称,应用介绍等

应用创建完之后查看并启用应用,同时会生成应用的AgentId以及Secret,这个在后面步骤会有用
3、接口调用测试
点击:API文档——>开发者工具——>接口调试工具,找不到就直接点这个地址
http://work.weixin.qq.com/api/devtools/devtool.php

corpid为创建的企业号生成的corpid

Corpsecret就是在第2步中创建的应用所生成的Secret,填入后点击检查问题,生成请求地址和返回结果,确认无误后进行下一步

4、关于脚本
脚本的存放目录为/usr/lib/zabbix/alertscripts,脚本内容不做过多说明,需要了解含义请自行百度,脚本内容如下
[root@zabbix alertscripts]# cat weixin.py
#!/usr/bin/env python
#-*- coding: utf-8 -*-
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='微信企业号corpid'
appsecret='应用的Secret'
agentid=应用的id
#获取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)
脚本中需要填写微信企业号corpid,应用的Secret以及应用的id,脚本中还定义了日志文件为/tmp/weixin.log
脚本编写完成之后需要为脚本添加执行权限
[root@zabbix alertscripts]# chmod +x weixin.py
脚本后面内容中的一些参数touser,toparty,msgtype,agentid,content,safe是微信企业号中定义的参数名称,说明文档见腾讯企业号开发者文档https://work.weixin.qq.com/api/doc

目前微信企业号中的部门成员账号也就是我们使用的touser参数是部门成员的账号,这个账号在早起阶段是成员的微信号码,但是目前我们需要使用的账号微信官方自动生成为成员名字的拼音缩写,可以在微信企业号后台通讯录——>部门——>成员详情找到

另外需要说明的是,微信企业号应用的访问频率是有限制的,这一点同样也可以在开发者文档中找到

5、web界面新增报警媒介类型

名称自定义即可,类型选择脚本,脚本名称为所写的脚本的名称weixin.py,脚本的三个参数都是zabbix内置变量,分别为:报警收件人:{ALERT.SENDTO},报警标题:{ALERT.SUBJECT},报警内容:{ALERT.MESSAGE},添加完报警媒介类型后勾选启用
6、配置用户报警媒介信息
配置需要收到微信报警的用户的信息,添加报警媒介,选择上面创建的微信报警,收件人填写上面所说的部门成员的账号,由于是通过微信公众号发送的微信提醒,如果需要为多个用户例如微信企业号中所有用户发送报警,这里收件人的信息就填写为@all

7、测试
命令行测试脚本能否成功执行
[root@zabbix alertscripts]# ./weixin.py har452330261 "测试" 'test'
测试参数为三个,分别为部门成员账号,报警标题,报警内容
测试的时候如果出现错误提示缺少requests,解决方法为使用pip进行安装:pip install smtplib
测试后会在微信企业号中收到我们创建的应用所发出的消息

同时在zabbix服务器的后台也生成了微信报警的日志文件/tmp/weixin.log,如果测试不成功可以通过日志来进行查错
命令行测试完成后,如果想要通过zabbix进行触发报警,还需要做的就是将上面生成的日志文件的所属修改为zabbix用户且具有写权限
[root@zabbix alertscripts]# ll /tmp/weixin.log
-rwxr-xr-x 1 zabbix zabbix 35329 6月 13 07:47 /tmp/weixin.log
到这里微信报警就算大功告成了,接下来就可以愉快的通过zabbix进行触发微信报警了,报警成功触发后可以通过zabbix面板的报表——>动作日志查看
收到的报警提示如下

附加内容:
1、微信报警基于微信企业号,通常情况下我们收到微信企业号的消息需要下载微信企业号的客户端,如何不下载又能收到消息呢(也就是直接在自己的微信收到消息呢)?
解决办法为:进入微信企业号后台——>连接微信——>微工作台——>邀请关注,后台会给所拥有的微信企业号生成一个二维码,拿出手机,微信扫码关注,以后报警的消息就能直接在微信收到了
2、新添加的用户收到微信报警的步骤:
微信企业号通讯录相应部门中添加成员
微信企业号微工作台邀请成员关注
zabbix服务端web界面添加用户,设置用户的微信报警媒介(收件人所在部门的相应成员账号)
3、微信企业号具有很多功能以及开发者工具,有兴趣或者相关开发人员可以细细研究
博主原创文章,转载请务必注明出处
通过脚本发送zabbix微信报警的更多相关文章
- 通过脚本发送zabbix邮件报警
zabbix原生的报警媒介类型中,邮件报警是我们常用的方式.当我们在CentOS6上面安装zabbix3.0并配置邮件报警的时候,在邮件配置正确的前提下,不管触发器如何触发,邮件总是发送不出去,但是在 ...
- Zabbix微信报警脚本及写触发记录
一.Zabbix微信报警 默认路径:/usr/lib/zabbix/scripts/weixin.py #!/usr/bin/python # -*- coding: utf-8 -*- import ...
- zabbix利用python脚本发送钉钉报警
#!/usr/bin/python # -*- coding: utf-8 -*- import requests import json import sys import os headers = ...
- Zabbix微信报警触发
(1) 企业应用-创建应用 1.除了对个人添加微信报警之外,还可以添加不同管理组,接受同一个应用推送的消息, 成员账号,组织部门ID,应用Agent ID,CorpID和Secret, ...
- (五)zabbix微信报警
1.注册微信企业号 1)注册微信企业号 https://work.weixin.qq.com 2)通讯录添加用户 3)记住部门id 4)创建应用 5)点击刚创建的应用,记住Agentld和secret ...
- Zabbix 微信报警Python版(带监控项波动图片)
#!/usr/bin/python # -*- coding: UTF- -*- #Function: 微信报警python版(带波动图) #Environment: python import ur ...
- zabbix 微信报警脚本
不知道是什么原因直接用Python脚本zabbix无法执行脚本,需要一个shell来启动 #! /bin/bash userid=$ content=$ python /data/zabbix/ale ...
- zabbix 微信报警
http://blog.csdn.net/wh211212/article/details/52735236 Zabbix可以通过多种方式把告警信息发送到指定人,常用的有邮件,短信报警方式,但是越来越 ...
- filebeat+logstash通过zabbix微信报警
一.安装软件: 1.在要收集日志的机器上安装filebeat: 1).下载安装: cd /usr/local/src wget https://artifacts.elastic.co/downloa ...
随机推荐
- BZOJ4652 [Noi2016]循环之美 【数论 + 莫比乌斯反演 + 杜教筛】
题目链接 BZOJ 题解 orz 此题太优美了 我们令\(\frac{x}{y}\)为最简分数,则\(x \perp y\)即,\(gcd(x,y) = 1\) 先不管\(k\)进制,我们知道\(10 ...
- linux低权限执行高权限
1.关于sudo不需要输密码,低权限执行高权限,在root下的命令visudo放开%wheel ALL:保存退出, 执行gpasswd -a yourusername wheel 2.脚本命令下的,权 ...
- 【ZOJ4062】Plants vs. Zombies(二分)
题意:有n个植物排成一排,标号为1-n,每株植物有自己的生长速度ai,每对植物浇一次水,该株植物就长高ai, 现在机器人从第0个格子出发,每次走一步,不能停留,每一步浇一次水,总共可以走m步,问最矮的 ...
- [LeetCode] Search for a Range 二分搜索
Given a sorted array of integers, find the starting and ending position of a given target value. You ...
- 牧场行走(LCA)
神奇传送门 好吧,这题很有意思.. 第一眼撇的时候还以为是(SPFA)呜.... 然后发现要Q次询问就想到了LCA 但是发现不是求LCA.. 于是想到了一个神奇的定律: 两点的LCA一定在u到v的最短 ...
- AUTOIT3设置用户包含目录
- Android屏幕元素层次结构
转自:http://blog.csdn.net/hpoi/article/details/4629717 Android屏幕元素层次结构 android.app.Activity 对于一个Andr ...
- Mysql数据库乱码总结
今天又独到了Mysql乱码问题,过去总是匆匆的解决了就算了.这次我实在受不了了.每次都是迷迷糊糊的改好的. 这次决定好好探索一把,看了很多资料及博客之后才理解了点.先记录下来.如有不对的请指正. 1. ...
- UbuntuMate开机自动启动ssh服务
在文件/etc/init/ssh.conf中,有一句 start on filesystem or runlevel [2345] 如果想关闭自动启动的话,把这一局修改为start on runlev ...
- UVA 10054 The Necklace (无向图的欧拉回路)
本文链接:http://www.cnblogs.com/Ash-ly/p/5405904.html 题意: 妹妹有一条项链,这条项链由许多珠子串在一起组成,珠子是彩色的,两个连续的珠子的交汇点颜色相同 ...