2026-09-11 · 原文发布日
n8n模板:Alertmanager告警自动去重、AI定位根因并分级通知
免费模板,接收Prometheus Alertmanager的告警webhook,在Postgres里去重并设冷却窗口压制告警风暴,把告警分类为客户端或后端侧后,由OpenAI工具调用agent查询遥测、指标、近期发布记录和历史事故的向量库做根因分析,输出非法时进死信队列,最终按升级策略分流到Slack、邮件、PagerDuty,并同步建单或评论到ClickUp。适合有值班体系的运维团队。
原文要点
这是n8n.io上Oneclick AI Squad发布的免费工作流模板(编号19463):接收Prometheus Alertmanager的firing/resolved告警webhook,规范指纹、严重级别、来源、受影响服务等字段;resolved立即在Postgres关单并通知Slack。firing先查Postgres去重,冷却窗口内重复告警只累加发生次数、压制告警风暴;再把告警分类为客户端侧或后端侧,由OpenAI工具调用代理做根因分析,可查客户端遥测API、Prometheus指标、近期发布记录和历史事故向量库;输出非法JSON进死信路径;然后按升级策略分流到Slack、邮件、PagerDuty,并在ClickUp建单或评论,最后写健康日志表并返回JSON响应。需配置六类凭据并建三张Postgres表。
这次做成什么
搭一个等效练习流程:webhook收告警→Postgres去重与冷却→分类→AI根因分析→按级别分流通知→建单登记。练习用合成告警payload和本地测试表,不接真实PagerDuty服务。
准备什么
- 可运行的n8n实例,且能暴露公网或内网可达的webhook地址
- 一个Postgres数据库及建表权限,供 incidents、dead_letter_events、workflow_health_log 三表使用
- OpenAI API密钥,用于根因分析代理
- Slack工作区及Bot凭据,有一个测试频道;ClickUp账号及目标List ID
- 练习阶段可暂缓PagerDuty与SMTP,用Slack分支代替验证分流逻辑
具体怎么做
建表并配置webhook入口
在Postgres执行建表:incidents(fingerprint text primary key, service text, severity text, status text, occurrence_count int, first_seen timestamptz, last_seen timestamptz);dead_letter_events(id serial, payload jsonb, created_at timestamptz);workflow_health_log(id serial, run_status text, detail text, created_at timestamptz)。n8n里新建工作流,放Webhook节点,方法POST,路径如/alertmanager;在测试用的Alertmanager配置里把webhook_configs的url指向该地址(无Alertmanager时用下方合成payload手动POST测试)。
规范化、resolved闭环与去重冷却
接Code节点把payload规范化成{fingerprint, severity, service, status}。接IF按status分流:resolved分支执行Postgres Update把status置为resolved并直接发Slack通知。firing分支先Postgres查询同fingerprint且status=open的记录:存在且last_seen在冷却窗口(如15分钟)内则只执行occurrence_count+1并终止;否则继续走分析。
分类与AI根因分析
加Code或分类节点按service前缀等规则标记client_side/backend_side。接AI Agent节点,系统提示词要求代理输出严格JSON{summary, probable_cause, confidence, recommended_action};代理的工具按原模板思路接HTTP查询Prometheus指标与近期发布(练习阶段可用Mock节点返回固定指标数据)。Agent后接JSON校验:解析失败或缺字段就走死信分支,Insert到dead_letter_events并发Slack告警。
分级通知与建单
接Switch节点按severity分流:info/warning只发Slack;high/critical额外走邮件节点和PagerDuty节点(练习时先用NoOp占位,凭据就绪后替换)。再接ClickUp节点:无已开工单则Create Task(名称含service与summary),有则Add Comment。最后Postgres Insert写workflow_health_log,Respond to Webhook返回{"ok":true}。把工作流自身的Error Workflow设为它自己,使执行失败也落死信。
可直接复制的材料
根因分析代理系统提示词
本站独立编写,与模板‘工具调用RCA代理+结构化输出’思路一致;工具列表需按你实际接入的HTTP节点调整。
你是值班运维的根因分析助手。输入是一条已规范化的告警(fingerprint、severity、service、告警文案)以及你可调用工具拿到的遥测与指标数据。
规则:
1. 需要证据时调用工具查询指标或近期发布记录,不要凭空猜测。
2. 最终只输出一个JSON对象,字段必须是:
{"summary": "一句话中文概述", "probable_cause": "最可能根因及依据", "confidence": "high|medium|low", "recommended_action": "值班同学下一步具体操作"}
3. 如果工具返回的数据不足以判断,confidence填low并在probable_cause里说明缺什么证据,禁止编造指标数值。合成Alertmanager测试payload
本站虚构payload,结构对齐Alertmanager v4 webhook格式;fingerprint是拿去重逻辑的键,第二次发送同一fingerprint应只累加计数。
{"version":"4","status":"firing","alerts":[{"status":"firing","labels":{"alertname":"HighErrorRate","severity":"critical","service":"checkout-api","instance":"10.0.3.17:9090"},"annotations":{"summary":"checkout-api 5xx rate above 5% for 10m"},"startsAt":"2026-09-11T03:12:00Z","fingerprint":"fp-checkout-5xx-001"}]}输入与输出示例
本站虚构演示,代理输出为示意文本,非真实运行结果。
输入
向/alertmanager连续POST两次上面的合成payload(fingerprint均为fp-checkout-5xx-001,severity=critical,间隔3分钟,冷却窗设15分钟)对应输出
第一次:incidents插入一行fp-checkout-5xx-001/status=open/occurrence_count=1;RCA代理返回{"summary":"checkout-api错误率持续超阈值","probable_cause":"最近一次发布后数据库连接池耗尽,错误率曲线与发布时间点吻合","confidence":"medium","recommended_action":"回滚v2.31或扩容连接池并观察5分钟"};因severity=critical走Slack+邮件+PagerDuty分支,ClickUp新建任务。第二次(冷却窗内):只执行occurrence_count更新为2,不重复通知、不重复建单;workflow_health_log两行run_status均为ok。做完检查这些
- 同一fingerprint在冷却窗口内重复POST,incidents行数不变且occurrence_count递增,Slack只收到一次告警
- 把payload中status改为resolved重发,incidents对应行status变为resolved且Slack收到恢复通知
- 故意让代理返回非JSON(可在提示词后注入测试),该次执行落入dead_letter_events表并触发Slack死信告警
- critical级别触发Slack、邮件、PagerDuty三个分支,warning级别只触发Slack
容易卡住的地方
- Alertmanager默认会按repeat_interval重复发送告警,没有Postgres去重层就会造成通知轰炸,该层必须最先生效
- 模板要求配置六类凭据(OpenAI、Slack、Postgres、ClickUp、PagerDuty、邮件),任一缺失对应分支会报错;练习时用NoOp占位可逐步替换
- 三张飞Postgres表的列名必须与工作流里insert/update语句映射一致,改名表字段会直接SQL报错
- RCA代理的工具端点(遥测API、Prometheus查询、向量库)在原模板里是占位配置,导入后必须替换成你自己环境的地址,否则代理拿不到证据只能低置信输出
- webhook若暴露公网,务必加鉴权(Header Auth或IP白名单),否则任何人都能伪造告警触发PagerDuty
- OpenAI调用与PagerDuty等SaaS可能产生费用,具体金额取决于用量无法预估
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Route Alertmanager incidents with OpenAI GPT-4.1, Slack, PagerDuty, and ClickUp
- 原作者
- Oneclick AI Squad
- 原始发布日期
- 2026-09-11T04:52:37.769Z
- 来源
- https://n8n.io/workflows/19463