实现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微信报警的更多相关文章

  1. 通过脚本发送zabbix邮件报警

    zabbix原生的报警媒介类型中,邮件报警是我们常用的方式.当我们在CentOS6上面安装zabbix3.0并配置邮件报警的时候,在邮件配置正确的前提下,不管触发器如何触发,邮件总是发送不出去,但是在 ...

  2. Zabbix微信报警脚本及写触发记录

    一.Zabbix微信报警 默认路径:/usr/lib/zabbix/scripts/weixin.py #!/usr/bin/python # -*- coding: utf-8 -*- import ...

  3. zabbix利用python脚本发送钉钉报警

    #!/usr/bin/python # -*- coding: utf-8 -*- import requests import json import sys import os headers = ...

  4. Zabbix微信报警触发

    (1)         企业应用-创建应用 1.除了对个人添加微信报警之外,还可以添加不同管理组,接受同一个应用推送的消息, 成员账号,组织部门ID,应用Agent ID,CorpID和Secret, ...

  5. (五)zabbix微信报警

    1.注册微信企业号 1)注册微信企业号 https://work.weixin.qq.com 2)通讯录添加用户 3)记住部门id 4)创建应用 5)点击刚创建的应用,记住Agentld和secret ...

  6. Zabbix 微信报警Python版(带监控项波动图片)

    #!/usr/bin/python # -*- coding: UTF- -*- #Function: 微信报警python版(带波动图) #Environment: python import ur ...

  7. zabbix 微信报警脚本

    不知道是什么原因直接用Python脚本zabbix无法执行脚本,需要一个shell来启动 #! /bin/bash userid=$ content=$ python /data/zabbix/ale ...

  8. zabbix 微信报警

    http://blog.csdn.net/wh211212/article/details/52735236 Zabbix可以通过多种方式把告警信息发送到指定人,常用的有邮件,短信报警方式,但是越来越 ...

  9. filebeat+logstash通过zabbix微信报警

    一.安装软件: 1.在要收集日志的机器上安装filebeat: 1).下载安装: cd /usr/local/src wget https://artifacts.elastic.co/downloa ...

随机推荐

  1. 洛谷 P3765 总统选举 解题报告

    P3765 总统选举 题目背景 黑恶势力的反攻计划被小C成功摧毁,黑恶势力只好投降.秋之国的人民解放了,举国欢庆.此时,原秋之国总统因没能守护好国土,申请辞职,并请秋之国人民的大救星小C钦定下一任.作 ...

  2. webpack的css,less,sass中使用绝对路径

    用法: 使用~表示绝对路径,如下: @import "~otherfile.scss" .yourClass { background: url('~img/wallpaper.p ...

  3. 【CF Round 439 E. The Untended Antiquity】

    time limit per test 2 seconds memory limit per test 512 megabytes input standard input output standa ...

  4. [解决方案]NuGet打包报错: 'X' already has a dependency defined for 'Y'

    大家在打包Nuget包的时候,最后会执行以下语句 nuget pack .\ML.Common.SDK.csproj -Prop Configuration=Release 执行此句后,提示以下报错信 ...

  5. 一种简单高效的音频降噪算法示例(附完整C代码)

    近期比较忙, 抽空出来5.1开源献礼. 但凡学习音频降噪算法的朋友,肯定看过一个算法. <<语音增强-理论与实践>> 中提及到基于对数的最小均方误差的降噪算法,也就是LogMM ...

  6. linux命令Netstat

    1.需求 了解Netstat命令 2.简介 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multi ...

  7. es6+最佳入门实践(3)

    3.数组扩展 3.1.扩展运算符 扩展运算符用三个点(...)表示,从字面上理解,它的功能就是把数组扩展开来,具体形式如下: let arr = [1, 2, 3]; console.log(...a ...

  8. 1257 背包问题 V3——分数规划

    N个物品的体积为W1,W2......Wn(Wi为整数),与之相对应的价值为P1,P2......Pn(Pi为整数),从中选出K件物品(K <= N),使得单位体积的价值最大. Input 第1 ...

  9. Spinner用法与ListView用法

    参考: http://blog.csdn.net/u012960536/article/details/46732421 --------------------------------------- ...

  10. 魔法使的烟花(NOIP模拟赛Round 7)

    [问题描述] 魔法森林里有很多蘑菇,魔法使常常采摘它们来制作魔法药水.为了在6月的那个奇妙的晚上用魔法绽放出最绚丽的烟花,魔法使决定对魔法森林进行一番彻底的勘探. 魔法森林分为n个区域,由n-1条长度 ...