1、下载手机企业微信
2、创建一个企业
3、电脑登录
下拉
创建成功后把 这记录下来 后面会用
AgentId 1000002
Secret RroB-PrX4crYoE-C0ubxdXAKKrRyaxVqzJfonGWHdEo
部门id 也记下来
企业id也记下来
服务端操作
python报警监控脚本
需要修改脚本中的四个信息:
self.__corpid = 'wwd5348195e1cd' //公司的corpid
self.__secret = '2QvlfpUxh4k-JeIVNmkh2N7ijfkCs1lzb4Tkgr6xQ' //应用的secret
'toparty':1, //部门id
'agentid':"1000002", //应用id
[root@zabbix-server ~]# vim /usr/lib/zabbix/alertscripts/wechat.py
打开写入如下内容 修改上面说的四个地方
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import urllib,urllib2,json
import sys
reload(sys)
sys.setdefaultencoding( "utf-8" )
class WeChat(object):
__token_id = ''
# init attribute
def __init__(self,url):
self.__url = url.rstrip('/')
self.__corpid = 'wwd5348195e1cdd809'
self.__secret = '2QvlfpUxh4k-JeIuxVNmkh2N7ijfkCs1lzb4Tkgr6xQ'
# Get TokenID
def authID(self):
params = {'corpid':self.__corpid, 'corpsecret':self.__secret}
data = urllib.urlencode(params)
content = self.getToken(data)
try:
self.__token_id = content['access_token']
# print content['access_token']
except KeyError:
raise KeyError
# Establish a connection
def getToken(self,data,url_prefix='/'):
url = self.__url + url_prefix + 'gettoken?'
try:
response = urllib2.Request(url + data)
except KeyError:
raise KeyError
result = urllib2.urlopen(response)
content = json.loads(result.read())
return content
# Get sendmessage url
def postData(self,data,url_prefix='/'):
url = self.__url + url_prefix + 'message/send?access_token=%s' % self.__token_id
request = urllib2.Request(url,data)
try:
result = urllib2.urlopen(request)
except urllib2.HTTPError as e:
if hasattr(e,'reason'):
print 'reason',e.reason
elif hasattr(e,'code'):
print 'code',e.code
return 0
else:
content = json.loads(result.read())
result.close()
return content
# send message
def sendMessage(self,touser,message):
self.authID()
data = json.dumps({
'touser':touser,
'toparty':1,
'msgtype':"text",
'agentid':"1000002",
'text':{
'content':message
},
'safe':"0"
},ensure_ascii=False)
response = self.postData(data)
print response
if __name__ == '__main__':
a = WeChat('https://qyapi.weixin.qq.com/cgi-bin')
a.sendMessage(sys.argv[1],sys.argv[3])
监控脚本测试:
注:Youn为企业微信名 test为标题 yufei为内容,标题和内容均可自定义
[root@youngfit ~]# /usr/lib/zabbix/alertscripts/wechat.py Youn test yufei
{u'invaliduser': u'', u'errcode': 0, u'errmsg': u'ok'}
看下自己的企业微信是否收到信息
一般youn设置其他也能收到
名称:sendmail //名称任意
类型:脚本
脚本名称:sendmail.sh 自己写的脚本
脚本参数: //一定要写,否则可能发送不成功
{ALERT.SENDTO} //照填,收件人变量
{ALERT.SUBJECT} //照填,邮件主题变量,变量值来源于‘动作’中的‘默认接收人’
{ALERT.MESSAGE} //照填,邮件正文变量,变量值来源于‘动作’中的‘默认信息’
zabbix 添加告警用户
创建用户组:web-group,包含yangge、alice...等用户
创建用户:yangge、alice...等用户,并关联到微信告警
希望的结果是:发微信到组web-group,组中的用户yangge、alice都能收到
如果希望中文显示:
告警主机: {HOST.NAME}
告警地址: {HOST.IP}
监控项目: {ITEM.NAME}
告警等级: {TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警时间: {EVENT.DATE} {EVENT.TIME}
收到的信息
主机: 192.168.119.130
时间: 2020.03.25 19:49:22
级别: High
触发: HTTP service is down on 192.168.119.130
详情: nginx status:net.tcp.listen[80]:Up (1)
状态: nginx已启动
项目:net.tcp.listen[80]
事件ID:2548
主机: {HOST.NAME1}
时间: {EVENT.DATE} {EVENT.TIME}
级别: {TRIGGER.SEVERITY}
触发: {TRIGGER.NAME}
详情: {ITEM.NAME1}:{ITEM.KEY1}:{ITEM.VALUE1}
状态: {TRIGGER.STATUS}
项目:{TRIGGER.KEY1}
事件ID:{EVENT.ID}
被监控端操作
###### 测试微信报警
被监控端操作 这个机器要在你放入用户组权限的那个组机组里面才可以
[root@zabbix-agent-none1 ~]# systemctl stop nginx
查看自己的企业微信