实现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. webpack的css,less,sass中使用绝对路径

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

  2. Spring----01. 入门知识,IoC/DI

    1.spring两个最基本概念:依赖注入DI.面向切面AOP 2.spring通过上下文Application Context装配bean,实现方式的区别是如何加载它们的配置信息, ClassPath ...

  3. 关于try-catch-finally return 的面试题

    public class Test { public static void main(String[] args) { System.out.println(test()); } static in ...

  4. (二十二)函数fseek() 用法

    fseek 函数名: fseek功 能: 重定位流上的文件指针用 法: int fseek(FILE *stream, long offset, int fromwhere);描 述: 函数设置文件指 ...

  5. Appium+python自动化17-启动iOS模拟器APP源码案例【转载】

    前言 上一篇已经可以启动iOS模拟器上的safari浏览器了,启动app比启动浏览器要复杂一点,本篇以github上的源码为案例详细介绍如何启动iOS模拟器的app 一.clone源码 1.githu ...

  6. poj 1981(单位圆覆盖最多点问题模板)

    Circle and Points Time Limit: 5000MS   Memory Limit: 30000K Total Submissions: 7327   Accepted: 2651 ...

  7. (1)C#工具箱-公共控件1

    公共控件 InitializeComponent() 先说下InitializeComponent()这个方法,它在form1.cs里调用这个方法对控件进行初始化,控件的方法要在这个方法之后,否则会因 ...

  8. Jmeter正则表达式提取器--将上一个请求的结果作为下一个请求的参数

    正则表达式提取器是一个后置处理器,作用是在请求完成后,从响应数据中截取一部分字符串保存到变量中,以便下一个请求使用 1.首先在线程组下添加两个HTTP请求, 2.添加好两个HTTP请求后,在每个HTT ...

  9. zzc种田

    题目背景 可能以后 zzc就去种田了. 题目描述 田地是一个巨大的矩形,然而zzc 每次只能种一个正方形,而每种一个正方形时zzc所花的体力值是正方形的周长,种过的田不可以再种,zzc很懒还要节约体力 ...

  10. DB2如何调整表空间大小

    DB2如何调整表空间大小 刚刚接到客户那边打的电话,程序一直报错,所有的业务都做不了,拷贝了一份应用服务器(weblogic)的日志,日志里显示: WARN : 2009-06-18 16:24:32 ...