今天继续给大家介绍Linux运维相关知识,本文主要内容是zabbix微信报警实战。

一、企业微信设置

首先,我们要进行企业微信的设置。创建一个企业微信,并在该企业微信下创建部门,并且向部门中加入几个用户,如下所示:

接下来,我们需要在应用管理页面上创建一个应用程序,并且将可见范围设置为我们的部门,如下所示:

完成创建后,我们可以查看应用程序的Agentd号和Secret号,如下所示:

至此,我们需要记下小程序的Agentd号、Secret号以及部门号在,这些信息会在后面的配置中用到。

二、zabbix server报警脚本配置

接下来,我们需要在zabbix server端进行配置,写一个微信报警的脚本。
微信报警脚本如下所示:

#!/usr/bin/python2.7
#_*_coding:utf-8 _*_
#auther:muquanimport requests,sys,json
import urllib3
urllib3.disable_warnings()reload(sys)
sys.setdefaultencoding('utf-8')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)print(r.json())if r.json()['errcode'] != 0:return Falseelse:Token = r.json()['access_token']file = open('/tmp/zabbix_wechat_config.json', 'w')file.write(r.text)file.close()return Tokendef SendMessage(User,Agentid,Subject,Content):try:file = open('/tmp/zabbix_wechat_config.json', 'r')Token = json.load(file)['access_token']file.close()except:Token = GetTokenFromServer(Corpid, Secret)n = 0Url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s" % TokenData = {#"touser": User,                                 # 企业号中的用户帐号,在zabbix用户Media中配置,如果配置不正常,将按部门发送。#"totag": Tagid,                                # 企业号中的标签id,群发使用(推荐)"toparty": 2,                            # 企业号中的部门id,群发时使用。"msgtype": "text",                              # 消息类型。"agentid": 1000002,                             # 企业号中的应用id。"text": {"content": Subject + '\n' + Content},"safe": "0"}r = requests.post(url=Url,data=json.dumps(Data),verify=False)while r.json()['errcode'] != 0 and n < 4:n+=1Token = GetTokenFromServer(Corpid, Secret)if Token:Url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s" % Tokenr = requests.post(url=Url,data=json.dumps(Data),verify=False)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"                                                                        # 通讯录标签IDAgentid = "1000001"                                                                 # 应用ID#Partyid = "1"                                                                      # 部门IDStatus = SendMessage(User,Agentid,Subject,Content)print Status

Corpid、Secret、toparty和agentid分别表示企业号、密钥、部门ID和应用程序ID,我们需要根据实际情况进行填写。此外,由于这个脚本由Python编写,因此,我们将该脚本命名为wechat_alert.py,并将其放入/usr/loca/zabbix/alertscripts/目录下,并授予其可执行权限。同时,由于该脚本调用了request模块,因此,我们还需要安装request,执行命令:

pip install request

执行命令过程如下所示:

完成脚本编写后,我们还需要设置zabbix服务端查找脚本的路径,打开zabbix server端配置文件/usr/local/zabbix/etc/zabbix_server.conf,在其中找到AlertScriptsPath参数,将其修改为我们存放脚本的位置/usr/local/zabbix/scriptsalert/。
完成配置后,即可重启zabbix server服务。

三、zabbix web端配置

接下来,我们来进行zabbix web端的配置。我们的目的是实现zabbix server端使用我们的自定义脚本,最终实现微信告警。关于动作和触发器的配置在
zabbix详解(七)——zabbix邮件报警设置一文中已经介绍过了,在这里就不过多赘述了,在这里仅说明一下报警媒介的添加。
进入报警媒介添加页面后,我们将类型选择为脚本,然后填写好报警媒介名称和脚本名称。脚本名称必须与我们自定义脚本的文件名相同。我们的脚本需要添加三个脚本参数,如下所示:

{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}

添加完成后的页面如下所示:

四、效果检验

在完成上述配置后,我们来进行配置效果的检验,触发zabbix客户端失联报警,结果如下所示:

从上图可以看出,我们的zabbix能够正常调用我们的微信报警脚本,实现微信报警,zabbix微信报警实战成功!
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

