您可以配置Ops Manager ,以将警报通知作为HTTP POST 请求发送到 Webhook 端点,以进行编程处理。 Webhook 允许您将Ops Manager警报与自定义监控系统、事件管理平台或自动化工作流程集成。
必需的访问权限
要将Ops Manager与 Webhook 集成,您必须拥有项目的Project Monitoring Admin访问权限。
配置 Webhook 集成
请求头
Ops Manager在每个 Webhook请求中包含以下HTTP 头部:
Ops Manager 添加了一个名为X-MMS-Event的请求标头,以区分各种警报状态。此标头的可能值是:
| 警报刚刚打开。 |
| 警报已解决。 |
| 先前打开的警报仍处于打开状态。 |
| 警报已得到确认。 |
| 警报无效并被取消。 |
| 表示信息警报,即时间点事件,例如“主节点当选”。 |
如果您在 Webhook Secret字段中指定键, MongoDB Ops Manager会添加 X-MMS-Signature请求标头。此标头包含请求正文的 base64-encoded HMAC -SHA-1 签名。 MongoDB Ops Manager使用提供的密钥创建签名。
请求正文
请求正文包含一个JSON 文档,其格式与Ops Manager API警报资源相同。有效负载包括以下关键字段:
id: 警报的唯一标识符。eventTypeName: 触发警报的事件类型。created: 创建警报的时间戳。status:警报的当前状态(示例、OPEN、CLOSED)。humanReadable:人类可读的警报描述。
示例 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%.", "metricName": "DISK_PARTITION_SPACE_USED_DATA", "currentValue": { "number": 95.2, "units": "RAW" } }
自定义 Webhook 模板
您可以使用 FreeMarker 模板自定义请求标头和正文内容。有关 Webhook 模板的详细信息,包括可用的模板变量、正则表达式助手和示例,请参阅配置 Webhook 模板。
验证 Webhook 请求
Webhook Secret字段存储一个密钥, Ops Manager仅使用该密钥生成用于验证请求的X-MMS-Signature 标头。 Ops Manager不会直接将密钥作为身份验证标头或不记名令牌发送。
如果您的 Webhook 终结点需要身份验证,则必须使用以下方法之一独立处理:
查询参数:在 Webhook URL 中包含身份验证凭证作为查询参数。示例:
https://example.com/webhook?token=your-auth-tokenIP访问列表:配置 Webhook 端点以仅接受来自Ops Manager实例IP地址的请求。
反向代理或API网关:使用反向代理或API网关在将请求转发到 Webhook 端点之前处理身份验证。
验证 Webhook 请求
要验证 Webhook请求是否源自Ops Manager,请验证 X-MMS-Signature 标头:
使用 Webhook 密钥计算请求正文的 Base64-encoded HMAC -SHA-1 签名。
限制
使用 Webhook 集成时,请考虑以下限制:
未包含警报严重程度
Webhook 有效负载不包括您在Ops Manager中配置的警报严重性级别。要检索配置的严重性,请使用 Webhook 有效负载中的 alertConfigId 对“获取一个警报配置”端点进行额外调用。
无手动测试警报
Ops Manager不提供手动触发测试警报的方法。要测试您的 Webhook 端点,您可以使用易于触发的条件临时设立警报,例如:
测试部署的磁盘空间阈值较低。
可以通过打开多个连接来 trigger 的连接计数阈值。
测试副本集上的复制延迟阈值。
确认网络钩正确接收警报后,您可以删除测试警报配置。
防火墙配置
由于Ops Manager是自托管的,因此请确保您的网络允许从Ops Manager服务器到 Webhook 端点的出站HTTP请求。如果您的 Webhook 端点位于防火墙后面,请将Ops Manager服务器的IP解决添加到端点的IP访问列表中。
解决 Webhook 交付问题
如果您的 Webhook 未收到警报: