amtool 是什么
amtool 是 Alertmanager 自带的命令行工具,覆盖日常运维的几件高频事:校验配置文件、查询当前触发的告警、创建与查询静默、预演一组标签会命中哪条路由。它的价值在于把「改完配置上线才发现路由错了」这类问题提前到本地校验阶段——尤其是路由预演,一次命令就能打印出匹配链路,成本极低。
基本信息
| 适用平台 | Alertmanager 发行包自带,版本需与告警服务一致 |
|---|---|
| 常用子命令 | check-config、alert query、silence、config routes test |
| 连接参数 | 通过 --alertmanager.url 指定服务地址 |
| 输出控制 | 支持 --output 指定格式,便于脚本消费 |
典型使用场景
- 上线前校验:提交配置前跑一次 check-config,拦住语法与引用错误
- 路由回归:改了路由树后用 routes test 预演关键标签组合
- 值班查询:当前有哪些告警在触发、由谁负责
- 演练准备:提前创建静默,演练结束后统一过期
- CI 门禁:把校验命令写进流水线,禁止未校验的配置合并
常用命令
常用命令
# 配置与路由校验
amtool check-config alertmanager.yml
amtool config routes test --config.file=alertmanager.yml severity=critical service=order-svc
# 当前告警查询
amtool alert query --alertmanager.url=http://127.0.0.1:9093
amtool alert query --alertmanager.url=http://127.0.0.1:9093 'alertname="HighErrorRate"'
# 静默管理(演练前创建,结束后可手动过期)
amtool silence add --alertmanager.url=http://127.0.0.1:9093 --comment="演练" --duration=1h 'service="order-svc"'
amtool silence query --alertmanager.url=http://127.0.0.1:9093子命令与用途
| 子命令 | 作用 | 使用要点 |
|---|---|---|
| check-config | 校验配置文件语法与引用 | 不需要连接服务,可离线跑 |
| config routes test | 预演标签命中哪条路由 | 改路由后必跑 |
| alert query | 查询当前告警 | 需要指定服务地址 |
| silence add/query/expire | 静默的增查改 | 静默都带创建人与注释,便于追溯 |
| cluster show | 查看集群成员状态 | 多副本部署时确认节点互通 |
静默是临时手段而不是长期治理方式:长期静默会积累成无人复核的盲区,建议定期审视静默清单并把常见误报转化为规则调整。
不同版本的子命令参数存在差异,值班脚本与流水线里固定工具版本,避免升级后脚本静默失效。