使用场景
系统在以下场景分派故障时会使用模板:| 场景 | 说明 |
|---|---|
| 手动创建故障 | 手动创建故障并分派 |
| 自动生成故障 | 上报告警事件,系统自动生成故障,按匹配到的分派策略进行分派 |
| 重新分派 | 故障创建后,手动更改分派 |
| 升级分派 | 根据分派策略设置,系统自动升级分派 |
| 重开分派 | 故障关闭后重新打开,按照之前的设置重新分派 |
系统使用 Golang 模板语法 解析数据,支持逻辑判断、循环、pipeline 及常用函数。更多函数请参考 sprig 函数库。
配置模板
应用模板
变量引用
引用示例
Incident 变量
故障对象的完整变量列表:| 字段 | 类型 | 必含 | 说明 |
|---|---|---|---|
| ID | string | ✓ | 故障 ID |
Title | string | ✓ | 故障标题 |
Description | string | ✓ | 故障描述,可能为空 |
| DetailUrl | string | ✓ | 故障详情页地址 |
| Num | string | ✓ | 故障短标识,仅用于方便肉眼识别 |
IncidentSeverity | string | ✓ | 严重程度:Critical / Warning / Info |
| IncidentStatus | string | ✓ | 故障状态:Critical / Warning / Info / Ok |
Progress | string | ✓ | 处理进度:Triggered / Processing / Closed |
StartTime | int64 | ✓ | 触发时间,Unix 秒时间戳 |
| LastTime | int64 | 最新事件时间,Unix 秒时间戳 | |
| EndTime | int64 | 恢复时间,Unix 秒时间戳 | |
| SnoozedBefore | int64 | 暂缓截止时间,Unix 秒时间戳 | |
| AckTime | int64 | 首次认领时间,Unix 秒时间戳 | |
| CloseTime | int64 | 关闭时间,Unix 秒时间戳 | |
| Creator | Person | 发起人信息,系统自动生成时不存在 | |
| Closer | Person | 关闭人信息,故障自动恢复时不存在 | |
| AssignedTo | Assignment | 分派配置 | |
| Responders | []Responder | 处理人列表 | |
| ChannelID | int64 | 协作空间 ID | |
| ChannelName | string | 协作空间名称 | |
| GroupMethod | string | 聚合方式:n(不聚合)/ p(按规则)/ i(智能) | |
Labels | map | 标签 KV,Key 和 Value 均为字符串 | |
| AlertCnt | int64 | ✓ | 关联告警个数 |
| Alerts | []Alert | 关联告警详情 | |
| FireType | string | 通知类型:fire(通知)/ refire(循环通知) | |
| IsFlapping | bool | 是否处于抖动状态 | |
| Impact | string | 故障影响,关闭后填写 | |
| RootCause | string | 故障根因,关闭后填写 | |
| Resolution | string | 解决办法,关闭后填写 |
关联对象
Person - 人员信息
Person - 人员信息
| 字段 | 类型 | 必含 | 说明 |
|---|---|---|---|
| person_id | int64 | ✓ | 人员 ID |
| person_name | string | ✓ | 人员名称 |
| string | ✓ | 邮件地址 |
Assignment - 分派配置
Assignment - 分派配置
| 字段 | 类型 | 必含 | 说明 |
|---|---|---|---|
| PersonIDs | []int64 | 人员 ID 列表,仅当按人员分派时存在 | |
| EscalateRuleID | string | 分派策略 ID | |
| EscalateRuleName | string | 分派策略名称 | |
| LayerIdx | int | 分派环节,从 0 开始 | |
| Type | string | ✓ | 分派类型:assign / reassign / escalate / reopen |
Responder - 处理人
Responder - 处理人
| 字段 | 类型 | 必含 | 说明 |
|---|---|---|---|
| PersonID | int64 | ✓ | 人员 ID |
| PersonName | string | ✓ | 人员名称 |
| string | ✓ | 邮件地址 | |
| AssignedAt | int64 | ✓ | 分派时间,Unix 秒时间戳 |
| AcknowledgedAt | int64 | 认领时间,Unix 秒时间戳 |
Alert - 告警详情
Alert - 告警详情
| 字段 | 类型 | 必含 | 说明 |
|---|---|---|---|
| Title | string | ✓ | 告警标题 |
| Description | string | ✓ | 告警描述,可能为空 |
| AlertSeverity | string | ✓ | 严重程度:Critical / Warning / Info |
| AlertStatus | string | ✓ | 告警状态:Critical / Warning / Info / Ok |
| StartTime | int64 | ✓ | 触发时间,Unix 秒时间戳 |
| LastTime | int64 | 最新事件时间,Unix 秒时间戳 | |
| EndTime | int64 | 恢复时间,Unix 秒时间戳 | |
| Labels | map | 标签 KV |
常见问题
如何知道 Labels 有哪些标签?
如何知道 Labels 有哪些标签?
- 手动创建的故障没有标签
- 自动创建的故障存在标签,与合入的第一条告警的标签相同
配置了自定义模板,实际却使用了默认模板?
配置了自定义模板,实际却使用了默认模板?
创建自定义模板时,系统使用 mock 数据检查语法。mock 数据覆盖场景有限,实际运行时可能渲染失败,系统将使用默认模板兜底。
故障标题含有字符转义(如 >)?
故障标题含有字符转义(如 >)?
使用
toHtml 函数处理:如何转换时间格式?
如何转换时间格式?
如何在 for 循环内部引用外部变量?
如何在 for 循环内部引用外部变量?
在外部变量前增加
$:如何提取带 . 的字段值(如 obj.instance)?
如何提取带 . 的字段值(如 obj.instance)?
使用
index 函数:如何提取关联告警中的 label 并去重?
如何提取关联告警中的 label 并去重?
如何遍历并打印 Labels?
如何遍历并打印 Labels?
如何从 JSON 字段中提取信息?
如何从 JSON 字段中提取信息?
使用
jsonGet 函数从合法 JSON 中按 path 提取值。语法参考 gjson.dev。如何在发送应用消息时携带图片?
如何在发送应用消息时携带图片?
通过 imageSrcToURL 获取图片 URL
imageSrcToURL 函数用于将图片的Src 属性转换为可访问的 URL。参数说明:$root:根上下文对象Src:图片源,可以是image_key或 http/https URL
- 如果
Src是从图片上传界面获取的image_key,会转换为可访问的 URL(短期有效) - 如果
Src是 http/https 地址,直接返回该地址
通过 transferImage 上传图片到第三方平台
transferImage 函数用于将图片转换并上传到第三方通知平台。参数说明:$root:根上下文对象Src:图片源,可以是image_key或 http/https URL
- 最大图片大小:10 MB
- 支持格式:JPG、JPEG、PNG、WEBP、GIF、BMP、ICO、TIFF、HEIC
如何使用逻辑运算?
如何使用逻辑运算?
| 函数 | 说明 | 示例 |
|---|---|---|
and | 逻辑与 | {{if and (eq .A "x") (eq .B "y")}} |
or | 逻辑或 | {{if or (eq .A "x") (eq .A "y")}} |
not | 逻辑非 | {{if not (eq .A "x")}} |
eq | 等于 | {{if eq .A "x"}} |
ne | 不等于 | {{if ne .A "x"}} |
gt / ge | 大于 / 大于等于 | {{if gt .AlertCnt 1}} |
lt / le | 小于 / 小于等于 | {{if lt .AlertCnt 10}} |
如何查阅更多函数?
如何查阅更多函数?
- 函数列表:functions.go
- 使用示例:查看对应的
_test.go文件,如 date_test.go
渠道模板
不同通知渠道支持的模板格式和限制不同。- 飞书应用
- 钉钉应用
- 企业微信应用
- Slack 应用
- Microsoft Teams
机器人模板
群聊机器人支持的模板格式。- 飞书机器人
- 钉钉机器人
- 企业微信机器人
- Slack 机器人
- Telegram 机器人
支持消息卡片、富文本和普通文本三种格式。消息最大 4000 字节,超出后截断。
消息卡片(msg_type: interactive)
消息卡片(msg_type: interactive)
富文本(msg_type: post)
富文本(msg_type: post)
普通文本
普通文本
其他渠道
- 短信
- 语音
- 邮件
默认模板:
延伸阅读
配置分派策略
定义故障的通知规则和升级机制
配置个人偏好
自定义通知时段和渠道偏好





