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

与 MongoDB Ops Manager 中的 Webhook 集成

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

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

您可以使用以下方法对 Webhook 请求进行身份验证:

  • Webhook 密钥:MongoDB Ops Manager 使用该密钥生成 X-MMS-Signature 标头。MongoDB Ops Manager 不会发送密钥本身作为身份验证标头或 Bearer token。要学习如何验证签名,请参阅 验证 Webhook 请求。

  • OAuth 2.0 客户端凭证:MongoDB Ops Manager 从您的 OAuth 2.0 令牌终结点获取持有者访问令牌,并将其发送到 Authorization 标头中。要配置此方法,请参阅 配置 Webhook 集成。

您可以选择使用其中一种方法、两种都使用,或者都不使用。如果您同时配置了这两种方法,MongoDB Ops Manager 会在同一个请求中包含 Authorization 和 X-MMS-Signature 标头。

MongoDB Ops Manager 会缓存 OAuth 2.0 访问令牌,并在令牌过期时对其进行刷新。如果您的 Webhook 终结点返回 401 响应,MongoDB Ops Manager 将刷新令牌并重试一次请求。

如果您配置了自定义标头模板,它将替换请求中的默认标头。MongoDB Ops Manager 不会为您添加 X-MMS-Signature 或 Authorization 标头。要包含任一标头,请将其添加到您的模板中:

  • "X-MMS-Signature": "${signature}"

  • "Authorization": "Bearer ${oauthToken}"

要了解有关 Webhook 模板的更多信息,请参阅配置 Webhook 模板。

如果 webhook 密钥和 OAuth 2.0 客户端凭证无法满足您的需求,您可以通过以下方式之一处理身份验证:

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

  • IP访问列表:配置您的Webhook终结点,使其仅接受来自您的MongoDB Ops Manager实例IP地址的请求。

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

要验证 webhook 请求是否源自 MongoDB Ops Manager,请验证 X-MMS-Signature 标头:

1
2
3

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

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

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

  3. 在左侧导航面板的 Settings 标题下,点击 Integrations。

2
3

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

4

输入以下至少一种身份验证选项:

  • Webhook Secret:输入密钥。MongoDB Ops Manager 使用此密钥生成 X-MMS-Signature 标头以进行请求验证。

  • OAuth2 Token URL, OAuth2 Client ID 和 OAuth2 Client Secret:输入 MongoDB Ops Manager 为获取访问令牌而调用的令牌终结点,以及您在 OAuth 2.0 提供商处注册的应用程序的凭证。将这三个值一起设置,或者将这三个值都留空。

您可以同时使用这两个选项。要了解更多信息,请参阅对 Webhook 请求进行身份验证。

5

要将警报发送到您的 webhook,请配置警报通知。要了解更多信息,请参阅在 MongoDB Ops Manager 中配置警报设置。

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

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

alert.open

警报刚刚打开。

alert.close

警报已解决。

alert.update

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

alert.acknowledge

警报已得到确认。

alert.cancel

警报无效并被取消。

alert.inform

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

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

如果您配置 OAuth 2.0 客户端凭证,MongoDB Ops Manager 会添加 Authorization 请求标头。此标头包含 MongoDB Ops Manager 从您的 OAuth 2.0 令牌终结点获取的持有者访问令牌。

请求正文包含一个 JSON 文档,该文档使用与 MongoDB Ops 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" }}

您可以使用 FreeMarker 模板自定义请求标头和正文内容。有关 Webhook 模板的详细信息,包括可用的模板变量、正则表达式辅助工具和示例,请参阅配置 Webhook 模板。

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

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

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

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

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

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

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

由于 MongoDB Ops Manager 是自行托管的,请确保您的网络允许从 MongoDB Ops Manager 服务器向 Webhook 终结点发出出站 HTTP 请求。如果您的 webhook 终结点位于防火墙后,请将 MongoDB Ops Manager 服务器的 IP 地址添加到终结点的 IP 访问列表。

如果您的 Webhook 未收到警报:

1
2
3

MongoDB Ops Manager 会将其他状态代码视为失败。

4
5
给本页内容打分