【逗老师带你学IT】阿里云监控报警回调+转发企业微信+转发SnmpTrap+PRTG

本文解决了一个阿里云监控和告警中比较常见的问题。
如何让阿里云的告警推送到企业微信和第三方监控平台,本文使用报警回调+企业微信webhook+snmptrap的方式推送告警。
本文涉及的知识点:

  1. 阿里云监控报警回调
  2. Python Django搭建HTTP API服务器
  3. 企业微信webhook推送接口
  4. Python 发送SnmpTrap消息
  5. PRTG SNMP Trap收集程序

我会按照非代码开发者的基础能力来讲解这些知识点,不要慌,你只要稍微有一点点Python开发能力,跟着这篇文章你都可以学会以上各个知识点。
对于运维开发和其他开发者,直接去github下载。
本文涉及的代码上传带github,地址如下:

Public_Share_Project/阿里云报警回调+Django/

目录

  • 一、阿里云报警回调
    • 1、报警回调支持的监控类型
    • 2、配置报警回调
    • 3、调试报警回调
  • 二、搭建HTTP服务器
    • 1、搭建Django
    • 2、测试接口
    • 3、pip环境
  • 三、报警数据处理
    • 1、报警数据格式
    • 2、SNMP_Trap模块发送trap告警
    • 3、企业微信webhook消息推送模块
    • 4、整合、部署项目
  • 四、PRTG添加SNMP Trap告警监控
    • 1、添加传感器
    • 2、配置传感器端口
    • 3、配置Trap告警过滤器
    • 4、查看告警历史消息
  • 搞定!

一、阿里云报警回调

官方文档:
文档中心>云监控>报警服务>报警规则>使用报警回调

1、报警回调支持的监控类型

报警回调功能属于云监控产品下的功能,因此支持大部分云监控产品内的报警输出,主要有和两大类报警。
举个栗子,ECS CPU使用量超过80%这个情况,可以触发阈值报警。ECS出现重启,可以触发之间报警。关于两大类报警如何定义,本文不做深入研究,各位可以结合自身业务场景自由定义。

但是,报警回调不支持由其他业务系统直接触发的报警。

目前阿里云上的业务,例如智能DNS的产品,尚没有接入云监控。此类产品的告警由产品本身发出,只能通过邮件或者钉钉机器人的方式发送。不过好在阿里云绝大部分产品已经接入云监控,并且后续会继续增加。
已经接入云监控的产品如下:

【逗老师带你学IT】阿里云监控报警回调+转发企业微信+转发SnmpTrap+PRTG
URL的接口地址,是下文我们即将搭建的服务器地址。

3、调试报警回调

临时增加一个事件告警规则,选择某一个具体的云产品,以及某几个告警内容,如下图所示:

【逗老师带你学IT】阿里云监控报警回调+转发企业微信+转发SnmpTrap+PRTG
临时创建一个模拟事件,然后先不需要修改任何报警内容,直接发送。如果不报错,那么恭喜你,添加报警回调接口这个事情已经完成了。
【逗老师带你学IT】阿里云监控报警回调+转发企业微信+转发SnmpTrap+PRTG

虽然我们的本机拒绝处理这个请求,但是可以看到内容格式是一个JSON,字段也是符合我们预期的。

二、搭建HTTP服务器

既然阿里已经开始向我们自定义的地址推送消息了,那么我们接下来就搭建一台服务器,接收并处理这些消息。
本文涉及的代码上传带github,地址如下:
Public_Share_Project/阿里云报警回调+Django/

1、搭建Django

之前我写过一篇文章,各位在搭建Django是有问题,可以参照这篇文章指引。
【逗老师带你学IT】Django+IIS+Python构建微软AD域控API管理中心
操作到下图这一步的时候,就可以回来继续读这篇文章了。

【逗老师带你学IT】阿里云监控报警回调+转发企业微信+转发SnmpTrap+PRTG

然后模拟一次报警后,打开可以看到如下日志:
好了,到这一步,我们已经可以接收阿里云的报警回调数据了。

3、pip环境

本文需要安装俩包

三、报警数据处理

1、报警数据格式

通过刚才抓到的报警日志,可以看到报警回调接口推送的是一个JSON格式的数据,我们将数据格式化后,能看到几个关键的字段。

我们从中抽取我们感兴趣的字段。本文示例抽取了以下字段内容

字段 含义
product 云产品名称
||等
level 告警级别
|等
regionId 产品所在地域
instanceName 示例名称
name 告警内容

对于以上这5个感兴趣的字段,写告警处理模块的关键代码如下:
此文件位于

2、SNMP_Trap模块发送trap告警

对于第三方网管平台,可以通过很多办法传递告警消息,例如SNMP,API,syslog等。本文举例通过SNMP_Trap的方式将告警消息推送到其他告警平台

来源:逗老师

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年11月13日
下一篇 2020年11月13日

相关推荐