告警接入
概述
1Duty 通过集成(Integration)和Webhook接入外部告警。集成是告警接入的顶层组织单元,一个集成可以包含多个 Webhook,每个 Webhook 对应一个监控源或告警通道。
通过这种设计,你可以灵活地将来自不同监控系统的告警统一汇聚到 1Duty 平台,实现集中管理和自动化处理。
支持的集成类型
1Duty 目前支持 20 种集成类型,覆盖主流监控和告警平台:
基础设施监控
| 集成类型 | 说明 |
|---|---|
| Prometheus | 开源监控系统,通过 AlertManager 发送告警 |
| Grafana | 可视化与告警平台,支持 Webhook 告警通道 |
| Zabbix | 企业级分布式监控系统 |
| Nagios | 经典基础设施监控工具 |
| Icinga | Nagios 分支,现代化监控解决方案 |
云服务
| 集成类型 | 说明 |
|---|---|
| AWS CloudWatch | Amazon Web Services 云监控服务 |
| Azure Monitor | Microsoft Azure 云监控服务 |
| GCP Monitoring | Google Cloud Platform 云监控服务 |
APM (应用性能监控)
| 集成类型 | 说明 |
|---|---|
| Datadog | 全栈云监控与安全平台 |
| SkyWalking | Apache 开源 APM 系统,专注分布式追踪 |
| Sentry | 应用错误追踪与性能监控 |
日志与数据库
| 集成类型 | 说明 |
|---|---|
| Elasticsearch | 分布式搜索与日志分析引擎 |
| InfluxDB | 时序数据库,常用于监控指标存储 |
国产监控
| 集成类型 | 说明 |
|---|---|
| 夜莺 (Nightingale) | 滴滴开源的企业级监控平台 |
| Open-Falcon | 小米开源的分布式监控系统 |
通用与第三方
| 集成类型 | 说明 |
|---|---|
| Custom Webhook | 自定义 Webhook,适配任意系统 |
| 通过邮件接入告警 | |
| UptimeRobot | 网站可用性监控服务 |
| PagerDuty | 第三方事件管理平台告警转发 |
| Jira | Atlassian 项目管理与问题追踪 |
创建集成
按照以下步骤创建一个新的集成:
- 进入「告警管理」菜单,点击「告警接入」
- 点击页面右上角的「新建集成」按钮
- 填写集成的名称和描述信息
- 选择需要关联的团队,将集成绑定到特定团队
- 点击「保存」完成创建
一个集成通常对应一个业务系统或服务集群,你可以根据业务划分来组织集成。例如为"支付服务"创建一个集成,在其下添加 Prometheus 和 Elasticsearch 两个 Webhook。
创建 Webhook
集成创建完成后,需要在集成下添加 Webhook 来接收告警数据:
- 进入集成详情页面
- 点击「添加 Webhook」按钮
- 选择 Webhook 类型(如 Prometheus、Grafana 等)
- 系统将自动生成唯一的 Webhook URL 和 webhook_key
- 将生成的 Webhook URL 配置到对应的监控系统中
每个 Webhook 的 URL 和 webhook_key 都是唯一的,请妥善保管。泄露可能导致非预期的告警数据接入。
配置监控系统
获取 Webhook URL 后,需要在监控系统中进行相应配置。以下是常见监控系统的配置示例。
Prometheus AlertManager
在 AlertManager 的配置文件 alertmanager.yml 中添加 Webhook 接收器:
receivers:
- name: '1duty'
webhook_configs:
- url: 'https://api.1duty.com/webhook/your-webhook-url'
send_resolved: true
route:
receiver: '1duty'
group_by: ['alertname', 'instance']
group_wait: 30s
group_interval: 5m
repeat_interval: 4h
Grafana
在 Grafana 中配置 Webhook 告警通道:
- 进入 Grafana 的 Alerting > Contact points
- 点击「New contact point」
- 选择 Integration 类型为「Webhook」
- 在 URL 字段中填写 1Duty 生成的 Webhook URL
- HTTP Method 选择
POST - 保存并在告警规则中使用该 Contact point
预处理规则
1Duty 支持在告警数据进入系统前通过预处理规则对其进行转换和调整。预处理规则分为两类:
固定值规则
通过预定义的操作对告警字段进行修改:
- 修改标题 - 替换或追加告警标题内容
- 修改描述 - 替换或追加告警描述内容
- 修改级别 - 强制将告警级别设置为指定值
- 过滤 - 根据条件丢弃不需要的告警
脚本规则
通过 Aviator 表达式编写自定义处理逻辑,适用于复杂场景。Aviator 是一个高性能的表达式引擎,支持字符串操作、逻辑判断、正则匹配等。
## 示例:根据告警来源修改级别
if string.contains(title, "OOM") then
severity = "critical"
elsif string.contains(title, "CPU") then
severity = "warning"
end
系统增强字段 (reserved_keys)
当告警数据进入 1Duty 后,系统会自动添加一组增强字段,用于后续的降噪和分派处理:
| 字段名 | 说明 |
|---|---|
severity | 告警级别,系统根据原始数据自动映射或通过预处理规则指定 |
channelName | 告警来源的集成名称 |
webHookName | 接收告警的 Webhook 名称 |
body_text | 告警原始数据的纯文本表示,用于全文检索 |
这些系统字段可以在降噪规则、分派策略和通知模板中引用,帮助你构建更精确的告警处理流程。