对接观测云自建通知对象
此功能需要 2.5.2 及以后版本
1. 背景
在某些情况下,观测云提供的告警通知方式无法满足实际的业务需要。 而通过「自定义 Webhook」方式调用又需要用户修改现有业务系统或单独搭建接收系统,较为不便。
此时,可以使用观测云的「自建通知对象」实现将告警通知直接到本地 DataFlux Func 的某个函数,由此来执行后续的操作。
2. 准备工作
为了实现自建通知对象,需要做好以下准备工作:
准备 | 参考文档 |
---|---|
将 DataFlux Func 升级到 2.5.2 及以上版本 | 部署和维护 / 日常维护 / 升级系统 |
在观测云中创建好 API Key | 观测云文档 / 工作空间管理 / API Key 管理 |
3. 具体操作步骤
以下为具体的操作步骤:
3.1 创建观测云连接器
在「管理 / 实验性功能」中,启用「观测云连接器」
前往「开发 / 连接器 / 添加连接器」,类型选择「观测云」,并填入相关配置参数。
3.2 编写自建通知函数
前往「开发 / 脚本库」,创建用于存放自建通知函数的脚本
用于自建通知的函数,存在固定要求:
- 需要在使用
@DFF.API(...)
装饰的基础上,添加category='guance.alertFunc'
- 函数名不限,但必须有且仅有唯一一个参数
event
,参数值详情见附录
以发送钉钉通知为例,完整代码如下:
发送钉钉通知本身可以直接在观测云配置,不需要自建通知对象,此处代码仅作为示例,并无实际意义
有关钉钉机器人的相关文档见附录
Python | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
|
代码编写完成后,不要忘记发布
3.3 在观测云中确认自建通知对象
进入观测云「监控 / 通知对象管理」,可以在列表中看到之前编写并发布的通知对象函数
3.4 在监控器中选择自建通知对象
进入观测云「监控 / 监控器」,为监控器配置告警策略,并选中新建的自建通知对象。
3.5 接收自建通知
根据之前编写的代码,我们提取了事件的标题和内容,并额外添加了一行「本消息通过自建通知对象发出」提示。
假设在监控器的「事件内容」中简单配置了如下内容:
Text Only | |
---|---|
1 2 |
|
那么,经过自建通知对象处理后,最终在钉钉机器人中收到的消息如下:
X. 附录
以下为附录
X.1 钉钉机器人相关文档
- 群机器人:https://open.dingtalk.com/document/robots/custom-robot-access
- 群机器人加签说明:https://open.dingtalk.com/document/robots/customize-robot-security-settings
X.2 自建通知对象函数 event 参数
自建通知对象接收的 event 参数为一个 dict,其内部字段如下:
字段名 | 类型 | 是否必须 | 说明 |
---|---|---|---|
timestamp |
Integer | 必须 | 产生时间。Unix 时间戳,单位秒 |
df_status |
Enum | 必须 | 状态。取值ok , info , warning , error , critical , nodata |
df_event_id |
String | 必须 | event ID。 |
df_title |
String | 必须 | 标题。 |
df_message |
String | 详细描述。 | |
df_dimension_tags |
String(JSON-format) | 必须 | 检测纬度标签,如{"host":"web01"} |
df_monitor_id |
String | 监控器分组 ID | |
df_monitor_name |
String | 监控器组名 | |
df_monitor_checker_id |
String | 监控器 ID | |
df_monitor_checker_name |
String | 监控器名 | |
df_monitor_checker_value |
String | 检测触发事件时的值 | |
df_monitor_checker_value_dumps |
str(JSON) | 检测触发事件时的值(JSON 序列化) 方便使用方通过反序列化获取原始值 |
|
df_event_link |
String | 事件跳转链接 | |
df_workspace_uuid |
String | 所属工作空间 UUID | |
df_workspace_name |
String | 所属工作空间名 | |
Result |
Float | 检测值 | |
{其他更多字段} |
略 |
一般来说,对接第三方消息平台时,只需要用到 df_title 和 df_message 两个字段即可
具体示例如下:
JSON | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|