告警接入

了解如何将外部监控系统的告警接入 1Duty 平台

概述

1Duty 通过集成(Integration)Webhook接入外部告警。集成是告警接入的顶层组织单元,一个集成可以包含多个 Webhook,每个 Webhook 对应一个监控源或告警通道。

通过这种设计,你可以灵活地将来自不同监控系统的告警统一汇聚到 1Duty 平台,实现集中管理和自动化处理。

支持的集成类型

1Duty 目前支持 20 种集成类型,覆盖主流监控和告警平台:

基础设施监控

集成类型说明
Prometheus开源监控系统,通过 AlertManager 发送告警
Grafana可视化与告警平台,支持 Webhook 告警通道
Zabbix企业级分布式监控系统
Nagios经典基础设施监控工具
IcingaNagios 分支,现代化监控解决方案

云服务

集成类型说明
AWS CloudWatchAmazon Web Services 云监控服务
Azure MonitorMicrosoft Azure 云监控服务
GCP MonitoringGoogle Cloud Platform 云监控服务

APM (应用性能监控)

集成类型说明
Datadog全栈云监控与安全平台
SkyWalkingApache 开源 APM 系统,专注分布式追踪
Sentry应用错误追踪与性能监控

日志与数据库

集成类型说明
Elasticsearch分布式搜索与日志分析引擎
InfluxDB时序数据库,常用于监控指标存储

国产监控

集成类型说明
夜莺 (Nightingale)滴滴开源的企业级监控平台
Open-Falcon小米开源的分布式监控系统

通用与第三方

集成类型说明
Custom Webhook自定义 Webhook,适配任意系统
Email通过邮件接入告警
UptimeRobot网站可用性监控服务
PagerDuty第三方事件管理平台告警转发
JiraAtlassian 项目管理与问题追踪

创建集成

按照以下步骤创建一个新的集成:

  1. 进入「告警管理」菜单,点击「告警接入」
  2. 点击页面右上角的「新建集成」按钮
  3. 填写集成的名称描述信息
  4. 选择需要关联的团队,将集成绑定到特定团队
  5. 点击「保存」完成创建

一个集成通常对应一个业务系统或服务集群,你可以根据业务划分来组织集成。例如为"支付服务"创建一个集成,在其下添加 Prometheus 和 Elasticsearch 两个 Webhook。

创建 Webhook

集成创建完成后,需要在集成下添加 Webhook 来接收告警数据:

  1. 进入集成详情页面
  2. 点击「添加 Webhook」按钮
  3. 选择 Webhook 类型(如 Prometheus、Grafana 等)
  4. 系统将自动生成唯一的 Webhook URLwebhook_key
  5. 将生成的 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 告警通道:

  1. 进入 Grafana 的 Alerting > Contact points
  2. 点击「New contact point」
  3. 选择 Integration 类型为「Webhook」
  4. 在 URL 字段中填写 1Duty 生成的 Webhook URL
  5. HTTP Method 选择 POST
  6. 保存并在告警规则中使用该 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告警原始数据的纯文本表示,用于全文检索

这些系统字段可以在降噪规则、分派策略和通知模板中引用,帮助你构建更精确的告警处理流程。