配置通知模板
什么场景会使用模板?
分派故障
时,使用模板渲染 Incident 并触发通知,分派可能发生于以下场景:1.
2.
3.
4.
5.
Golang模板语法
template/html 解析数据,您可完成任何复杂的渲染需求。如何配置通知模板?
配置通知模板
1.
模版管理
页面,点击创建自定义模板
按钮或者复制默认模版
,进入编辑页面。2.
3.
保存
按钮,即可保存模板。使用通知模板
1.
协作空间
->分派策略
页面,点击编辑
按钮,进入编辑页面。2.
3.
4.
保存
按钮,即可保存分派策略。我可以引用哪些变量?
字段 | 类型 | 必含 | 释义 |
---|---|---|---|
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 秒时间戳,默认为 0 |
EndTime | int64 | 否 | 恢复时间,关联的告警全部恢复时,故障会自动恢复且自动关闭。Unix 秒时间戳,默认为 0 |
SnoozedBefore | int64 | 否 | 屏蔽截止时间,Unix 秒时间戳,默认为 0 |
AckTime | int64 | 否 | 首次认领时间,Unix 秒时间戳,默认为 0 |
CloseTime | int64 | 否 | 关闭时间,end_time 为故障恢复时间,close_time 为处理进度的关闭时间,故障恢复时会自动关闭,故障手动关闭时不影响故障恢复。Unix 秒时间戳,默认为 0 |
Creator | Person | 否 | 发起人信息,系统自动生成时不存在 |
Closer | Person | 否 | 关闭人信息,故障自动恢复时不存在 |
AssignedTo | Assignment | 否 | 分派配置 |
Responders | []Responder | 否 | 处理人列表,根据分派配置初始化,如果有非分派人员认领了故障,也会存在对应记录 |
ChannelID | int64 | 否 | 协作空间 ID,当手动创建全局故障时值为 0 |
ChannelName | string | 否 | 协作空间名称 |
GroupMethod | string | 否 | 聚合方式,枚举值:n:不聚合,p:按规则聚合,i:智能聚合 |
Labels | map[string]string | 否 | 标签 KV,Key 和 Value 均为字符串。手动创建时无此信息,自动创建时为聚合的第一条告警的标签信息 |
AlertCnt | int64 | 是 | 关联告警个数 |
Alerts | []Alert | 否 | 关联告警详情,手动创建时无此信息 |
FireType | string | 否 | 通知类型,枚举值:fire:通知,refire:循环通知 |
IsFlapping | bool | 否 | 是否处于抖动状态,即频繁发生与恢复,与收敛配置有关 |
Impact | string | 否 | 故障影响,故障关闭后填写 |
RootCause | string | 否 | 故障根因,故障关闭后填写 |
Resolution | string | 否 | 故障解决办法,故障关闭后填写 |
字段 | 类型 | 必含 | 释义 |
---|---|---|---|
person_id | int64 | 是 | 人员 ID |
person_name | string | 是 | 人员名称 |
string | 是 | 邮件地址 |
字段 | 类型 | 必含 | 释义 |
---|---|---|---|
PersonIDs | []string | 否 | 人员 ID 列表,仅当按照人员分派时存在 |
EscalateRuleID | string | 否 | 分派策略 ID,仅当按照策略分派时存在 |
EscalateRuleName | string | 否 | 分派策略名称 |
LayerIdx | string | 否 | 分派环节,对应分派策略的层级索引,从 0 开始 |
Type | string | 是 | 分派类型,枚举值:assign:分派,reassign:重新分派,escalate:升级分派,reopen:重开分派 |
字段 | 类型 | 必含 | 释义 |
---|---|---|---|
PersonID | int64 | 是 | 人员 ID |
PersonName | string | 是 | 人员名称 |
string | 是 | 邮件地址 | |
AssignedAt | int64 | 是 | 分派时间,Unix 秒时间戳,默认为 0 |
AcknowledgedAt | int64 | 否 | 认领时间,Unix 秒时间戳,默认为 0 |
字段 | 类型 | 必含 | 释义 |
---|---|---|---|
Title | string | 是 | 告警标题 |
Description | string | 是 | 告警描述,可能为空 |
AlertSeverity | string | 是 | 严重程度,枚举值:Critical,Warning,Info |
AlertStatus | string | 是 | 告警状态,枚举值:Critical,Warning,Info,Ok |
Progress | string | 是 | 处理进度,枚举值:Triggered,Processing,Closed |
StartTime | int64 | 是 | 触发时间,Unix 秒时间戳 |
EndTime | int64 | 否 | 恢复时间,Unix 秒时间戳,默认为 0 |
CloseTime | int64 | 否 | 关闭时间,EndTime 为告警恢复时间,CloseTime 为处理进度的关闭时间,告警恢复时会自动关闭,告警手动关闭时不影响告警恢复。Unix 秒时间戳,默认为 0 |
Labels | map[string]string | 否 | 标签 KV,Key 和 Value 均为字符串 |
常见问题
1.
Labels
具体有哪些标签信息?故障列表
页面,找到一条故障并查看故障详情,可以看到全部标签信息2.
默认模板
?resource
标签:
3.
字符转义
?
4.
转换时间格式
?
5.
6.
7.
8.
9.
// 提取 rule_note 标签中的 detail_url 字段
{{jsonGet .Labels.rule_note "detail_url"}}
// 提取 json 数组中第一个元素的 name 字段
{{jsonGet .Labels.slice "0.name"}}
// 遍历 json 数组的每一个元素,匹配 userId==7777 这个对象的 instanceId 字段
{{jsonGet .Labels.rule_note "#(userId==7777)#.instanceId" }}
10.
# 支持的函数
- 使用 `and` 函数进行逻辑与判断
- 使用 `or` 函数进行逻辑或判断
- 使用 `not` 函数进行逻辑非判断
- 使用 `eq` 函数进行逻辑等于判断
- 使用 `ne` 函数进行逻辑不等于判断
- 使用 `gt` 函数进行逻辑大于判断
- 使用 `ge` 函数进行逻辑大于等于判断
- 使用 `lt` 函数进行逻辑小于判断
- 使用 `le` 函数进行逻辑小于等于判断
# 使用示例
# 使用 and 函数进行逻辑与判断
{{if and (eq .Labels.resource "cpu") (eq .Labels.metric "cpu_usage")}}
{{.Labels.resource}} 的 CPU 使用率超过 80%
{{end}}
# 使用 or 函数进行逻辑或判断
{{if or (eq .Labels.resource "cpu") (eq .Labels.metric "cpu_usage")}}
{{.Labels.resource}} 的 CPU 使用率超过 80%
{{end}}
# 使用 not 函数进行逻辑非判断
{{if not (eq .Labels.metric "cpu_usage")}}
{{.Labels.metric}} 不是 CPU 使用率
{{end}}
11.