对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

与 Webhook 集成

您可以将 Atlas 配置为向网络钩终结点发送警报通知,以 HTTP 形式发送帖子请求以进行程序化处理。通过网络钩,您可以将 Atlas 警报与自定义监控系统、事件管理平台或自动化工作流集成。

要将 Atlas 与 Webhook 集成,您必须具有该项目的 Organization OwnerProject Owner 访问权限。

1
  1. 如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含所需项目的组织。

  2. 如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。

  3. 在侧边栏中,单击 图标 Project Overview 旁边的图标。

显示项目设置页面。

2

单击 Integrations 标签页。

显示“项目集成”页面。

3
4

Webhook URL 字段中,输入 Atlas 应发送警报通知的终结点 URL。

5

Webhook Secret 字段中,输入秘钥。Atlas 使用此秘密为请求验证生成 X-MMS-Signature 头。

6

您可以使用 FreeMarker 模板自定义请求头和主体内容:

  1. Webhook Headers Template 字段中,输入 FreeMarker 模板以自定义与 Webhook 请求一起发送的 HTTP 头。

  2. Webhook Body Template 字段中,输入 FreeMarker 模板以自定义请求主体结构。

如果配置模板,然后查看或编辑 webhook 集成,则模板会显示为编辑版本,并且其内容会被 ****** 替换。您可以使用新值覆盖编辑版本模板。

保存配置时,Atlas 会验证 FreeMarker 语法。如果模板包含无效语法,则表单会显示内联验证错误。

7

要将警报发送到 Webhook,请配置警报通知。要了解更多信息,请参阅配置警报设置。

Atlas 在每个 Webhook 请求中包含以下 HTTP 头:

标头
说明

X-MMS-Event

表示警报状态。可能的值:

  • alert.open: Atlas 刚打开警报。

  • alert.close: Atlas 已解决警报。

  • alert.update:先前打开的警报仍处于打开状态。

  • alert.acknowledge: 用户确认了警报。

  • alert.cancel: 警报失效;Atlas 已取消该警报。

  • alert.inform: 表示信息警报,即时间点事件,例如“主节点当选”。

X-MMS-Signature

(可选) 如果在 Webhook Secret 字段中指定密钥,Atlas 将包含此标头。包含请求主体的 Base64 编码的 HMAC-SHA-1 签名。Atlas 使用提供的密钥创建签名。使用此标头验证 Webhook 请求是源自 Atlas。

请求正文包含一个 JSON 文档,该文档使用与 Atlas Administration API 警报资源相同的格式。有效负载包含关键字段,例如:

  • id: 警报的唯一标识符。

  • eventTypeName: 触发警报的事件类型。

  • created: 创建警报的时间戳。

  • status: 警报的当前状态(例如 OPENCLOSED)。

  • humanReadable: 人类可读的警报说明。此字段包含项目名称和组织名称,格式为 "项目:[项目名称] 组织:[组织名称]",以及其他警报详情。

有关字段的完整列表,请参阅 Atlas Administration API 获取所有项目警报文档。

以下示例显示了磁盘空间警报的示例 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 Secret 字段存储 Atlas 专门用于生成 X-MMS-Signature 请求验证头的秘密。Atlas 不会将秘密直接作为身份验证头或 Bearer token 发送。

如果您的 Webhook 终结点需要身份验证,则必须使用以下方法之一独立处理:

  • 查询参数:在 Webhook URL 中包含身份验证凭证作为查询参数。示例:https://example.com/webhook?token=your-auth-token

  • IP 访问列表:将 Webhook 终结点配置为仅接受来自 Atlas IP 地址的请求。此配置可确保仅 Atlas 可向终结点发送请求。

  • 反向代理或 API 网关:使用反向代理或 API 网关,在将请求转发到 Webhook 终结点之前处理身份验证。

要验证 webhook 请求来自 Atlas,请验证 X-MMS-Signature 头部:

1
2
3

如果它们匹配,则请求是真实的。

使用 Webhook 集成时,请考虑以下限制:

Webhook 有效负载不包含您在 Atlas 中配置的警报严重性级别。要检索配置的严重性,请使用 webhook 有效负载中的 alertConfigId,对 Atlas Administration API Get One Alert Configuration 终结点进行额外的调用。

Atlas 不提供手动 trigger 测试警报的方法。要测试您的 webhook 终结点,您可以临时设置一个条件容易 trigger 的警报,例如:

  • 测试集群上的磁盘空间阈值较低。

  • 可以通过打开多个连接来 trigger 的连接计数阈值。

  • 测试副本集上的复制延迟阈值。

确认网络钩正确接收警报后,您可以删除测试警报配置。

如果防火墙要求您配置 IP 访问列表,请允许从 Atlas IP 地址进行访问,以便 Atlas 可以与您的 webhook 终结点通信。

如果您的 Webhook 未收到警报:

1
2
3

Atlas 将其他状态代码视为失败。

4
5