通知设置
概述
1Duty 支持多种通知渠道,确保告警零遗漏。通知分为初始通知和升级通知两种类型:
- 初始通知 -- 告警触发后,系统根据分派策略和排班规则,第一时间向当前值班人发送通知。
- 升级通知 -- 当初始通知超时未被认领时,系统自动将告警升级通知给上一级值班人或团队负责人,确保告警不会被遗漏。
通知渠道
1Duty 支持以下六种通知渠道,覆盖国内主流沟通工具:
短信(SMS)
通过阿里云或腾讯云短信服务发送告警通知。短信内容有 450 字符的长度限制,超出部分将被截断。短信适合发送简洁的告警摘要信息,确保值班人在没有网络的情况下也能及时收到告警。
电话语音(Voice)
自动拨打电话朗读告警内容。电话语音是最强的通知手段,适用于高优先级告警场景,确保值班人即使在休息时也能被唤醒。系统会自动拨打值班人绑定的手机号码,并以语音合成的方式朗读告警摘要。
邮件(Email)
发送格式化的告警邮件。邮件通知包含完整的告警详情,包括告警标题、描述、严重级别、触发时间、相关标签等信息。邮件适合需要详细记录和后续追溯的场景。
钉钉(DingTalk)
支持通过群机器人或应用消息两种方式发送通知。群机器人方式配置简单,适合团队级别的告警群通知;应用消息方式支持 @具体成员,适合精确通知到个人。
飞书(Feishu/Lark)
支持通过群机器人或应用消息两种方式发送通知。与钉钉类似,群机器人适合群组广播,应用消息适合定向通知。飞书通知支持富文本卡片格式,展示效果良好。
企业微信(WeCom)
支持通过群机器人或应用消息两种方式发送通知。企业微信在国内企业中使用广泛,通过群机器人可以快速接入告警通知,应用消息则支持更丰富的消息格式和交互能力。
通知触发规则
1Duty 根据告警的严重级别自动选择合适的通知渠道,确保不同级别的告警使用最恰当的通知方式:
| 告警级别 | 通知渠道 | 说明 |
|---|---|---|
| CRITICAL(严重) | 短信 + 电话 | 同时发送短信和电话,确保值班人能第一时间收到并响应 |
| WARNING(警告) | 短信 | 发送短信通知,提醒值班人关注 |
| INFO(信息) | IM 消息 | 发送 IM 消息(钉钉/飞书/企业微信),用于低优先级告警的信息同步 |
此外,所有级别的告警都支持 IM 群通知。无论告警级别如何,系统都会向配置的 IM 群组发送一份通知,方便团队成员了解整体告警态势。
通知模板
1Duty 支持自定义通知内容,您可以根据不同的通知渠道和场景配置专属的通知模板。
模板类型
通知模板按渠道分为以下类型:
EMAIL-- 邮件模板SMS-- 短信模板VOICE-- 电话语音模板DINGTALK_GROUP-- 钉钉群机器人模板DINGTALK_APP-- 钉钉应用消息模板WECHAT_GROUP-- 企业微信群机器人模板WECHAT_APP-- 企业微信应用消息模板FEISHU_GROUP-- 飞书群机器人模板FEISHU_APP-- 飞书应用消息模板
模板分类
通知模板按使用场景分为两类:
INCIDENT-- 事件通知模板,用于告警触发、认领、关闭等事件生命周期通知。SHIFT_CHANGE-- 排班变更模板,用于排班轮换时通知即将上岗和下岗的值班人。
模板引擎
1Duty 使用 Pebble 模板引擎来渲染通知内容。Pebble 是一种类似 Jinja2 的模板语言,语法简洁直观。
以下是一个短信模板示例:
[1Duty] {{ severity }} 告警: {{ title }}
来源: {{ alert_source }}
时间: {{ created_at }}
状态: {{ status }}
详情: {{ description }}
可用变量
在模板中可以使用以下变量:
| 变量名 | 说明 | 示例值 |
|---|---|---|
title |
告警标题 | CPU 使用率超过 90% |
description |
告警详细描述 | 服务器 prod-web-01 的 CPU 使用率持续超过阈值 |
severity |
告警级别 | CRITICAL / WARNING / INFO |
status |
事件状态 | TRIGGERED / ACKNOWLEDGED / RESOLVED |
id |
事件唯一标识 | INC-20240101-0001 |
alert_source |
告警来源 | 生产环境 Prometheus |
created_at |
告警触发时间 | 2024-01-15 14:30:00 |
labels |
告警标签(键值对) | instance=prod-web-01, job=node_exporter |
IM 群组配置
1Duty 支持将告警通知发送到钉钉、飞书、企业微信的群组中,方便团队实时掌握告警动态。
Webhook 方式
Webhook 方式是最简单的接入方式,只需在 IM 群组中添加一个自定义机器人,然后将机器人的 Webhook URL 粘贴到 1Duty 即可。
- 在 IM 群组中添加"自定义机器人"(钉钉/飞书/企业微信均支持)。
- 复制机器人生成的 Webhook URL。
- 在 1Duty 控制台的通知配置页面,选择对应的 IM 渠道,粘贴 Webhook URL。
- 发送测试消息验证配置是否生效。
应用方式
应用方式需要配置 AppKey 和 AppSecret,但功能更强大,支持 @具体人员,实现精准通知。
- 在 IM 开放平台创建企业内部应用(钉钉开放平台 / 飞书开放平台 / 企业微信管理后台)。
- 获取应用的 AppKey(或 AppID)和 AppSecret。
- 在 1Duty 控制台的通知配置页面,填入 AppKey 和 AppSecret。
- 配置成员的 IM 账号映射,确保系统能正确 @到对应的人。
速率限制
各 IM 平台对机器人消息有速率限制,1Duty 会自动控制发送频率以避免触发限制:
| 平台 | 速率限制 | 说明 |
|---|---|---|
| 钉钉(DingTalk) | 20 条/分钟 | 每个机器人每分钟最多发送 20 条消息 |
| 企业微信(WeCom) | 20 条/分钟 | 每个机器人每分钟最多发送 20 条消息 |
| 飞书(Feishu/Lark) | 50 条/分钟 | 每个机器人每分钟最多发送 50 条消息 |
当告警量较大时,1Duty 会自动对消息进行合并和排队,确保不超过平台速率限制的同时,优先发送高优先级告警的通知。
通知故障转移
为确保告警通知的可靠性,1Duty 实现了通知故障转移机制。当主通知通道出现故障时,系统会自动切换到备用通道。
自动禁用
当某个通知通道连续 5 次发送失败时,系统会自动将该通道标记为不可用,后续通知将自动切换到备用通道发送。
自动重试
被禁用的通道会在 5 分钟后自动进行健康检查,尝试重新发送测试消息。如果发送成功,该通道将自动恢复为可用状态。
升级通知策略
升级通知使用轮询策略,依次尝试所有可用的通知通道,直到至少有一个通道成功送达为止。这确保了即使部分通道出现故障,升级通知也不会丢失。
建议为每个团队配置至少两种不同类型的通知渠道(例如短信 + 钉钉),以提高通知的可靠性。