这是使用Golang为zabbix写的一个微信报警插件,本程序修改自ZABBIX钉钉报警插件。
可以将zabbix的报警消息推送给微信,实现使用微信APP接收zabbix的报警消息。

之前写过 ZABBIX云之家报警插件ZABBIX钉钉报警插件 可以参考。云之家是金蝶的产品,钉钉是阿里的产品,总体上来说,报警到钉钉最优。

下面的教程仅支持zabbix3.0及以上版本。

程序使用方法

本程序是命令行程序,可以按照下面方式直接发消息到指定的微信企业号,您可以加-h--help参数来查看帮助。

golang-zabbix-alter-to-wechat.exe -agentid=794723 -corpid=dingd6757aa75040e32b -corpsecret=z
C5Jbed9Sx8o9ZwfN4QgFo420WWlKw8NbSDYvk6Qin7gflFIIYLSeq4ZrdOVpk1o -to=manager5675 -msg="{ \"from\": \"Tomcat03\"
, \"time\": \"2016.07.28 14:45:24\", \"level\": \"Warning\", \"name\": \"Response time is too high on Tomcat03\", \"key\": \"icmppingsec
\", \"value\": \"31ms\", \"now\": \"31ms\", \"id\": \"1618\", \"ip\": \"10.139.105.107\", \"color\":\"FF4A934A\", \"age\":\"3m\", \"reco
veryTime\":\"2016.07.28 14:48:24\", \"status\":\"OK\" }"

下载程序

消息效果

ZABBIX微信报警

ZABBIX微信报警

ZABBIX微信报警

下面是钉钉的报警消息,可以看到比微信消息内容要丰富的多。

ZABBIX 钉钉报警

注册微信企业号

点击访问:去注册微信企业号 可以在这个界面注册微信企业号。

填写注册信息后,邮箱会收到激活邮件,点击激活链接以后请选择注册企业号,企业号可以主动发消息给用户。

微信企业号.jpg

选择以后,按照向导一步一步激活账号。

创建微信应用

若没有什么特殊情况的话,现在您已经登录到微信企业号的后台了。那么接下来我们需要创建一个应用用来发送报警消息。

点击后台的应用中心-创建应用,来创建一个消息型应用。

创建微信企业号应用.jpg

获取 AgentID、Corpid 和 Corpsecret

应用创建完成了,我们还需要为应用添加一个普通管理组,以便获取 CorpidCorpsecret 用来发送消息。

企业号添加管理员.jpg

企业号权限管理.jpg

应用的id,可以在应用中心,点击应用图标获取。

企业号应用ID.jpg

到这里,我们已经获取了 AgentID CorpidCorpsecret,请记下后面要用。

部署报警程序

下载上面的文件,根据你的系统类型部署32位或64位程序。
部署的目录在/etc/zabbix/zabbix_server.conf中查看。
需要注意的是为程序增加执行权限。

zabbix脚本

zabbix脚本

创建报警媒介

根据下图的描述,创建你的报警媒介。
请不要遗漏脚本参数,不然会导致收不到消息。
-agentid -corpid -corpsecret这三个参数请根据你申请到的如实填写。
-to 参数您可以省略(移除该项,会默认发给所有人),也可以写一个或多个例如:
-to=user1
-to=user1|user2|user3

zabbix创建报警媒介

报警媒介类型.jpg

创建动作

根据下面图片创建动作

动作

zabbix创建动作

动作设置

动作的内容为:

默认信息

<?xml version="1.0" encoding="UTF-8" ?>
<root>
  <from>{HOSTNAME1}</from>
  <time>{EVENT.DATE} {EVENT.TIME}</time>
  <level>{TRIGGER.SEVERITY}</level>
  <name>{TRIGGER.NAME}</name>
  <key>{TRIGGER.KEY1}</key>
  <value>{ITEM.VALUE}</value>
  <now>{ITEM.LASTVALUE}</now>
  <id>{EVENT.ID}</id>
  <ip>{HOST.IP}</ip>
  <color>FFE61A1A</color>
  <age>{EVENT.AGE}</age>
  <status>{EVENT.STATUS}</status>
<acknowledgement> {EVENT.ACK.STATUS} </acknowledgement>
<acknowledgementhistory> {EVENT.ACK.HISTORY}</acknowledgementhistory>
</root>

恢复信息

<?xml version="1.0" encoding="UTF-8" ?>
<root>
  <from>{HOSTNAME1}</from>
  <time>{EVENT.DATE} {EVENT.TIME}</time>
  <level>{TRIGGER.SEVERITY}</level>
  <name>{TRIGGER.NAME}</name>
  <key>{TRIGGER.KEY1}</key>
  <value>{ITEM.VALUE}</value>
  <now>{ITEM.LASTVALUE}</now>
  <id>{EVENT.ID}</id>
  <ip>{HOST.IP}</ip>
  <color>FF4A934A</color>
  <age>{EVENT.AGE}</age>
  <recoveryTime>{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}</recoveryTime>
  <status>{EVENT.RECOVERY.STATUS}</status>
</root>

为用户增加报警媒介

为用户增加报警媒介以后,用户才能收到消息。

请输入图片描述

请输入图片描述

开放源代码

本程序的源码您可以访问 github :golang-zabbix-alter-to-wechat

结语

到了这里,您应该可以收到消息了,如果出现什么异常,您可以在本文后留言。