zabbix通过企业微信发送监控告警
2018/07 作者:ihunter 0 次 0
很好的监控线上业务,需要有及时提醒的告警功能,以便及时处理问题,在运维的监控工作中,告警大概有这么几种,一是邮件,较为传统,往往会被忽略,因为现在垃圾邮件实在太多,二是短信,这个比较有及时性,但有时也会有垃圾短信,一般情况下,人们的习惯是收到短信,都会看一眼!所以相对邮件关注率要高一些,第三种是通过钉钉或者企业微信这种做监控告警,目前来说,还是比较及时和重要的,因为办公信息,大家都很重视,因为大家都是自驱型人才,下面的python脚本,用于调用企业微信自定义应用来发送告警消息(或者这样说不准备,暂且这么说吧):
#!/usr/bin/python# --*-- coding:utf8 --*-- # Author: Jack.Z import json import sys import simplejson import requests def get_token(cid, secret): gettoken_url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + cid + '&corpsecret=' + secret try: req = requests.get(gettoken_url) except requests.HTTPError as e: print e.errno sys.exit() return json.loads(req.text)['access_token'] def send_data(token, account, subject_name, context): send_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + token send_values = { "touser": account, # 企业号中的用户帐号,在zabbix用户Media中配置,如果配置不正常,将按部门发送。 "toparty": "2", # 企业号中的部门id。 "msgtype": "text", # 消息类型。 "agentid": "1000002", # 企业号中的应用id。 "text": { "content": subject_name + '\n' + context }, "safe": "0" } data = simplejson.dumps(send_values, ensure_ascii=False).encode('utf-8') try: req = requests.post(send_url, data) except requests.HTTPError as e: print e.errno sys.exit() print req.text if __name__ == '__main__': user = str(sys.argv[1]) subject = str(sys.argv[2]) content = str(sys.argv[3]) corp_id = '*************' corp_secret = '******************' access_token = get_token(corp_id, corp_secret) send_data(token=access_token, account=user, subject_name=subject, context=content)
前提条件是: 你得有企业微信,然后呢,还要自建应用, 然后在zabbix中做相关设置,下面是我们在实际测试中的信息提示载图: