当前位置: 首页 > news >正文

智能联动第三方告警中心,完美实现故障响应全闭环

前言

我们曾讨论完善的告警策略是整个数据监控系统的重要组成部分(参见《机智的告警策略,完善监控系统的重要一环》),介绍了如何配置告警通知以及场景示例,帮助用户及时更多潜在的故障和问题,有效地保障系统稳定运行和持续优化。为了实现故障发现、告警、处理的全闭环,我们可以利用 Webhook 或者本地 DataFlux Func 联动第三方告警响应中心,建立一个自动化的故障处理流程,提高系统的稳定性和可靠性。本文将介绍在观测云中如何配置 Webhook 和本地 DataFlux Func 连接第三方系统,从而发送告警通知到用户。

Webhook 自定义告警通知

当您需要通过 Webhook 自定义来配置告警通知对象时,可以在观测云的监控 > 通知对象管理 > 新建通知对象,选择 Webhook 自定义并填写 URL 地址。

告警通知细节

观测云的 HTTP 告警通知为【固定格式的 POST 请求】,请求体格式为application/json,您可以参考以下请求详情示例:

POST {填写的 Webhook 地址}
Content-Type: application/json{"timestamp"               : 1625638440,"df_status"               : "warning","df_event_id"             : "event-xxxxxxxxxx","df_title"                : "web001 存在问题","df_message"              : "web001 存在问题、nCPU 使用率大于 90\n 内存使用率大于 90","df_dimension_tags"       : "{\"host\":\"web001\"}","df_monitor_id"           : "monitor_xxxxxxxxxx","df_monitor_name"         : "异常检测名","df_monitor_checker_id"   : "rul_xxxxxxxxxx","df_monitor_checker_name" : "异常检测项目名","df_monitor_checker_value": "99","df_event_link"           : "https://console.guance.com/keyevents/monitorChart?xxxxxxxxxx","df_workspace_uuid"       : "wksp_xxxxxxxxxx","df_workspace_name"       : "我的工作空间","Result"                  : 99,"... 其他更多字段": "略",// 以下为旧版字段"date"          : 1625638440,"workspace_uuid": "wksp_xxxxxxxxxx","workspace_name": "我的工作空间",
}

具体的字段说明,参见:事件 - 观测云文档
一般来说,对接第三方消息平台时,只需要用到 df_title 和 df_message 两个字段即可。

对接方式

观测云为您提供两种监控告警通知对象 「Webhook 自定义」的对接方式:直接对接和 DataFlux Func 中转对接。根据您的实际情况,您可以自由选择并配置。

直接对接

在观测云中,支持用户配置 Webhook 自定义告警通知对象,以便在发生异常事件告警时,向用户指定的 URL 发送 HTTP 请求,实现告警信息的的传递,以便用户能够及时对故障进行响应和处理。直接对接方式即在观测云监控 > 通知对象管理的「Webhook 自定义」中直接填写客户系统/第三方系统 URL,这样观测云就能够将异常事件请求详情直接发送到第三方系统的告警响应中心。需要注意的是,采用这种方式需要客户系统/第三方系统能够处理观测云发出的上述类型请求;否则需要以下方式 DataFlux Func 作为“接口转换器”对接客户系统或第三方系统。

DataFlux Func 中转对接

我们都知道 Webhook 在传递数据或通知时发出的请求是有固定格式的。因此,一旦客户系统或第三方系统无法满足观测云的「Webhook 自定义」方式发出的 HTTP 请求格式需求(即上文所述告警通知细节),如请求体为 XML、String 或其他格式,我们就需要 DataFlux Func 即观测云开发集成的一款集函数开发、管理、执行为一体的平台,只需简单配置及编辑脚本即可实现告警通知的对接。

所以,在观测云产生事件时,将自动向本地 DataFlux Func 的授权链接发送固定格式的 HTTP 请求,再由 DataFlux Func 中编写的脚本向第三方告警响应中心发送请求。这样,用户就可以有更多第三方系统的选择来自定义告警通知对象,让故障响应变的更加及时和便捷。

当然,采用这种方式不仅需要合适的网络环境,还需要您了解基础 Python 开发知识以及 DataFlux Func 的使用方法(参见:https://func.guance.com/doc/intro-guide/)。

实际场景示例

由于某用户告警短信平台的接受请求格式与观测云「Webhook 自定义」发出的 HTTP 请求格式不同,需要利用 DataFlux Func 中转对接来发送观测云监控器异常事件的告警通知到其告警短信平台。

假设用户的告警短信平台调用方式如下:

GET http://some-domain/send-sms?to=13000000000&msg=短信正文

那么,结合上文所述的「告警通知细节」的内容,即可写出以下脚本:

import requestsSMS_API = 'http://some-domain/send-sms'@DFF.API('Webhook 对接')
def webhook_accept(**event):print(f'事件数据:{event}')params = {'to' : '13000000000','msg': event.get('df_title') or '您在观测云有新事件',}r = requests.get(SMS_API, params=params, timeout=3)print(f'接口返回:{r.status_code} {r.text}')return r.status_code, r.text

在 DataFlux Func 完成脚本发布后,我们就可以在管理>授权链接中为函数添加授权链接。

创建授权链接后,在授权链接的「示例」中,复制「POST 简化形式请求」中的 URL 地址(以 /simplified 结尾)。

转到观测云 ,将 URL 地址填入通知对象管理中的「Webhook 自定义」即可。

完成以上操作,用户就可以在观测云产生事件时,及时收到告警通知。根据不同的等级的异常情况,快速响应并处理故障,有效的保障用户系统的稳定运行。

结语

Webhook 作为基于 HTTP 的回调函数,有效地实现服务器之间的实时数据传输和通知。在观测云中,您不仅可以直接设置「Webhook 自定义」通知对象,也结合观测云开发集成的 DataFlux Func,快速实现与第三方告警响应中心的联动,避免错过重要异常情况信息,从而实现故障发现、告警和处理的全闭环,帮助企业将系统动荡遏制在摇篮里!

相关文章:

  • MES物料的动态批次管理漫谈
  • 大模型技术的发展与实践
  • 4K-Resolution Photo Exposure Correction at 125 FPS with ~8K Parameters
  • Kubernetes(K8s)Pod控制器详解-06
  • 【刷题】二分查找
  • 操作系统·设备管理
  • 关于rocketMQ踩坑的那些事
  • 【Spring Boot】如何集成mybatis-plus
  • ChatGPT
  • 记录一下npm包的关键字段
  • 怎样学习AI编程?
  • Qt 网络通信
  • Redis Hash数据类型
  • Postman:专业API测试工具,提升Mac用户体验
  • java中强引用、软引用、弱引用、虚引用的区别是什么?
  • JS 中的深拷贝与浅拷贝
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • ECS应用管理最佳实践
  • iOS小技巧之UIImagePickerController实现头像选择
  • JavaScript函数式编程(一)
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • js如何打印object对象
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • node和express搭建代理服务器(源码)
  • PHP CLI应用的调试原理
  • Python学习之路13-记分
  • SQLServer之创建显式事务
  • Theano - 导数
  • Twitter赢在开放,三年创造奇迹
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • 后端_MYSQL
  • 区块链分支循环
  • 我与Jetbrains的这些年
  • 学习ES6 变量的解构赋值
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • 通过调用文摘列表API获取文摘
  • # .NET Framework中使用命名管道进行进程间通信
  • #define,static,const,三种常量的区别
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • $NOIp2018$劝退记
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (C语言)二分查找 超详细
  • (done) 两个矩阵 “相似” 是什么意思?
  • (js)循环条件满足时终止循环
  • (动态规划)5. 最长回文子串 java解决
  • (二)c52学习之旅-简单了解单片机
  • (九)One-Wire总线-DS18B20
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (译) 函数式 JS #1:简介
  • (转)winform之ListView
  • .NET 2.0中新增的一些TryGet,TryParse等方法
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