一、企业微信操作
我们所需要的信息无法从PC端或者MD(移动端)中获取,所以我们需要进入企业微信的网页
我们需要获取:
①:应用ID
②:应用秘钥
③:部门ID
④:企业ID
1、点击应用管理,然后创建应用
image.png
2、应用logo和名称必须要填写,选择发送消息所在部门或个人
image.png
3、获取到Agentld和Secret
Agentld是应用ID
Secret是应用秘钥
4、然后我们还需要部门ID和企业ID
image.pngimage.png
二、zabbix操作
1、创建一个报警媒介类型
image.png2、创建用户
image.png image.png生产情况权限看需求给,实验中给了超级管理员权限
image.png
3、指定主机或主机群主,指定监控项,设置触发器
image.png image.png实验中监控的是http服务端口
4、设置动作
消息内容
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID :{EVENT.ID}
步骤1-0
image.png执行命令的前提:在/etc/sudoers中给zabbix用户提权,并且不需要密码
步骤1-2
恢复操作 image.png
5、在服务断添加脚本
查看脚本默认目录:
[root@192 ~]# cat /etc/zabbix/zabbix_server.conf | grep AlertScriptsPath | grep -v '#'
AlertScriptsPath=/usr/lib/zabbix/alertscripts
[root@192 ~]# cd /usr/lib/zabbix/alertscripts
[root@192 alertscripts]# vim wechat.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import urllib,urllib2,json
import sys
reload(sys)
sys.setdefaultencoding( "utf-8" )
corpid_main = 'ww1120bbc1c541de70' #企业ID
secret_main = 'nXJEdMsvPDL7upI-MJZZ5C_8g5v5HLxrLKwZEVNZBlA' #应用秘钥
toparty_main = 1 #部门ID
agentid_main = '1000002' #应用ID
class WeChat(object):
__token_id = ''
# init attribute
def __init__(self,url):
self.__url = url.rstrip('/')
self.__corpid = corpid_main
self.__secret = secret_main
# 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':toparty_main,
'msgtype':"text",
'agentid':agentid_main,
'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])
[root@192 alertscripts]# chmod a+x wechat.py
6、测试
将agent服务器的http服务停止
a4fc664219a4cd5b99ffcd5dde8c4d9.png查看企业微信PC端或者移动端
网友评论