用微信企业号实现Zabbix微信报警

Kai zabbix, 工作 4,806 次浏览 没有评论

1、微信企业号注册

企业号注册:https://qy.weixin.qq.com/
选择企业号.

期间会让你输入你的邮箱和绑定你的微信

注册成功后,登陆应用中心新建应用消息型应用

我们要在这里创建应用,因为要通过应用发送消息给部门成员

注意:这里要记住一个值,应用ID

设置—>功能设置—->权限管理—->新建管理组

管理员必须事先已经关注了企业号,并且已经设置好邮箱地址

新建用户组,并把Corpid Secret记下来

确定管理员可以读取通讯录,可以使用应用发消息。

我们要准备这些东西:

  •     一个微信企业号
  •     企业号已经被部门成员关注
  •     企业号里有一个可以发消息的应用
  •     一个授权管理员,可以使用该应用给成员发消息

我们要取到这些信息:

  •     成员账号
  •     组织部门ID
  •     应用ID
  •     CropID
  •     Secret

打开http://qydev.weixin.qq.com/debug

Shell脚本原理

 
 
 
  使用:

 
 
 
  curl -s -G  url  
 
 
 
  获取 AccessToken

 
 
 
  使用:

 
 
 
  curl –data  url  
  传送凭证调用企业号接口

 
 
 
  zabbix会传递三个参数给脚本,$1是消息接收账号,$2报警标题,$3报警内容

[root@zabbix-server ~]# find / -name “alertscripts” -type d ##查找下alertscripts路径

/usr/lib/zabbix/alertscripts

[root@zabbix-server ~]# vi /etc/zabbix/zabbix_server.conf ## zabbix_server.conf 添加alertscripts脚本路径

AlertScriptsPath=/usr/lib/zabbix/alertscripts

[root@zabbix-server ~]# vi /usr/lib/zabbix/alertscripts/weixin.sh

#!/bin/bash

#########################################################################

#########################################################################

# Functions: send messages to wechat app

# set variables

CropID=’wx393fc846aedxxxxx

Secret=’6OtQyX_yRRXYS1Ivlv7xSM9mlr7Hu06JU4FAQ23iynIf_8j2y3un7aWglLExxxxx

GURL=”https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CropID&corpsecret=$Secret”

#get acccess_token

Gtoken=$(/usr/bin/curl -s -G $GURL | awk -F\” ‘{print $4}’)

PURL=”https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Gtoken”

#

function body() {

local int AppID=2 #企业号中的应用id

local UserID=”kai” #部门成员idzabbix中定义的微信接收者

local PartyID=2 #部门id,定义了范围,组内成员都可接收到消息

local Msg=$(echo “$@” | cut -d” ” -f3-) #过滤出zabbix传递的第三个参数

printf ‘{\n’

printf ‘\t”touser”: “‘”$UserID”\””,\n”

printf ‘\t”toparty”: “‘”$PartyID”\””,\n”

printf ‘\t”msgtype”: “text”,\n’

printf ‘\t”agentid”: “‘” $AppID “\””,\n”

printf ‘\t”text”: {\n’

printf ‘\t\t”content”: “‘”$Msg”\””\n”

printf ‘\t},\n’

printf ‘\t”safe”:”0″\n’

printf ‘}\n’

}

/usr/bin/curl –data-ascii “$(body $! $2 $3)” $PURL

#http://qydev.weixin.qq.com/wiki/index.php?title=消息类型及数据格式

授权

[root@zabbix-server]# chown zabbix:zabbix /usr/lib/zabbix/alertscripts/weixin.sh
[root@zabbix-server]# chmod +x /usr/lib/zabbix/alertscripts/weixin.sh

#测试:

[root@zabbix-server alertscripts]# bash weixin.sh test hello.world!
{“errcode”:0,”errmsg”:”ok”,”invaliduser”:”all user invalid”}

微信成功收到消息

#修改zabbix_server.conf文件,添加以下(脚本执行目录)

[root@zabbix-server]# vi /etc/zabbix/zabbix-server.conf

##weixin##

AlertScriptsPath=/usr/lib/zabbix/alertscripts

Zabbix-web前端设置

管理–报警媒介类型–创建媒体类型

管理用户

配置动作创建动作

名称Report problems to test-msg

告警主题:

Default subject:{TRIGGER.STATUS}: {TRIGGER.NAME}

Trigger host:{HOSTNAME}

Trigger ip:{HOST.IP}

Trigger time:{EVENT.DATE}:{EVENT.TIME}

Trigger: {TRIGGER.NAME}

Trigger status: {TRIGGER.STATUS}

Trigger severity: {TRIGGER.SEVERITY}

Trigger URL: {TRIGGER.URL}

Item values:

{ITEM.NAME1} ({HOST.NAME1}:{ITEM.KEY1}): {ITEM.VALUE1}

{ITEM.NAME2} ({HOST.NAME2}:{ITEM.KEY2}): {ITEM.VALUE2}

Original event ID: {EVENT.ID}

恢复主题:

Default subject:{TRIGGER.STATUS}: {TRIGGER.NAME}

Trigger host:{HOSTNAME}

Trigger ip:{HOST.IP}

Trigger time:{EVENT.DATE}:{EVENT.TIME}

Trigger: {TRIGGER.NAME}

Trigger status: {TRIGGER.STATUS}

Trigger severity: {TRIGGER.SEVERITY}

Trigger URL: {TRIGGER.URL}

Item values:

{ITEM.NAME1} ({HOST.NAME1}:{ITEM.KEY1}): {ITEM.VALUE1}

{ITEM.NAME2} ({HOST.NAME2}:{ITEM.KEY2}): {ITEM.VALUE2}

Original event ID: {EVENT.ID}

你也可以改成中文

Default subject:{TRIGGER.STATUS}: {TRIGGER.NAME}

报警主机:{HOSTNAME}

报警 ip:{HOST.IP}

报警时间:{EVENT.DATE}:{EVENT.TIME}

触发器名称: {TRIGGER.NAME}

触发器状态: {TRIGGER.STATUS}

触发器等级: {TRIGGER.SEVERITY}

Trigger URL: {TRIGGER.URL}

Item values:

{ITEM.NAME1} ({HOST.NAME1}:{ITEM.KEY1}): {ITEM.VALUE1}

{ITEM.NAME2} ({HOST.NAME2}:{ITEM.KEY2}): {ITEM.VALUE2}

Original event ID: {EVENT.ID}

最后重启下

检验:

你在监控的主机下面
新建个比较敏感的触发器,然后就坐等~~

收到了


发表回复

Go