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

与 Cloud Manager 中的 Webhook 集成

您可以将 Cloud Manager 配置为发送警报通知到 Webhook 终结点,作为 HTTP POST 请求以进行程序化处理。Webhooks 允许您将 Cloud Manager 警报与自定义监控系统、事件管理平台或自动化工作流集成。

要将 Cloud Manager 与 Webhook 集成,您必须拥有该项目的 Project Monitoring Admin 访问权限。

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

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

  3. 在侧边栏中,单击 Project Settings。

    显示项目设置页面。

2

在侧边栏中,单击 Settings 标题下的 Integrations。

显示“项目集成”页面。

3
4

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

5

在 Webhook Secret 字段中,输入密钥。Cloud Manager 使用此密钥生成 X-MMS-Signature 标头以进行请求验证。

6

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

Cloud Manager 会在每个 webhook 请求中包含以下 HTTP 标头:

Cloud Manager 添加了一个名为X-MMS-Event的请求标头,以区分各种警报状态。此标头的可能值是:

alert.open

警报刚刚打开。

alert.close

警报已解决。

alert.update

先前打开的警报仍处于打开状态。

alert.acknowledge

警报已得到确认。

alert.cancel

警报无效并被取消。

alert.inform

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

如果您在 Webhook Secret 字段中指定键,则 MongoDB Cloud Manager 会添加 X-MMS-Signature 请求标头。此标头包含请求主体的 base 编码的64 HMAC -SHA-1 签名。MongoDB Cloud Manager 使用提供的秘钥创建签名。

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

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

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

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

  • status: 警报的当前状态(示例 OPEN、CLOSED)。

  • humanReadable:警报的人类可读说明。

有关字段的完整列表,请参阅 Get One 警报 终结点文档。

以下示例展示了指标阈值警报的示例 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%.", "metricName": "DISK_PARTITION_SPACE_USED_DATA", "currentValue": { "number": 95.2, "units": "RAW" }}

您可以通过在 Webhook 通知上设置 webhookHeadersTemplate 和 webhookBodyTemplate 字段来自定义 Webhook 请求头和主体内容。每个模板都支持 ${field} 插值:发送通知时,Cloud Manager 会将每个 ${field} 占位符替换为警报文档中匹配字段的值。

您可以插值警报文档返回的任何字段,例如 ${eventTypeName}、${clusterName}、${status} 和 ${created}。有关可插值字段的完整列表,请参阅 Get One 警报 终结点的响应字段。

示例,主体模板 {"event": "${eventTypeName}", "cluster": "${clusterName}"} 会在 Cloud Manager 发送请求之前使用其警报值渲染每个占位符。

渲染的主体必须是有效的 JSON,并且会与 Content-Type: application/json 头一起发送。渲染的头部必须形成一个 JSON 对象,将每个头部名称映射到其值。Cloud Manager 不会对模板公开 webhook 密钥或签名头部,并在 API 响应中隐藏这两个模板字段。

如果模板渲染失败、超过大小限制或产生无效输出,Cloud Manager 将改为发送其默认有效负载和标头,并仍会发送通知。

要在保存警报之前预览渲染的输出,请单击 Post test message to webhook 按钮,该按钮会针对示例警报数据渲染您的模板。

Webhook Secret 字段存储一个密钥,Cloud Manager 仅使用该密钥生成用于请求验证的 X-MMS-Signature 标头。Cloud Manager 不会直接将密钥作为身份验证标头或 Bearer token 发送。

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

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

  • IP访问列表:配置您的Webhook终结点,使其仅接受来自Cloud Manager IP地址的请求。此配置可确保只有Cloud Manager才能向您的终结点发送请求。

  • 反向代理或 API 网关:使用反向代理或 API 网关,先处理身份验证,然后再转发请求到您的 webhook 终结点。

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

1
2
3

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

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

Webhook 有效负载不包含您在 Cloud Manager 中配置的警报严重性级别。要检索配置的严重性,请使用 webhook 有效负载中的 alertConfigId 对 获取一个警报配置 终结点进行额外调用。

Cloud Manager 不提供手动 trigger 测试警报的方法。要测试您的 webhook 终结点,您可以暂时设置一个具有易于 trigger 条件的警报,例如:

  • 测试部署中的低磁盘空间阈值。

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

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

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

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

如果您的 Webhook 未收到警报:

1
2
3

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

4
5
给本页内容打分