如何使用curl在Alertmanager创建测试告警以验证第三方集成?
无需修改Prometheus规则模拟告警测试Alertmanager集成的方法
以下几种方案都能绕过Prometheus规则,直接向Alertmanager推送模拟告警,完全满足测试第三方集成的需求:
1. 直接调用Alertmanager API发送告警
Alertmanager本身提供了接收告警的API接口,直接通过HTTP POST请求就能推送模拟告警,不需要经过Prometheus。
用curl执行示例:
curl -X POST -H "Content-Type: application/json" -d '[ { "labels": { "alertname": "TestAlert", "severity": "critical", "instance": "test-instance-01" }, "annotations": { "summary": "测试告警", "description": "这是用于验证Alertmanager第三方集成的模拟告警" }, "startsAt": "2024-05-20T12:00:00Z", "endsAt": "2024-05-20T12:10:00Z" } ]' http://<你的Alertmanager地址>:<端口>/api/v2/alerts
- 替换
<你的Alertmanager地址>:<端口>为实际地址,比如localhost:9093 labels里的alertname是必填项,其他标签可以根据你的路由规则自定义startsAt和endsAt采用ISO8601时间格式,若留空,Alertmanager会自动填充当前时间
如果要测试告警恢复,要么发送endsAt早于当前时间的告警,要么调用删除接口:
curl -X POST -H "Content-Type: application/json" -d '[ { "labels": { "alertname": "TestAlert", "severity": "critical", "instance": "test-instance-01" } } ]' http://<你的Alertmanager地址>:<端口>/api/v2/alerts/delete
2. 使用Alertmanager官方CLI工具amtool
amtool是Alertmanager自带的命令行工具,操作更简洁,适合快速测试。
发送模拟告警
amtool alert add alertname=TestAlert severity=critical instance=test-instance-01 summary="测试告警" description="模拟测试告警"
如果Alertmanager不在本地默认端口,需要指定地址:
amtool alert add --alertmanager.url=http://<你的Alertmanager地址>:<端口> alertname=TestAlert severity=critical
查看告警状态
amtool alert query
删除告警(测试恢复流程)
amtool alert delete alertname=TestAlert severity=critical instance=test-instance-01
这两种方法都能让Alertmanager像处理Prometheus触发的告警一样,将模拟告警路由到你配置的第三方集成(邮件、Slack、PagerDuty等),完全不需要修改任何Prometheus规则文件。
内容的提问来源于stack exchange,提问作者Henrique Capozzi
相关产品推荐
相关产品推荐

