Webhook#
Webhook 是最通用的 Alertmanager 集成方式。任何平台只要能接收 HTTP POST,都可以通过 webhook_configs 对接。
1. Alertmanager Webhook Payload#
Alertmanager 会向 webhook endpoint 发送 JSON payload。
docs:
- https://prometheus.io/docs/alerting/latest/configuration/#webhook_config
- https://prometheus.io/docs/alerting/latest/notifications/
2. Alertmanager Config#
route:
receiver: custom-webhook
receivers:
- name: custom-webhook
webhook_configs:
- url: http://alert-webhook.example.com/alertmanager
send_resolved: true
max_alerts: 203. Node.js Receiver Example#
import express from 'express';
const app = express();
app.use(express.json());
app.post('/alertmanager', (req, res) => {
const { status, groupLabels, commonLabels, alerts } = req.body;
console.log({
status,
groupLabels,
commonLabels,
count: alerts.length,
});
res.sendStatus(200);
});
app.listen(5001, () => {
console.log('webhook receiver listening on :5001');
});4. Notes#
Best Practice:
webhook receiver 必须快速返回 2xx
平台 API 调用失败时要有 retry / dead letter
不要在 webhook 里做复杂查询
对外暴露时要加认证或网络限制