前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >zabbix3.4接入微信报警 原

zabbix3.4接入微信报警 原

作者头像
拓荒者
发布2019-03-11 15:13:01
9160
发布2019-03-11 15:13:01
举报
文章被收录于专栏:运维经验分享

简介

微信作为日常使用最频繁的工具,因此希望将微信接入zabbix报警。

微信企业号

1.申请微信企业号  申请后,请在“我的企业”页面下记录企业号的CorpID 

这里写图片描述
这里写图片描述

2.添加通讯录 

这里写图片描述
这里写图片描述

部门添加完成后,根据实际情况添加子部门或相关成员,如下: 

这里写图片描述
这里写图片描述

3.创建应用  在“企业应用”页面创建应用 

这里写图片描述
这里写图片描述

注意: 可见范围一定要添加需要收到报警的人员或部门,否则zabbix报警信息无法推送到相关人员。

创建完成如下: 

这里写图片描述
这里写图片描述

至此,微信企业号的配置完成。

zabbix server端配置

一.微信报警脚本 默认将脚本放到/usr/local/zabbix/share/zabbix/alertscripts即可,由于我在脚本中打印日志,因此请添加权限。

代码语言:javascript
复制
#!/usr/bin/env python
#-*- coding: utf-8 -*-
#author: yanggd
#date: 2018-04-20
#comment: zabbix接入微信报警脚本

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('/usr/local/zabbix/share/zabbix/alertscripts','weixin.log'),
                filemode = 'a')

corpid='wwbbaxxxxxx'
appsecret='m2HUZXUxxxxxxxxxx'
agentid=1000004
#获取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[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)                                                                              
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
代码语言:javascript
复制
#添加权限
chmod +x weixin.py
touch weixin.log
chown zabbix.zabbix weixin.log
  • 1
  • 2
  • 3
  • 4

企业号开发文档请官方文档企业微信API:  开始开发 发送应用消息

脚本说明:  1.corpid、appsecret、agentid就是我们需要从企业号和应用中获取到的信息,其中.corpid、appsecret用于获取accesstoken,agentid用于往应用发送消息  2.由于zabbix会往脚本中传入3个参数,分别为sendto(收件人)、subject(报警主题)、message(报警信息)。这3个参数需要在zabbix中配置,我们下面会讲到。

此脚本中我们没有接受subject参数,而是直接使用sendto及message参数。  另经测试添加toparty部门变量后,发现报警信息会重复发送,因此在此注释掉。  具体的报警发送信息,我们通过脚本打印在日志weixin.log中。

二、zabbix配置 1.报警媒介类型 

这里写图片描述
这里写图片描述

zabbix3.4版本要添加这三个参数,用于发给weixin.py。  2.添加动作  事件源选择“触发器”,然后“创建动作”  (1)动作 

这里写图片描述
这里写图片描述

注意:计算方式”与/或”,当维护状态非在维护 and 任意一个模板项有问题时,会触发此动作。  (2)操作 

这里写图片描述
这里写图片描述

“默认信息”就是发送到weixin.py脚本的message  “操作”可以定义此动作发送的接收人或接受组

代码语言:javascript
复制
#方便拷贝
Problem started at {EVENT.TIME} on {EVENT.DATE}
Problem name: {TRIGGER.NAME}
Host: {HOST.NAME}
Severity: {TRIGGER.SEVERITY}

Problem description: {ITEM.NAME}:{ITEM.VALUE}
{TRIGGER.URL}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

(3)恢复操作 

这里写图片描述
这里写图片描述

此操作就是故障恢复时发送恢复报警信息。

代码语言:javascript
复制
#方便拷贝
Problem has been resolved at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}
Problem name: {TRIGGER.NAME}
Host: {HOST.NAME}
Severity: {TRIGGER.SEVERITY}

Problem description: {ITEM.NAME}:{ITEM.VALUE}
{TRIGGER.URL}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

(4)确认操作 

这里写图片描述
这里写图片描述

此操作就是监控人员在zabbix网页中确认问题并关闭问题后发送的确认信息,这也是3.4版本和某些低版本不同的地方。

代码语言:javascript
复制
#方便拷贝
{USER.FULLNAME} acknowledged problem at {ACK.DATE} {ACK.TIME} with the following message:
{ACK.MESSAGE}

Current problem status is {EVENT.STATUS}
  • 1
  • 2
  • 3
  • 4
  • 5

3.给用户添加报警媒介  管理–用户,选择属于web_admin组中的一个用户,然后选择“报警媒介”-“添加” 

这里写图片描述
这里写图片描述

注意:收件人为企业号-通讯录中成员账号,是成员的唯一标识。

三、测试 当上面的几步操作完成后,我们先对脚本进行测试。

代码语言:javascript
复制
#最好使用zabbix用户测试,来排除权限问题
python weixin.py opt test test
#opt为消息接收账号
  • 1
  • 2
  • 3

执行完成后,企业号就会收到测试信息,然后再停止某一服务,通过zabbix报警查看微信是否能接收到信息。

weixin.py脚本通过zabbix报警使用的是zabbix用户,因此请确认脚本及日志是否具有权限。

微信报警信息如下:  第一条是报警信息  第二条是故障恢复信息

这里写图片描述
这里写图片描述

(adsbygoogle = window.adsbygoogle || []).push({});

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018/06/14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 微信企业号
  • zabbix server端配置
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档