您可以将 Atlas 配置为向网络钩终结点发送警报通知,以 HTTP 形式发送帖子请求以进行程序化处理。通过网络钩,您可以将 Atlas 警报与自定义监控系统、事件管理平台或自动化工作流集成。
必需的访问权限
要将 Atlas 与 Webhook 集成,您必须具有该项目的 Organization Owner 或 Project Owner 访问权限。
配置 Webhook 集成
在Atlas中,转到 Project Settings 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含所需项目的组织。
如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。
在侧边栏中,单击 图标 Project Overview 旁边的图标。
显示项目设置页面。
(可选)自定义 Webhook 模板。
您可以使用 FreeMarker 模板自定义请求头和主体内容:
在 Webhook Headers Template 字段中,输入 FreeMarker 模板以自定义与 Webhook 请求一起发送的 HTTP 头。
在 Webhook Body Template 字段中,输入 FreeMarker 模板以自定义请求主体结构。
如果配置模板,然后查看或编辑 webhook 集成,则模板会显示为编辑版本,并且其内容会被 ****** 替换。您可以使用新值覆盖编辑版本模板。
保存配置时,Atlas 会验证 FreeMarker 语法。如果模板包含无效语法,则表单会显示内联验证错误。
要将警报发送到 Webhook,请配置警报通知。要了解更多信息,请参阅配置警报设置。
请求头
Atlas 在每个 Webhook 请求中包含以下 HTTP 头:
标头 | 说明 |
|---|---|
| 表示警报状态。可能的值:
|
| (可选) 如果在 Webhook Secret 字段中指定密钥,Atlas 将包含此标头。包含请求主体的 Base64 编码的 HMAC-SHA-1 签名。Atlas 使用提供的密钥创建签名。使用此标头验证 Webhook 请求是源自 Atlas。 |
请求正文
请求正文包含一个 JSON 文档,该文档使用与 Atlas Administration API 警报资源相同的格式。有效负载包含关键字段,例如:
id: 警报的唯一标识符。eventTypeName: 触发警报的事件类型。created: 创建警报的时间戳。status: 警报的当前状态(例如OPEN、CLOSED)。humanReadable: 人类可读的警报说明。此字段包含项目名称和组织名称,格式为 "项目:[项目名称] 组织:[组织名称]",以及其他警报详情。
有关字段的完整列表,请参阅 Atlas Administration API 获取所有项目警报文档。
示例 Webhook 负载
以下示例显示了磁盘空间警报的示例 Webhook 负载:
{ "id": "5d1b6f8e8c2e4e2d3c4a5b6c", "groupId": "5d1b6f8e8c2e4e2d3c4a5b6d", "eventTypeName": "OUTSIDE_METRIC_THRESHOLD", "status": "OPEN", "created": "2024-01-15T10:30:00Z", "updated": "2024-01-15T10:30:00Z", "lastNotified": "2024-01-15T10:30:00Z", "humanReadable": "Disk space used on data partition is 95.2%. Project: MyProject Organization: MyOrganization", "metricName": "DISK_PARTITION_SPACE_USED_DATA", "currentValue": { "number": 95.2, "units": "RAW" } }
验证 Webhook 请求
Webhook Secret 字段存储 Atlas 专门用于生成 X-MMS-Signature 请求验证头的秘密。Atlas 不会将秘密直接作为身份验证头或 Bearer token 发送。
如果您的 Webhook 终结点需要身份验证,则必须使用以下方法之一独立处理:
查询参数:在 Webhook URL 中包含身份验证凭证作为查询参数。示例:
https://example.com/webhook?token=your-auth-tokenIP 访问列表:将 Webhook 终结点配置为仅接受来自 Atlas IP 地址的请求。此配置可确保仅 Atlas 可向终结点发送请求。
反向代理或 API 网关:使用反向代理或 API 网关,在将请求转发到 Webhook 终结点之前处理身份验证。
验证 Webhook 请求
要验证 webhook 请求来自 Atlas,请验证 X-MMS-Signature 头部:
限制
使用 Webhook 集成时,请考虑以下限制:
未包含警报严重程度
Webhook 有效负载不包含您在 Atlas 中配置的警报严重性级别。要检索配置的严重性,请使用 webhook 有效负载中的 alertConfigId,对 Atlas Administration API Get One Alert Configuration 终结点进行额外的调用。
无手动测试警报
Atlas 不提供手动 trigger 测试警报的方法。要测试您的 webhook 终结点,您可以临时设置一个条件容易 trigger 的警报,例如:
测试集群上的磁盘空间阈值较低。
可以通过打开多个连接来 trigger 的连接计数阈值。
测试副本集上的复制延迟阈值。
确认网络钩正确接收警报后,您可以删除测试警报配置。
防火墙配置
如果防火墙要求您配置 IP 访问列表,请允许从 Atlas IP 地址进行访问,以便 Atlas 可以与您的 webhook 终结点通信。
解决 Webhook 交付问题
如果您的 Webhook 未收到警报: