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中做相关设置,下面是我们在实际测试中的信息提示载图:


赞(0) 更多分享

上篇: Grafana+Prometheus系统监控之钉钉报警功能
下篇: zabbix主机自动发现和监控