本篇目录8 节

08告警与通知Alerting

联系点(Contact point)

联系点回答的是「通知发到哪」。本文给出常用通知渠道类型总表、创建与测试流程,并说明消息模板变量如何用在 Slack、邮件与 Webhook 的通知内容里。

约 2 分钟/722 字/GRAFANA 12.X

联系点是什么

联系点(Contact point)是告警通知的出口:一个目的地加一套凭据,例如一个 Slack 频道、一个 PagerDuty 集成 Key、一个邮件收件人列表或一个 Webhook URL。它只负责「怎么发出去」,不负责「什么时候轮到我发」——后者由通知策略的路由树决定(见通知策略与路由树)。一条路由最终必须落到且只落到一个联系点。

常用类型总表

类型 典型用途 关键配置
Email 邮件通知,支持收件人列表与模板 SMTP 参数(可在 grafana.ini 全局配)
Slack 发到频道或私信 API Token(或 OAuth)、Channel
PagerDuty 值班升级、电话/短信触达 Integration Key、Routing URL
Webhook 对接自建平台、ITSM、短信网关 URL、HTTP 方法、可选 Header 鉴权
钉钉(DingDing) 发到钉钉群机器人 机器人 Webhook 地址与加签密钥;也可退化为通用 Webhook 自写渲染
Microsoft Teams / Google Chat / Telegram 各 IM 群通知 各自 Bot/Connector 凭据

内置类型还有数十种(Opsgenie、Kafka、ServiceNow、VictoOps 等),在创建界面按关键词搜索即可。

创建流程

  1. 打开 Alerting → Contact points → Add contact point
  2. Name(唯一,路由策略引用它),选择 Integration type
  3. 填写该类型的必填项,如 Slack 的 Token 与 Channel、Webhook 的 URL。
  4. (可选)展开 Custom message 区域,勾选自定义标题/正文,写入模板变量。
  5. 点击 Save contact point

提示: 凭据类字段(Token、密码)保存后以掩码显示,下次编辑需重新填写,无法查看原文——这是设计使然,不是丢数据。

测试按钮

每个联系点详情页与列表行都有 Test 按钮,点击后 Grafana 构造一条测试通知直接发往该渠道,不经过规则与路由树。它验证的是「凭据与网络通不通」,验证不了路由是否会把真实告警送到这里,两者要分开排查。Webhook 类型本地快速验证可以起一个监听:

# 用 Python 起一个临时 HTTP 服务,把联系点 URL 指向它
python -m http.server 8000
# 或更直观地查看 POST 内容
nc -l 8000

Provisioning 中的联系点

文件即代码的管理方式(详见 Provisioning:配置即代码):

apiVersion: 1
contactPoints:
  - orgId: 1
    name: oncall-slack
    receivers:
      - uid: oncall_slack
        type: slack
        settings:
          recipient: "#oncall"

注意: Slack Token、Webhook 密钥等敏感字段会被加密落库,不建议写明文进 provisioning 文件;常见做法是文件里只放非敏感参数,凭据在 UI 补齐,以你使用的版本实际支持范围为准。

消息里的模板变量

各类型的自定义消息字段支持 Go 模板语法,常用变量有 {{ .CommonLabels.alertname }}{{ .Annotations.summary }}{{ range .Alerts }} 等;Webhook 收到的是固定 JSON 载荷而非模板文本。语法细节与完整示例放在静默与通知模板一并讲。

常见坑

  • 改名即断链:路由策略按名字引用联系点,重命名后记得同步更新所有路由。
  • Slack 收不到消息:Token 对应的 Bot 没有被邀请进目标频道。
  • Webhook 超时:对端处理慢会拖住整个通知队列,接收端应尽快返回 2xx、异步处理业务。

下一步

本页为学习整理的中文改写,依据Grafana 官方文档最新版本编写(以 Grafana 12.x 为基准),操作路径请以实际产品界面为准。

Alerting