通知设置

多渠道通知设置 | 确保告警零遗漏

概述

1Duty 支持多种通知渠道,确保告警零遗漏。通知分为初始通知升级通知两种类型:

通知渠道

1Duty 支持以下六种通知渠道,覆盖国内主流沟通工具:

短信(SMS)

通过阿里云或腾讯云短信服务发送告警通知。短信内容有 450 字符的长度限制,超出部分将被截断。短信适合发送简洁的告警摘要信息,确保值班人在没有网络的情况下也能及时收到告警。

电话语音(Voice)

自动拨打电话朗读告警内容。电话语音是最强的通知手段,适用于高优先级告警场景,确保值班人即使在休息时也能被唤醒。系统会自动拨打值班人绑定的手机号码,并以语音合成的方式朗读告警摘要。

邮件(Email)

发送格式化的告警邮件。邮件通知包含完整的告警详情,包括告警标题、描述、严重级别、触发时间、相关标签等信息。邮件适合需要详细记录和后续追溯的场景。

钉钉(DingTalk)

支持通过群机器人或应用消息两种方式发送通知。群机器人方式配置简单,适合团队级别的告警群通知;应用消息方式支持 @具体成员,适合精确通知到个人。

飞书(Feishu/Lark)

支持通过群机器人或应用消息两种方式发送通知。与钉钉类似,群机器人适合群组广播,应用消息适合定向通知。飞书通知支持富文本卡片格式,展示效果良好。

企业微信(WeCom)

支持通过群机器人或应用消息两种方式发送通知。企业微信在国内企业中使用广泛,通过群机器人可以快速接入告警通知,应用消息则支持更丰富的消息格式和交互能力。

通知触发规则

1Duty 根据告警的严重级别自动选择合适的通知渠道,确保不同级别的告警使用最恰当的通知方式:

告警级别 通知渠道 说明
CRITICAL(严重) 短信 + 电话 同时发送短信和电话,确保值班人能第一时间收到并响应
WARNING(警告) 短信 发送短信通知,提醒值班人关注
INFO(信息) IM 消息 发送 IM 消息(钉钉/飞书/企业微信),用于低优先级告警的信息同步

此外,所有级别的告警都支持 IM 群通知。无论告警级别如何,系统都会向配置的 IM 群组发送一份通知,方便团队成员了解整体告警态势。

通知模板

1Duty 支持自定义通知内容,您可以根据不同的通知渠道和场景配置专属的通知模板。

模板类型

通知模板按渠道分为以下类型:

模板分类

通知模板按使用场景分为两类:

模板引擎

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 即可。

  1. 在 IM 群组中添加"自定义机器人"(钉钉/飞书/企业微信均支持)。
  2. 复制机器人生成的 Webhook URL。
  3. 在 1Duty 控制台的通知配置页面,选择对应的 IM 渠道,粘贴 Webhook URL。
  4. 发送测试消息验证配置是否生效。

应用方式

应用方式需要配置 AppKey 和 AppSecret,但功能更强大,支持 @具体人员,实现精准通知。

  1. 在 IM 开放平台创建企业内部应用(钉钉开放平台 / 飞书开放平台 / 企业微信管理后台)。
  2. 获取应用的 AppKey(或 AppID)和 AppSecret。
  3. 在 1Duty 控制台的通知配置页面,填入 AppKey 和 AppSecret。
  4. 配置成员的 IM 账号映射,确保系统能正确 @到对应的人。

速率限制

各 IM 平台对机器人消息有速率限制,1Duty 会自动控制发送频率以避免触发限制:

平台 速率限制 说明
钉钉(DingTalk) 20 条/分钟 每个机器人每分钟最多发送 20 条消息
企业微信(WeCom) 20 条/分钟 每个机器人每分钟最多发送 20 条消息
飞书(Feishu/Lark) 50 条/分钟 每个机器人每分钟最多发送 50 条消息

当告警量较大时,1Duty 会自动对消息进行合并和排队,确保不超过平台速率限制的同时,优先发送高优先级告警的通知。

通知故障转移

为确保告警通知的可靠性,1Duty 实现了通知故障转移机制。当主通知通道出现故障时,系统会自动切换到备用通道。

自动禁用

当某个通知通道连续 5 次发送失败时,系统会自动将该通道标记为不可用,后续通知将自动切换到备用通道发送。

自动重试

被禁用的通道会在 5 分钟后自动进行健康检查,尝试重新发送测试消息。如果发送成功,该通道将自动恢复为可用状态。

升级通知策略

升级通知使用轮询策略,依次尝试所有可用的通知通道,直到至少有一个通道成功送达为止。这确保了即使部分通道出现故障,升级通知也不会丢失。

建议为每个团队配置至少两种不同类型的通知渠道(例如短信 + 钉钉),以提高通知的可靠性。