通知模板
概述
通知模板定义了告警通知消息的内容格式。1Duty 为每种通知渠道提供了默认模板,同时支持自定义模板,您可以根据团队的实际需求调整通知内容,突出关键信息,让值班人快速理解告警上下文。
模板类型
通知模板按通知渠道分为以下类型:
| 模板类型 | 标识 | 适用渠道 |
|---|---|---|
| 短信模板 | SMS |
短信通知 |
| 电话语音模板 | VOICE |
电话语音通知 |
| 邮件模板 | EMAIL |
邮件通知 |
| 钉钉群模板 | DINGTALK_GROUP |
钉钉群机器人消息 |
| 钉钉应用模板 | DINGTALK_APP |
钉钉应用消息(个人) |
| 飞书群模板 | FEISHU_GROUP |
飞书群机器人消息 |
| 飞书应用模板 | FEISHU_APP |
飞书应用消息(个人) |
| 企业微信群模板 | WECHAT_GROUP |
企业微信群机器人消息 |
| 企业微信应用模板 | WECHAT_APP |
企业微信应用消息(个人) |
模板场景
每种模板类型又可按使用场景细分:
- 事件通知(INCIDENT) -- 告警触发、认领、解决等事件生命周期变更通知
- 排班变更(SHIFT_CHANGE) -- 排班轮换时通知即将上岗和下岗的值班人
支持的变量
在通知模板中可以使用以下变量,系统会在发送通知时自动替换为实际值:
| 变量名 | 说明 | 示例值 |
|---|---|---|
title |
告警标题 | CPU 使用率超过 90% |
description |
告警详细描述 | 服务器 prod-web-01 的 CPU 使用率持续超过阈值 |
severity |
告警级别 | CRITICAL / WARNING / INFO |
status |
事件状态 | TRIGGERED / ACKNOWLEDGED / RESOLVED |
team_name |
值班团队名称 | 基础设施运维组 |
assignee |
当前值班人 | 张三 |
alert_source |
告警来源集成名称 | 生产环境 Prometheus |
created_at |
告警触发时间 | 2024-01-15 14:30:00 |
id |
事件唯一标识 | INC-20240115-0001 |
labels |
告警标签(键值对) | instance=prod-web-01, job=node_exporter |
incident_url |
事件详情链接 | https://app.1duty.com/incidents/xxx |
模板语法
1Duty 使用 Pebble 模板引擎 渲染通知内容,语法类似 Jinja2,简洁易用。
基础用法
使用双花括号 {{ }} 输出变量值:
[1Duty] {{ severity }} 告警: {{ title }}
团队: {{ team_name }}
值班人: {{ assignee }}
时间: {{ created_at }}
详情: {{ description }}
条件判断
使用 {% if %} 进行条件渲染:
{% if severity == 'CRITICAL' %}
紧急告警,请立即处理!
{% else %}
请关注以下告警:
{% endif %}
{{ title }}
默认值
当变量可能为空时,使用 default 过滤器提供默认值:
描述: {{ description | default('暂无描述') }}
编辑模板
按照以下步骤自定义通知模板:
- 进入「组织管理」>「通知模板」页面
- 选择要编辑的模板类型和场景
- 在编辑器中修改模板内容
- 点击「预览」查看渲染效果
- 确认无误后点击「保存」
编辑模板时可以随时点击「预览」按钮查看模板的实际渲染效果。系统会使用模拟数据填充所有变量,帮助您确认格式是否正确。
模板预览
模板预览功能允许您在保存前查看通知的实际效果:
- 系统提供一组模拟告警数据用于预览
- 预览会按照目标渠道的实际格式呈现(如 Markdown 格式、HTML 格式等)
- 如果模板语法有误,预览时会显示错误提示
恢复默认模板
如果自定义模板出现问题或希望回到初始状态,可以点击「恢复默认」按钮将模板重置为系统默认版本。
恢复默认操作不可撤销,您之前的自定义内容将会丢失。建议在操作前备份当前模板内容。
最佳实践
- 短信模板保持简洁 -- 短信有字符数限制(450字符),建议仅包含标题、级别和时间等核心信息
- IM消息突出重点 -- 使用 Markdown 格式的加粗、引用等排版方式突出关键信息
- 包含事件链接 -- 在模板中加入
{{ incident_url }},方便值班人点击直接跳转到事件详情页 - 标注值班团队 -- 在群消息模板中包含
{{ team_name }},帮助多团队共用群时区分告警归属