首批通过分布式安全可靠测评,为关键业务系统打造
通过 HTTP 方式自定义告警推送
更新时间:2026-04-14 15:15:54
如果您的系统已经有成熟的告警管理功能,可以提供 HTTP API 来对接 OCP 告警。
应用场景
常用的两个场景:
- 各个云平台提供的告警机器人,如钉钉机器人、飞书机器人等,这些机器人都提供发送自定义消息,提供了Webhook(API)。按照所要求的消息格式请求 API 即可发送告警消息。
- 由用户侧提供告警接口,一般不需要对接口加签名、增加特殊字段(如当前时间戳)等,推送固定格式的消息到 API 即可发送告警消息。
前提条件
需要您提供明确的 API 用于接受告警消息,可以写出一个简单的命令来测试该接口,具体的请求内容需结合实际情况:
curl -XPOST '客户提供的API接口' \
-H 'Content-Type:application/json; charset=utf-8' \
--data '{"message":"告警测试消息"}' \
--compressed \
--insecure
若 API 有鉴权,如 Basic Auth 鉴权,可以在 Header 中加上鉴权信息:-H'Authorization: Basic xxxx'
技术原理
HTTP API 告警通道对应的是发送 HTTP 请求,请求字段包括(以钉钉为例):
- API 地址:钉钉的 Webhook 地址。
- 请求方法:POST,大部分接收告警的接口为 POST 接口。
- Header:HTTP 请求的 Header 部分,常见的如
Content-Type:application/json; charset=utf-8,Authorization: Basic xxxx等。 - 请求 Body:请求参数,需要客户提供 API 的具体格式,需要传入哪些字段,各个字段的含义,是否允许为空(如果不能为空且没有对应字段,需填写默认字段)。以钉钉为例,Body 为:
{"msgtype": "markdown","markdown": {"content":"${message}","title":"${alarm_name}"}}。 - 代理:如果 API 为公网地址且内网与公网不通,需要设置网络代理,告警消息先发送到代理,代理再转发到 API,例如钉钉 API。
注意事项
- 确保 API 无需复杂的请求参数,如加签名,带上当前时间戳等特殊需求;
- API 须返回必要的响应内容,如 success(非 json 消息),{"err_code":0,"message":"success"}(json 消息)。这样方便 OCP 判断消息发送成功(参考常见问题配置 Respon 校验信息)。
操作步骤
在左侧导航栏中,单击 监控告警 > 告警。
在告警详情页中,单击 告警通道。

然后在告警通道页签下,单击 新建通道。
配置 HTTP 告警通道。以钉钉为例(以下输入为示例,请根据实际情况填写信息),需要输入以下信息:
基本配置。

选择项 是否必选 描述 通道类型 是 下拉选择 HTTP。 通道名 是 自定义通道名称,方便后续识别。 接收人字段 是 选择 用户ID。 通道配置。

选择项 是否必选 描述 代理 否 若网络可以访问钉钉 API,则无需设置代理。 请求方法 是 POST。 URL 模板 是 填写钉钉的 Webhook 地址。 Header 模板 是 Content-Type:application/json; charset=utf-8,不同 Header 以回车换行来区分。Body 模板 是 {"msgtype": "text","text": {"content":"${message}"}}Response 校验信息 是 {"errcode":0,"errmsg":"ok"}消息配置。

消息结构可以更改,设置 消息格式 为
markdown,可通过输入${}引入变量。shell ### OCP 告警通知 ${alarm_name} - 级别:${alarm_level} - 告警对象:${alarm_target} - 概述:${alarm_summary} - 生成时间:${alarm_active_at} - 详情:${alarm_description} - OCP 链接:${alarm_url}
其他功能。
告警消息聚合:可以开启通道聚合功能,避免一段时间内一条告警发送多次。OCP 告警默认 3 分钟(从 4.1.0 版本开始)产生一次告警,开启告警通道聚合之后,相同告警默认 600 秒仅发送一次。
单击 提交,完成配置。
常见问题
Response 校验信息
Q:如何解决 Response 校验信息失败?
A:从 OCP 3.3.0 版本开始,需设置 Response 校验信息。设置 Response 校验信息失败是为了防止告警脚本编写不规范或 API 响应不规范(发送失败仍返回 200 响应码)导致用户收不到告警、漏发告警等问题。要求告警脚本里输出有且仅有一次有效信息(可以是 API 响应码,也可以是 API 响应体),OCP 来校验信息是否匹配。支持正则匹配、json 键值对匹配。如果校验字段与 API 返回内容不匹配,OCP 会判定发送告警失败,会重试发送:可能用户已经收到了消息,仅仅是接口判定为失败,则用户可能会受到多次告警。校验规则如下:
说明
请注意这些仅是示例,具体配置成什么要根据 API 响应结果而定,切忌直接复制粘贴。
如果返回结果是 json 格式,则 Response 校验信息也需配置为 json 字符串(默认是{}), 匹配两者是否相等:API 返回内容需包含 Response 校验信息中所有 key-value 内容。例如 API 返回
{"成功的标志1":"成功","错误码":0,"当前时间戳":"2023-09-12T10:00:00+8:00"},则 Response 校验信息可以配置为以下配置中的任意一个:{"成功的标志1":"成功","错误码":0}、{"成功的标志1":"成功"}、{"错误码":0}。如果返回结果不是 json,则 Response 校验信息应与返回结果相同,如 API 响应结果为 success,则 Response 校验信息应设置为 success;如果 API 响应结果为
success:2023-09-12T10:00:00+8:00,则 Response 校验信息应需设置为正则表达式success.*。判断返回结果是否为 json 目前仅是判断首尾是否是
{}字符来判断的,如果响应结果刚好出现此情况且不是 json 格式,会导致误判。
告警接口超时
OCP 发送告警的默认超时时间是 10 秒,如果客户提供的告警接口响应时间超过 10 秒,则会被认为发送失败,会重试发送告警消息。配置参数:
- 发送告警超时参数:
ocp.alarm.send.once-timeout-ms,默认 10000 毫秒。 - 发送告警失败,重试次数:
ocp.alarm.send.once-retry-times,默认 1 次。