zabbix使用企业微信监控报警
1.注册企业微信
使用企业微信报警需要先注册企业微信
企业微信地址:https://work.weixin.qq.com/
填写注册信息即可
注册完成
2.创建报警机器人
2.1.创建应用
应用管理—应用—创建应用
2.2.编辑应用信息
设置机器人log、描述信息、应用部门
2.3.创建成功
最主要的就是这两个信息
AgentId 1000002
Secret iV9ljCjBVm2BvFWd-t0rZGTakxaH2izz7degTA41naI
3.微信关联企业微信接收报警内容
点击我的企业—微信插件—找到二维码扫描关注即可接收企业微信报警信息
扫描二维码关注我的企业接收报警信息
手机微信查看
3.命令行测试发现微信消息
3.1.获取企业ID
点击我的企业—企业信息—企业ID
ww48f74fc8ed3a07ba
3.2.获取应用ID和密码
点击应用管理—找到对应的应用—复制AgentId、Secret的值
AgentId 1000002
Secret iV9ljCjBVm2BvFWd-t0rZGTakxaH2izz7degTA41naI
3.3.准备Python脚本发生消息至企业微信
将前两步准备好的企业ID、应用ID、应用密码等信息填入到Python脚本中
每次使用的时候只需要修改17、18、19行即可
corpid=‘xx’ #企业ID
appsecret=‘xx’ #应用密码
agentid=xx #应用ID
#!/usr/bin/env python
#-*- coding: utf-8 -*-
#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('/tmp','weixin.log'),
filemode = 'a')
corpid='ww48f74fc8ed3a07ba' #企业ID
appsecret='iV9ljCjBVm2BvFWd-t0rZGTakxaH2izz7degTA41naI' #secret
agentid=1000002 #AgentID
#获取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)
3.4.将脚本上传至zabbix-server并测试发生报警内容
1.准备Python环境安装所依赖的模块
安装Python2-pip时依赖epel源提前准备好
[root@zabbix-server ~]# yum -y install python2-pip
2.去清华源找到对应的加速器并安装缺少的模块
这个地址有加速器的使用方法https://mirrors.tuna.tsinghua.edu.cn/help/pypi/
[root@zabbix-server ~]# pip install -i https://pypi.tuna.tsinghua.edu.cn/simple request
3.命令行测试并发生内容到微信
[root@zabbix-server ~]# python weixin.py JiangXiaoLong 'ceshi' 'ceshi'
语法格式:python 脚本名 要发生给谁 '标题' '内容'
要发生给谁可以在企业微信部门中找到要发生的人点进去即可看到账号信息
微信查看消息有没有收到
4.zabbix实现企业微信报警
4.1报警内容
报警内容
发生的
问题发生
当前状态: 未解决❎️
告警主机: {HOSTNAME1}
告警时间: {EVENT.DATE} {EVENT.TIME}
告警等级: {TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目: {TRIGGER.KEY1}
问题详情: {ITEM.NAME}:{ITEM.VALUE}
事件ID: {EVENT.ID}
恢复的
问题恢复
当前状态: 已处理✅
告警主机: {HOSTNAME1}
告警时间: {EVENT.DATE} {EVENT.TIME}
告警等级: {TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目: {TRIGGER.KEY1}
问题详情: {ITEM.NAME}:{ITEM.VALUE}
事件ID: {EVENT.ID}
4.2.删除命令行测试生成的报警日志
由于我们测试是以root身份测试的,如果不删除,zabbix报警的时候则无法报警,会提示无权限讲报警信息写入到日志
[root@zabbix-server ~]# rm -rf /tmp/weixin.log
4.3.将报警脚本移动至zabbix报警脚本目录中
1.获取报警脚本存放路径
[root@zabbix-server ~]# egrep -v '^$|^#' /etc/zabbix/zabbix_server.conf
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_server.pid
SocketDir=/var/run/zabbix
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=123456
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=30
AlertScriptsPath=/usr/lib/zabbix/alertscripts #这个目录存放报警脚本
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
2.移动报警脚本至脚本目录
[root@zabbix-server ~]# mv weixin.py /usr/lib/zabbix/alertscripts/
4.4.新建微信报警媒介-定义发件人
点击管理—报警媒介类型—新增报警媒介—填写名称—类型选择脚本—添加三个脚本参数
{ALERT.SENDTO} //发件人
{ALERT.SUBJECT} //标题
{ALERT.MESSAGE} //内容
创建成功
4.5.定义收件人
点击用户—报警媒介—添加—类型选择微信报警—收件人可以从企业微信上获取—添加—更新
4.6.停用之前的邮箱报警
4.7.触发主机宕机告警并查收报警消息
随便找一台监控主机执行poweroff
[root@192_168_81_220 ~]# poweroff
仪表盘已经报警
动作日志中提示已经送达
查看问题发生报警消息
查看问题恢复报警消息
4.8.触发终端打开数并查收报警消息
这里可以看到192.168.81.230这台机器的最大打开终端数量是3个,超过3个就会报警
已经报警
查看报警内容