Slack 接收器怎么写
slack_configs 使用 Slack 的 Incoming Webhook 地址投递告警:api_url 决定发给哪个工作区,channel 可以覆盖默认频道,title 与 text 支持模板函数,能按告警状态着色。它是 Alertmanager 中最常用的 IM 通道之一,配置简单,但凭据管理与消息长度限制要提前考虑。
基本信息
| 配置块 | receivers 下的 slack_configs |
|---|---|
| 凭据字段 | api_url 或 api_url_file,后者从文件读取更安全 |
| 频道控制 | channel 覆盖 Webhook 默认频道 |
| 消息模板 | title、text、color 支持 Go 模板 |
| 重发控制 | send_resolved 决定恢复时是否再发一条 |
接收器示例
接收器示例
receivers:
- name: slack-warn
slack_configs:
- api_url_file: /etc/alertmanager/slack.url
channel: "#alerts-warning"
send_resolved: true
title: '{{ template "slack.title" . }}'
text: '{{ template "slack.text" . }}'
color: '{{ if eq .Status "firing" }}danger{{ else }}good{{ end }}'字段说明
| 字段 | 作用 | 注意点 |
|---|---|---|
| api_url | Webhook 地址 | 属凭据,泄露后任何人可向该频道发消息 |
| api_url_file | 从文件读取地址 | 权限收紧,配合密钥管理轮换 |
| channel | 覆盖默认频道 | 频道名写错时投递静默失败 |
| title / text | 消息标题与正文 | 过长会被平台截断,摘要放前面 |
| send_resolved | 恢复通知开关 | 风暴时会产生大量恢复消息 |
典型使用场景
- 按级别分频道:警告进日常工作频道,严重告警进值班频道
- 把告警摘要与看板链接一起发出,便于快速判断影响范围
- 作为电话与短信的补充通道,给不需要立刻响应的问题留痕
- 接入新团队时先发测试消息,确认频道与模板渲染都正常
机器人被移出频道或频道名写错时投递会静默失败,定期发测试消息核对;工程上把 api_url 放文件并限制读取权限。
api_url 一旦泄露可被任意发消息,凭据文件权限要收紧并定期轮换,轮换时同步更新所有引用它的接收器。
排查要点
- 消息没到先看 Alertmanager 日志里的投递错误,非法 Webhook 会有明确返回
- 消息到了但内容为空,多半是模板引用了不存在的标签,逐字段核对渲染结果
- 恢复通知过多时先检查 send_resolved 与分组参数,避免风暴期刷屏
- Slack 侧也有速率限制,风暴期被限流时优先在 Alertmanager 侧用分组减少发送次数