zabbix 微信报警

版权声明:QQ:1009002494 https://blog.csdn.net/Doudou_Mylove/article/details/84241802

微信报警

 

首先申请一个企业号:https://qy.weixin.qq.com/

1、通讯录添加企业成员:

  1. 创建子部门:

  1. 创建新应用:

  1. 给部门设置管理员:

 

我们要准备这些东西:

一个微信企业号

企业号已经被部门成员关注

企业号里有一个可以发消息的应用

一个授权管理员,可以使用该应用给成员发消息

 

我们要取到这些信息,这五个信息在微信报警脚本中全部要用到:

成员账号

组织部门ID

应用ID(agentid)和Secret

企业标识(CropID)

这个位置最下面

 

编写微信报警Python脚本

默认yum安装的zabbix脚本目录是/usr/lib/zabbix/alertscripts

vim weixin.py

#!/usr/bin/env python
#-*- coding: utf-8 -*-
#author: xx
#date: 2018
#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/lib/zabbix/alertscripts','weixin.log'),
filemode = 'a')

corpid='ww39622e6185e63612'    #CorpID是企业号的标识
appsecret='bmrb_sHGS2rAPi-YdWq3M1AUb73EBSeo00po4BsFWVo'  #是管理组凭证密钥
agentid=1000003			#企业号中的应用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[3]

params={
                   "touser": "LiJunMin",#企业号中的用户帐号,在zabbix用户Media中配置,如果配置不正常,将按部门发送
				   "toparty": "2",#企业号中的部门id
                   "msgtype": "text",#消息类型
                   "agentid": "1000003", #企业号中的应用id,同上agentid号
                   "text": {
                            "content": message
                   },
                   "safe":0
}

req=requests.post(msgsend_url, data=json.dumps(params))

logging.info('sendto:' + touser + ';;subject:' + subject + ';;message:' + message)

 

#添加权限
chmod +x weixin.py
touch weixin.log
chown zabbix.zabbix weixin.log

 

然后配置zabbix  web端

创建一个微信报警用户(也可直接用管理用户admin,“可选”)

示警媒介配置

添加动作

故障与恢复信息模板

故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!

告警主机:{HOSTNAME1}

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

告警等级:{TRIGGER.SEVERITY}

告警信息: {TRIGGER.NAME}

告警项目:{TRIGGER.KEY1}

问题详情:{ITEM.NAME}:{ITEM.VALUE}

当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}

事件ID:{EVENT.ID}

 

恢复{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复!

告警主机:{HOSTNAME1}

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

告警等级:{TRIGGER.SEVERITY}

告警信息: {TRIGGER.NAME}

告警项目:{TRIGGER.KEY1}

问题详情:{ITEM.NAME}:{ITEM.VALUE}

当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}

事件ID:{EVENT.ID}

 

动作操作配置

 

 

最后测试

#最好用zabbix用户来测试,来排除权限问题

python weixin.py [email protected] test test

如果你企业微信收到test信息说明脚本通信OK。

如果执行的时候有如下报错就重新安装缺少的模块

[root@pek1-perl62022 alertscripts]# python weixin.py [email protected] weixin weixin
Traceback (most recent call last):
  File "weixin.py", line 7, in <module>
    import requests
ImportError: No module named requests
提示没有requests

重新安装requests模块即可
[root@pek1-perl62022 alertscripts]# yum install python-requests -y

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

例如停掉MySQL服务:

 一分钟后web端检测中的仪表盘和微信就会同时报警

 

微信报警到此结束!

 

 

猜你喜欢

转载自blog.csdn.net/Doudou_Mylove/article/details/84241802