首批通过分布式安全可靠测评,为关键业务系统打造
查看告警通道配置示例
更新时间:2026-04-14 15:15:54
本文档为您列举常见的告警通道配置示例,供您参考。
钉钉通道
可以基于钉钉群机器人的 Webhook 实现群消息发送,配置钉钉告警通道需要进行两部分操作:
- 在接收告警的钉钉群配置机器人。
- 在 OCP 中配置钉钉通道信息。
配置钉钉群机器人
在 PC 端打开需要接收告警通知的钉钉群。
单击上方菜单栏的 群设置 按钮。
在弹出的面板中单击 智能群助手 > 添加机器人。
在 群机器人 弹窗中单击
,选择要添加的机器人。单击 自定义 机器人,在 机器人详情 弹窗中单击 添加。
设置机器人信息,包括 机器人名字 及 安全设置。
安全设置包括三种模式:自定义关键词、加签 及 IP 地址段。您可参考 自定义机器人安全设置 根据所需选择一种进行配置,此处以 自定义关键词 为例。

勾选 我已阅读并同意 《自定义机器人服务及免责条款》,单击 完成。
在 添加机器人 对话框中复制生成的机器人 Webhook 地址,单击 完成。
配置钉钉通道信息
登录 OCP。
在左侧导航栏中单击 告警中心 。
单击 告警通道 页签。
在告警通道页签中,单击 新建通道 。
配置通道 基本信息。
参数 说明 通道类型 选择 钉钉。 通道名 告警通道的名称, Webhook 地址 配置钉钉机器人后生成的 Webhook 地址,即 配置钉钉群机器人 中 步骤 8 复制的地址。 签名密钥 可选填。在钉钉机器人安全设置时,选择 加签 模式后所获取的签名密钥字符串。 指定用户 可选填。钉钉群成员的手机号码。 代理 可选填。请填写发送告警信息的代理,格式为 http:ip:port。其中:ip 为代理服务器的 IP,port 为发送告警使用的端口。 若代理服务器的 IP 为 xxx.xxx.xxx.xxx,规划使用 80 端口发送告警消息,则可配置为http:xxx.xxx.xxx.xxx:80。说明
仅 HTTP 通道需要配置代理。

单击 发送测试消息,测试告警是否发送成功。
如果发送成功,可单击 提交。
自定义脚本通道
自定义脚本通道,是为了满足特殊的告警对接场景而设计的。一般用于无法通过 HTTP 的方式配置或者对告警格式有特殊要求的场景,您可以在脚本中定制一些特殊的逻辑。比如:告警时间的转换,对第三方告警网关默认参数的添加等,均可以通过自定义脚本通道来实现。
基本信息:通道类型选择自定义脚本,其他选项根据具体需求进行选择。
通道配置:
脚本内容:参考 OCP 告警模板标签 在脚本内以标签的方式引用。
Response 校验信息:用于防止告警脚本编写不规范或 API 响应不规范(发送失败仍返回 200 响应码)导致用户收不到告警、漏发告警等问题。要求告警脚本里输出有且仅有一次有效信息(可以是 API 响应码,也可以是 API 响应体),OCP 来校验信息是否匹配。支持正则匹配、json 键值对匹配。如果校验字段与 API 返回内容不匹配,OCP 会判定发送告警失败,会重试发送:可能用户已经收到了消息,仅仅是接口判定为失败,则用户可能会受到多次告警。校验规则如下:
- 如果返回结果是 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 格式,会导致系统误判。
- 如果返回结果是 json 格式,则 Response 校验信息也需配置为 json 字符串(默认是
告警消息模板:
OCP 告警通知-单条告警 - 名称:${alarm_name} - 级别:${alarm_level} - 告警对象:${alarm_target} - 概述:${alarm_summary} - 生成时间:${alarm_active_at} - 详情:${alarm_description} - OCP链接:${alarm_url}告警恢复消息模板:
OCP 告警恢复通知 ${alarm_name} - 告警对象:${alarm_target} - 告警详情:${alarm_description} - 恢复时间:${alarm_resolved_at}告警消息聚合模板:
OCP 告警通知-多条告警 - 名称:${alarm_name} - 级别:${alarm_level} - 告警数量:${alarm_count} - 聚合分组:${alarm_group_by} - 告警对象:${alarm_target} - 生成时间:${alarm_active_at}脚本文件名:系统默认有一个自定义脚本样例
alarm_send_script_demo.sh,您可以在其基础上进行修改,也可以参考 Python 脚本示例 和 Bash 脚本示例 新增自定义的脚本。在修改或新增文件时,请确保该脚本文件已存放在每个 OCP 的/home/admin目录下。发送测试消息:调试脚本时,可以使用发送测试消息来测试,默认消息内容使用脚本中的变量
${message},请确保该变量在发送的消息体中。由于自定义脚本发送成功的判断逻辑需要视具体情况而定,系统认为只要脚本执行成功,即代表发送成功。不过,在浏览器的开发者模式中,用户可以根据发送测试消息对应的 _test 请求的 Response 内容进行调试。
Python 脚本示例
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 注意:脚本内容第一行必须是 shebang 指定执行的程序,只支持 python 和 bash
import json
import requests
import os
import sys
ACCESS_TOKEN = "Ding Talk Token"
def send_alarm():
"""
可以通过 os.environ 从环境变量获取告警相关的变量值。
支持的变量列表参见 《OCP 告警模板变量》。
"""
message = os.environ['message']
data = {
"msgtype": "markdown",
"markdown": {
"text": message
}
}
resp = requests.post("https://oapi.dingtalk.com/robot/send?access_token=" + ACCESS_TOKEN, json=data)
resp.close()
response = json.loads(resp.text)
# 将返回结果输入到标准错误(stderr)或标准输出(stdout),会被用于验证告警是否发送成功,优先验证stderr。
if not response['errcode'] == 0:
sys.stderr.write(resp.text)
else:
print(resp.text)
def main():
"""
若发送成功,返回值为 0
若发送失败,错误输出到 stderr,返回值不为 0
"""
try:
send_alarm()
return 0
except Exception as e:
sys.stderr.write(str(e))
return 1
if __name__ == "__main__":
sys.exit(main())
Bash 脚本示例
#!/usr/bin/env bash
# should contains shebang in first line, only python/bash are supported
# this function defines to how to assembly request by yourself according to your requirements
# this demo shows you how to send alarm to ding ding
function send() {
# this token is ding ding group token, please apply and assign it to variable token
token='Ding Talk Token'
URL="https://oapi.dingtalk.com/robot/send?access_token=$token"
# if message is json format, use "'"${message}"'" or "${message}", do not wrapper a new json body
# if message is not json format, use "${message}"
# do not use '${message}'
# print the response to stderr or stdout, which will be validated if success, validate stderr firstly.
curl -s -X POST ${URL} -H 'Content-Type: application/json' -d '{"msgtype":"text","text":{"content":"'"${message}"'"}}'
return $?
}
# invoke function to
send
说明
目前支持的 Shebang 包括 python、bash、sh、/bin/bash、/bin/sh、/usr/bin/python、/usr/bin/bash、/usr/bin/env python 和 /usr/bin/env。 bashShebang 的正确写法为 #!/bin/sh,推荐使用 #!/usr/bin/env bash 这种写法,执行时会去 $PATH 中找第一个符合的命令来执行。