公司最开始使用的邮件报警形式,但是用了一段时间发现实时性和查看上效果不是很好。于是打算使用企业微信像聊天一样来进行报警。
步骤:
首先登陆企业微信管理后台
记录好CorpID
在企业微信管理后台创建一个应用
设置好对应的报警人等信息,设置好可见范围(某些人或者某个部门),记录好这里的AgentId 和 Secret
记录着3个信息即可。
测试
wget https://raw.githubusercontent.com/OneOaaS/weixin-alert/master/weixin_linux_amd64
./weixin_linux_amd64 --corpid=ww9a86b983140c4039 --corpsecret=p1NFDde3dWC4a2xZ_LM1QXMNW9h_inQjR0ZkNj2ogPI --msg="test12332" --user=monitor --agentid=1000002
{"errcode":0,"errmsg":"ok","invaliduser":""}
提示:
--corpid= 我们企业里面的id
--corpsecret= 这里就是我们Secret里面的id
-msg= 内容
-user=我们邀请用户的账号
因为脚本是编译过的,无法进行编辑,我们可以使用./wechat -h or --help 查看
说明文档:https://work.weixin.qq.com/api/doc#10167
接口文档:http://qydev.weixin.qq.com/wiki/index.php?title=%E4%B8%BB%E5%8A%A8%E8%B0%83%E7%94%A8
调试工具:http://work.weixin.qq.com/api/devtools/devtool.php
下载安装requests(python脚本调用到)
/usr/local/python2.7.9/bin/pip install requests
编辑好python脚本
zabbix默认脚本存放位置:
查看 zabbix_server.conf 配置文件 AlertScripts 脚本放置路径:
cat /usr/local/zabbix/alertscripts/wechat.py
#!/usr/local/python2.7.9/bin/python2.7
# -*- coding: utf-8 -*-
# zabbix notification confirmation script
# python2.7 or above
import requests
import json
import os
import sys
#Toparty = "2" #部门id
AgentID = 1000005 #应用id
#修改为企业CropID和Secret
CropID = 'ww4ea11111189822'
Secret = 'ibHasd23423sdf4asdasdDSAstEA7XinGhgaFA0'
#获取Token
Gtoken ="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid="+ CropID + "&corpsecret=" + Secret
headers = {'Content-Type': 'application/json'}
json_data = json.loads(requests.get(Gtoken).content.decode())
token = json_data["access_token"]
#消息发送接口
Purl = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=" + token
#消息发送函数
def msg(user, title, message):
weixin_msg = {
"touser" : user,
"msgtype" : "text",
"agentid" : AgentID,
"text" : {
"content" : "%s\n%s" %(title, message)
},
}
print requests.post(Purl,json.dumps(weixin_msg),headers=headers)
if __name__ == '__main__':
user = sys.argv[1] #获取第一个参数
title = sys.argv[2] #获取第二个参数
message = sys.argv[3] #获取第三个参数
msg(user, title, message)
其他展示效果格式:
{
"touser" : "qy01ed14fb35f912079c395d425f",
"msgtype" : "news",
"agentid" : 1000005,
"news" : {
"articles" : [
{
"title" : "title",
"description" : "message",
"url" : "www.xlcwnet.com",
"picurl" : "http://res.mail.qq.com/node/ww/wwopenmng/images/independent/doc/test_pic_msg1.png",
"btntxt":"阅读全文"
}
]
}
}
{
"touser" : "qy01ed14fb35f912079c395d425f",
"msgtype" : "textcard",
"agentid" : 1000005,
"textcard" : {
"title" : "title",
"description" : "message",
"url" : "www.xlcwnet.com",
"btntxt":"更多"
},
}
{
"touser" : "qy01ed14fb35f912079c395d425f",
"msgtype" : "text",
"agentid" : 1000005,
"text" : {
"content" : "你的快递已到,请携带工卡前往邮件中心领取。\n出发前可查看<a href=\"http://work.weixin.qq.com\">邮件中心视频实况</a>,聪明避开排队。"
},
}
测试:
[root@localhost alertscripts]# ./weixin.py XXX subject body
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
设置收到报警的人员,在企业微信管理界面找到每个人的ID号,多个接收人以"|"符号来分开。
设置触发报警时候发送格式
大家可以参考下,直接复制过去用
告警主题:
[{TRIGGER.SEVERITY}]服务器:{HOSTNAME1}发生:{TRIGGER.NAME}故障!
告警内容:
地址:{HOST.IP}
告警主机: {HOSTNAME1}
主机分组: {TRIGGER.HOSTGROUP.NAME}
告警时间: {EVENT.DATE} {EVENT.TIME}
告警等级: {TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目: {TRIGGER.KEY1}
问题详情: {ITEM.NAME}:{ITEM.VALUE}
当前状态: {TRIGGER.STATUS}
事件 ID: {EVENT.ID}
告警恢复内容:
1恢复主题:
2[{TRIGGER.SEVERITY}]服务器:{HOSTNAME1}{TRIGGER.NAME}已恢复!
3恢复内容:
4告警主机: {HOSTNAME1}
5主机分组: {TRIGGER.HOSTGROUP.NAME}
6告警时间: {EVENT.DATE} {EVENT.TIME}
7告警等级: {TRIGGER.SEVERITY}
8告警信息: {TRIGGER.NAME}
9告警项目: {TRIGGER.KEY1}
10问题详情: {ITEM.NAME}:{ITEM.VALUE}
11当前状态: {TRIGGER.STATUS}
12事件 ID: {EVENT.ID}
至此设置完成!
创建主机 test15 ,设置个没有使用的 IP 为地址
日常使用效果
留言与评论(共有 0 条评论) |