一、登录n8n之后创建工作节点


测试webhook能否正常

在 n8n 工作流编辑器的顶部工具栏,点击 "Executions" (执行记录)按钮。在弹出的列表里,可以看到刚才那次 curl 请求的执行记录。

点击这条记录,就能看到 Webhook 收到的完整 JSON 数据,以及每个节点的输入输出。这能确认告警数据是否完整地传进来了。

二、用 HTTP Request 节点将告警消息推送到钉钉
第一步:添加 HTTP Request 节点
-
从 Webhook 节点右侧的灰色小圆点,拖出一条线到空白处
-
松开鼠标,在搜索框里输入
HTTP Request -
点击选择 HTTP Request 节点

第二步:配置 HTTP Request 节点


{
"msgtype": "text",
"text": {
"content": "🚨 Prometheus 告警\n告警名称:{{ $json.alerts[0].labels.alertname }}\n告警状态:{{ $json.status }}\n严重级别:{{ $json.alerts[0].labels.severity }}\n告警详情:{{ $json.alerts[0].annotations.summary }}"
}
}
保存之后测试钉钉是否收到消息


curl -X POST http://localhost:5678/webhook/alert -H "Content-Type: application/json" -d '{
"status": "firing",
"alerts": [{
"labels": {
"alertname": "CPU过载",
"severity": "critical"
},
"annotations": {
"summary": "CPU使用率超过95%"
}
}]
}'

到了这一步测试发现可以收到消息
三、配置alertmanager告警规则
route:
# 默认接收人
receiver: 'n8n-webhook'
# 同组告警等待时间
group_wait: 5s
# 两组告警间隔时间
group_interval: 10s
# 重复告警间隔时间
repeat_interval: 30s
# 按告警名称分组
group_by: [alertname]
receivers:
- name: 'n8n-webhook'
webhook_configs:
- url: 'http://192.168.158.134:31553/webhook/alert'
send_resolved: true
重启一下alertmanager
在alertmanager服务器上测试触发告警
curl -X POST http://192.168.158.134:31553/webhook/alert \
-H "Content-Type: application/json" \
-d '{
"status": "firing",
"alerts": [
{
"labels": {
"alertname": "模拟告警",
"severity": "warning",
"instance": "test-server",
"job": "test-job"
},
"annotations": {
"summary": "这是一条模拟告警",
"description": "用于测试 Alertmanager 到 n8n 的链路是否正常"
},
"startsAt": "2026-07-12T15:00:00Z"
}
],
"groupLabels": {
"alertname": "模拟告警"
},
"commonLabels": {
"alertname": "模拟告警"
}
}'

n8n是能看到成功的

但是钉钉发布的消息没有显示具体内容,所以还得要适配一下

四、添加 NoOp和Set节点优化JSON格式输出

NoOp节点不需要添加什么东西

Set节点添加以下内容Name value
alertname {{ $json.body.alerts[0].labels.alertname }}
status {{ $json.body.status }}
severity {{ $json.body.alerts[0].labels.severity }}
instance {{ $json.body.alerts[0].labels.instance }}
summary {{ $json.body.alerts[0].annotations.summary }}
current_value {{ Number($json.body.alerts[0].annotations.value).toFixed(2) }}

编辑一下prometheus告警规则,能按照真实场景输出

然后重启一下prometheus,等一分钟重新观察钉钉输出

显示正常了,监控告警系统已经实现了
|------------------------------|-------|
| Prometheus 告警规则 | ✅ 已配置 |
| Alertmanager 转发到 n8n Webhook | ✅ 已配置 |
| n8n 工作流接收并解析告警数据 | ✅ 已配置 |
| Set 节点提取关键字段 | ✅ 已配置 |
| HTTP Request 发送到钉钉 | ✅ 已配置 |
| 消息格式化(保留两位小数) | ✅ 已完成 |
接下来继续实现自动化处理告警故障的功能,比如产生磁盘空间不足的告警之后自动处理等等。