zabbix详解(十三)——zabbix微信报警实战相关推荐

  1. 微信支付 php详解,PHP实现微信支付实战案例详解

    这次给大家带来PHP实现微信支付实战案例详解,PHP实现微信支付的注意事项有哪些,下面就是实战案例,一起来看一下. 前期准备: 1.微信认证服务号,并且开通了微信支付 2.微信支付SDK,下载地址:h ...

  2. Android Studio 插件开发详解三:翻译插件实战

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78113868 本文出自[赵彦军的博客] 系列目录 Android Gradle使用 ...

  3. linux防火墙ddos,Linux iptables防火墙详解 + 配置抗DDOS***策略实战

    Linux iptables防火墙详解 + 配置抗DDOS***策略实战 Linux 内核中很早就实现了网络防火墙功能,在不同的Linux内核版本中,使用了不同的软件实现防火墙功能. 在2.0内核中, ...

  4. pyzabbix 删除触发器_zabbix设置邮件报警, Zabbix常用Key值, zabbix触发器表达式详解, zabbix制作自己模板...

    zabbix设置邮件报警 方法一:说明此方法,会产生中文乱码问题 第一步:首先安装mailx组件并配置好能够通过三方邮箱发送邮件 yum -y install mailx 然后编辑mailx的配置文件 ...

  5. python编程入门与案例详解pdf-Flutter技术入门与实战 PDF 清晰版

    给大家带来的一篇关于Flutter相关的电子书资源,介绍了关于Flutter入门.Flutter实战.Flutter技术方面的内容,本书是由机械工业出版社出版,格式为PDF,资源大小162.5 MB, ...

  6. xuelipay 个人即时到账收款平台 原理及源码详解 支持支付宝微信

    现状及解决原理 1.1 现状 1.2 原理 1.3 例子 收款到完成收款过程源码详解 1 上传账户的收款码 2.2 创建订单 2.3 手机app 监听 2.4 服务器处理付款完成通知 漏单原理及漏单的 ...

  7. Flutter完整开发实战详解(二、 快速开发实战篇) | 掘金技术征文

     作为系列文章的第二篇,继<Flutter完整开发实战详解(一.Dart语言和Flutter基础)>之后,本篇将为你着重展示:如何搭建一个通用的Flutter App 常用功能脚手架,快速 ...

  8. 机器学习:基于概率的朴素贝叶斯分类器详解--Python实现以及项目实战

    前言 前篇基础理论知识:机器学习:贝叶斯分类器详解(一)-贝叶斯决策理论与朴素贝叶斯 这篇主要使用代码实现贝叶斯分类. 一.准备数据 创建一个bayes.py程序,从文本中构建词向量,实现词表向向量转 ...

  9. 《Kali Linux高级渗透测试原书第2版》网络渗透测试技术书 无线网络渗透测试详解 黑客攻击与防范实战从入门到精通书

    内容简介: KaliLinux面向专业的渗透测试和审计,集成了大量挑选的检测工具.本书在KaliLinux平台上从一个攻击者的角度来审视网络框架,详细介绍了攻击者"杀链"采取的具体 ...

  10. 数字音频总线A2B开发详解十三(A2B-SigmaStudio配置程序的小技巧-子程序设计)

    作者的话 我们在做A2B的过程中,会涉及到SimgaStudio工程的开发,举个例子,ADAU1452的Master工程,ADI给的配置工程非常繁琐,把整个软件屏幕都占满了,那么我们想要在上面继续做算 ...

最新文章

  1. 详解Linux2.6内核中基于platform机制的驱动模型 (经典)
  2. android o preview 3,Android O Preview 之 通知渠道(Notification Channels)
  3. ​Java Map中那些巧妙的设计
  4. 获取系统当前日期时间
  5. 虚拟机中运行windows内核
  6. TCPIP详解学习笔记-UDP协议
  7. 深度学习——VGG16模型详解
  8. 【智慧医疗】破解医疗数据孤岛,实现信息共享
  9. 图层蒙版和图层剪贴路径_四种PS蒙版的运用:快速蒙版、图层蒙版、矢量蒙版、剪切蒙版...
  10. 记一次halo博客ssl证书过期处理过程
  11. Date对象之获取和设置月份getMonthsetMonth
  12. Unity3D自制横版闯关游戏手册(1)
  13. 关于oxc000007b错误的解决办法
  14. 一键翻译PDF神器|网称最强翻译软件
  15. 建造者模式和桥接模式,答应我告别ifelse好吗?
  16. python星号和双星号的区别
  17. Nexus 07 制品库制品晋级实践
  18. 由“最惨创业者”事件引起的“风险法则”与“生存法则”共生思考
  19. 新概念2 课文和单词(5)
  20. C语言求1000以内的所有水仙花数

热门文章

  1. 遗传算法初学-旅行商问题
  2. pytorch---模型保存于加载(4)在一个文件中保存多个模型
  3. 筹备两年,60万字诚意续作《腾讯游戏开发精粹Ⅱ》正式发布
  4. Media Queries移动设备样式
  5. 他山之石 可以攻玉-《海量数据库解决方案I》
  6. mybatis update 不为空的_详解MyBatis-Plus updateById方法更新不了空字符串/null解决方法...
  7. 通用html解析器,razor-从外部存储的.cshtml解析Rarzor HTML帮助器
  8. Vue中无法更改element ui组件样式问题
  9. 使用spring拦截器手写权限认证框架
  10. 基于react-app搭建react-router+redux项目