栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Zabbix监控通过企业微信报警

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Zabbix监控通过企业微信报警

随着网络技术的发展,作为开发人员,虽然现在运维人员的分类越来越细致,但是知道监控系统还是非常有必要的。

今天简单介绍一下我们线上环境使用的监控系统zabbix,zabbix的报警媒介支持很多种,zabbix支持的报警媒介如下:

目前常用的应该是email或者短信通知,甚至是电话通知,目前我们使用的是email + 企业微信 两种报警方式,企业微信主要提高报警的及时性,主要还是零成本,这种方式对于线上问题的发现提供便利。

以下分享zabbix和企业微信的报警配置,zabbix通过执行Python脚本,把报警信息推送到企业微信。用户需要提前申请企业微信,获取相关参数配置到Python脚本中。

通过Python脚本实现:

#!/usr/bin/python
#_*_coding:utf-8 _*_

import requests,sys,json
import urllib3
import os
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('/usr/lib/zabbix/alertscripts', 'wx.log'),
filenode = 'a')
urllib3.disable_warnings()

reload(sys)
sys.setdefaultencoding('utf-8')

proxies={
'http':'**',
'https':'**'
}

tmp_name='/usr/lib/zabbix/alertscripts/data/zabbix_wechat_config.json'

def GetTokenFromServer(Corpid,Secret):
    Url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken"
    Data = {
        "corpid":Corpid,
        "corpsecret":Secret
    }
    r = requests.get(url=Url,params=Data,verify=False,proxies=proxies)
    #print(r.json())
    if r.json()['errcode'] != 0:
        return False
    else:
        Token = r.json()['access_token']
        #file = open(tmp_name, 'w')
        #file.write(r.text)
        #file.close()
        return Token

def SendMessage(User,Agentid,Subject,Content):
    #try:
    #    file = open(tmp_name, 'r')
    #    Token = json.load(file)['access_token']
    #    file.close()
    #except:
    #    Token = GetTokenFromServer(Corpid, Secret)
    Token = GetTokenFromServer(Corpid, Secret)

    n = 0
    Url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s" % Token
    Data = {
        #"touser": User,                                 # 企业号中的用户帐号,在zabbix用户Media中配置,如果配置不正常,将按部门发送。
        #"totag": Tagid,                                # 企业号中的标签id,群发使用(推荐)
        "toparty": User,                             # 企业号中的部门id,群发时使用。
        "msgtype": "text",                              # 消息类型。
        "agentid": Agentid,                             # 企业号中的应用id。
        "text": {
            "content": Subject + 'n' + Content
        },
        "safe": "0"
    }
    r = requests.post(url=Url,data=json.dumps(Data),verify=False,proxies=proxies)
    while r.json()['errcode'] != 0 and n < 4:
        n+=1
        Token = GetTokenFromServer(Corpid, Secret)
        if Token:
            Url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s" % Token
            r = requests.post(url=Url,data=json.dumps(Data),verify=False,proxies=proxies)
            #print(r.json())

    return r.json()


if __name__ == '__main__':
    User = sys.argv[1]           # zabbix传过来的第一个参数
    Subject = str(sys.argv[2])   # zabbix传过来的第二个参数
    Content = str(sys.argv[3])   # zabbix传过来的第三个参数

    Corpid = "**需要替换**"    # CorpID是企业号的标识
    Secret = "**需要替换**"    # Secret是管理组凭证密钥
    #Tagid = "1"              # 通讯录标签ID
    Agentid = "**需要替换**"   # 应用ID
    #Partyid = "1"            # 部门ID

    Status = SendMessage(User,Agentid,Subject,Content)
    print Status

zabbix中的一些配置如下

1、管理 -> 报警媒介类型配置:

2、配置 -> 动作:

 

3、配置 -> 主机

触发器配置

web场景配置

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/753145.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号