实现思路

  • 申请微信企业号

    • 为什么使用微信企业号

      • 首先公众号任何人都可以关注,关注即可以收到告警,容易造成信息泄露
      • 企业号需要管理员先创建企业通讯录,才可以关注,更加私密
  • 编写微信通知脚本
  • zabbix配置微信通知

步骤

  • 配置脚本,脚本需要python3环境,需要requests库
    vim weixin_alerts.py ```python

    !/usr/local/bin/python3

    -- coding: utf-8 --

    author: liangliang.yu

    date: 2019-06-21

    comment: zabbix接入微信报警脚本

import requests import sys import os import json import logging

logging.basicConfig(level=logging.DEBUG, format=’%(asctime)s, %(filename)s, %(levelname)s, %(message)s’, datefmt=’%a, %d %b %Y %H:%M:%S’, filename=os.path.join(‘/data/zbx_script’, ‘weixin.log’), filemode=’a’)

corpid = ‘ww28d5a8015ec77135’ appsecret = ‘81WVpJo5Zm0gPHLBr2nvmiOTMcLGEAHdzOL8h5SW8Bw’ agentid = 1000002

获取accesstoken

token_url = ‘http://qyapi.weixin.qq.com:7505/cgi-bin/gettoken?corpid=‘ + corpid + ‘&corpsecret=’ + appsecret req = requests.get(token_url) accesstoken = req.json()[‘access_token’]

发送消息

msgsend_url = ‘http://qyapi.weixin.qq.com:7505/cgi-bin/message/send?access_token=‘ + accesstoken

touser = sys.argv[1] subject = sys.argv[2] message = sys.argv[3]

params = { “touser”: touser, “msgtype”: “text”, “agentid”: agentid, “text”: { “content”: message }, “safe”: 0 }

req = requests.post(msgsend_url, data=json.dumps(params))

print(req.text) print(‘sendto:’ + touser + ‘;;subject:’ + subject + ‘;;message:’ + message) logging.info(‘sendto:’ + touser + ‘;;subject:’ + subject + ‘;;message:’ + message) ```

  • 注意:为了调试方便增加了日志记录,如果配置到报警中,需要给这个日志文件zabbix用户可写权限,否者微信通知会失败。

    • zabbix配置接入微信告警
  • 报警媒介类型配置
    image-20190625101546849
    image-20190625101624117
    {ALERT.SENDTO}:发送给某用户
    {ALERT.SUBJECT}:标题
    {ALERT.MESSAGE}:发送告警信息

  • 添加用户
    指定用户的收件人及使用的报警媒介,收件人必须为企业号中的唯一用户ID
    image-20190625102004863

  • 配置告警动作
    image-20190625102910801

  • 接收实例
    image-20190625103240934