zoukankan      html  css  js  c++  java
  • 微信告警实现

    zabbixversion:3.2.8

    一、微信申请设置

    1.注册企业微信
    qy.weixin.qq.com
    2.管理通讯录,添加成员
    3.设置部门,分配成员
    4.自定义企业应用,记录以下三个值
    CorpID:
    AgentId(应用id):
    Secret:

    5.调试接口
    qydev.weixin.qq.com/debug

    二、zabbix设置

    1.编写微信发送信息脚本
    测试
    python sendwechat.py @all Sub_T "test the function of sendwechat"
    python sendwechat.py 企业微信通讯录里的微信账号 T "test the function of sendwechat7"

    #!/bin/env python
    # -*- coding: UTF-8 -*-
    import time
    import urllib,urllib2
    import json
    import sys
    
    default_encoding = 'utf-8'
    if sys.getdefaultencoding() != default_encoding:
    reload(sys)
    sys.setdefaultencoding(default_encoding)
    
    class WeChat():    
    def __init__(self,touser,corpid,secret,content):
    self.gettoken_url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + secret 
    def get_access_token(self,url):
    try:    
    token_file = urllib2.urlopen(url)    
    except urllib2.HTTPError,e:
    logFile = open('/tmp/zabbix.log','a')
    print >>logFile,e.code
    print >>logFile,e.read().decode("utf8")    
    logFile.close()
    token_data = token_file.read().decode('utf-8') 
    token_json = json.loads(token_data) 
    token_json.keys() 
    token = token_json['access_token'] 
    return token    
    def send_messages(self,touser,content,access_token):
    try: 
    post_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + access_token
    message_template = { 
    "touser":touser,
    "toparty":"1", 
    "msgtype":"text", 
    "agentid":"1", 
    "text":{ 
    "content":content 
    }, 
    "safe":"0" 
    } 
    main_messages = json.dumps(message_template, ensure_ascii=False,encoding='UTF8') 
    request = urllib2.Request(post_url, main_messages) 
    response = urllib2.urlopen(request)
    msg = response.read()
    except Exception,e:
    logFile = open('/tmp/zabbix.log','a')
    print >>logFile,e
    logFile.close()
    sys.exit()
    return msg 
    if __name__ == '__main__':
    corpid = "申请企业微信号时会自动生成"
    secret = "创建应用时会自动生成"
    logFile = open('/tmp/zabbix.log','a')
    try:
    touser = sys.argv[1]
    subject = sys.argv[2]
    content = str(sys.argv[3])    
    msg_sender = WeChat(touser,corpid,secret,content)
    access_token = msg_sender.get_access_token(msg_sender.gettoken_url)    
    print >>logFile, msg_sender.send_messages(touser,content,access_token) 
    except Exception,e:
    print >>logFile, e

    2.web页面配置

     

     遇到的问题:

    在配置完微信告警后,发现trigger无法触发action,日志里面也没有记录。追查原因发现,原来是scripts输出日志的属主是root,zabbix没有权限操作。修改为zabbix后成功发送微信告警。

     

     

  • 相关阅读:
    oracle登陆认证方式
    oracle用户管理
    oracle sqlplus常用命令
    瀑布开发模式和敏捷开发模式
    在C#中用RX库和await来实现直观的状态机
    C#实现简单的字符串加密
    双屏办公之体会
    利用json2csharp快速生成C#类
    .Net中的插件框架Managed Extensibility Framework
    解决NVidia显卡最大化和最小化窗口时的卡顿问题
  • 原文地址:https://www.cnblogs.com/janehoo/p/7685611.html
Copyright © 2011-2022 走看看