生產(chǎn)項(xiàng)目-告警根因定位

目錄

  • 前置
  • 背景
  • 使用多智能體而不是硬編碼的原因
  • 對比n8n dify langGraph
  • 架構(gòu)
  • 參考文章

前置


背景

  • 我們組是做各個場景監(jiān)控的,線上機(jī)器有非常多,每個小的監(jiān)控場景都不一樣,小監(jiān)控場景非常廣,并不是傳統(tǒng)意思的機(jī)器CPU, 內(nèi)存等簡單監(jiān)控,本質(zhì)上是對所有機(jī)器從各個維度,運(yùn)營商,省份,大洲,大區(qū)等維度做告警。線上也有非常多的告警,那某些重要的告警要定位到這個告警的根本原因就成了運(yùn)營比較迫切需要解決的問題,如果每個重要場景都人工去定位那么根據(jù)不同的人專業(yè)程度定位速度也不一樣,短則二十分鐘,長則一小時。這就迫切需要一個平臺,能夠支持運(yùn)營人員用自然語言的形式,描述如何通過各個小場景(可以抽象成一個個sql)定位到當(dāng)前重要場景的根因
  • prompt類似下面這樣
請基于以下字典集合對 POP 進(jìn)行根因歸類。所有集合運(yùn)算嚴(yán)格按 key 精確匹配(區(qū)分大小寫),禁止模糊匹配;差集必須逐元素核對。輸出中必須顯式列出所有中間集合與依據(jù)。

輸入:
- Tag1: {...}(主集合,key=POP,value=詳情文本)
- TagB: {...}
- TagB_1: {...}
- TagB_2: {...}
- TagC: {...}
- TagD: {...}
- TagE: {...}
- TagF: {...}
- TagG: {...}
- TagH: {...}
- TagI: {...}
- TagJ: {...}
- TagK: {...}
- TagL: {...}
- TagM: {...}

規(guī)則:
Step0: 若 Tag1.keys() 為空,輸出“所有數(shù)據(jù)正?!辈⑼V埂7駝t顯式列出 TagA.keys()

A: candidate_A = Tag1.keys() - TagB.keys()
  在 candidate_A 中:
  - ∩TagC → 原因1;∩TagD → 原因2;∩TagE → 原因3;∩TagF → 原因4

A.5: candidate_A5 = candidate_A - TagG.keys()(逐元素檢查)
  在 candidate_A5 中:
  - ∩TagH → 原因5;∩TagI → 原因6;∩TagJ → 原因7;∩TagK → 原因8;∩TagL → 原因9
  - 若 TagA[POP] 同時包含 KW_in 與 KW_out → 原因10
  - 若包含 KW_out 且不包含 KW_in 且 POP∈TagM → 原因11

B: candidate_B = TagA.keys() ∩ TagB.keys()
  在 candidate_B 中:
  - ∩TagB_1 → 原因12;∩TagB_2 → 原因13
  且 candidate_B 禁止參與 A/A.5

C: 對未命中任何原因者:
  candidate_C = TagA.keys() - (assigned_A ∪ assigned_A5 ∪ assigned_B)
  candidate_C 中每個 POP → “需人工確認(rèn)”

輸出:
按 POP 分組輸出命中原因;同一 POP 多原因用中文逗號連接。所有中間集合必須顯式輸出。

使用多智能體而不是硬編碼的原因

  • 目前V1.0是定時任務(wù)自動獲取重要異常告警,然后去定位根因
  • 后續(xù)V2.0需要實(shí)現(xiàn)一個前端界面,或者AI2UI模式,運(yùn)營人員或者非技術(shù)研發(fā)人員,在頁面上提問比如: 某個時間段福建移動的POP中某幾個場景的,xxx特定條件下,根因是什么,這時候這套提醒需要前面加個主路由Agent解析意圖,然后發(fā)給這個告警根因定位項(xiàng)目去定位。特定拓展條件這套根因項(xiàng)目可以做拓展?jié)M足。
  • 每個運(yùn)營人員排查同一個場景排查習(xí)慣有所差異,所以prompt略微不同,特殊pop,條件略微有差異。提交prompt后會經(jīng)過prompt優(yōu)化器處理。這個過程沒法通過固定代碼實(shí)現(xiàn),就是某個固定模板---大模型通過固定模版生成代碼的模式不太能行的通,因?yàn)閜rompt有差異
  • 本質(zhì)上需要跟人交互部分,沒法固定代碼加規(guī)則引擎去實(shí)現(xiàn)
  • 如果有些只是詳情數(shù)據(jù)展示用的,后續(xù)可以考慮使用本地內(nèi)存做傳輸,如果系統(tǒng)高可用就放到第三方緩存去,記錄的時候再取出

對比n8n dify langGraph

  • Dify + LangGraph對比


    Dify+LangGraph.png
  • LangGraph + (PlanAgent+ExecutorAgent)


    LangGraph + (PlanAgent+ExecutorAgent).png
  • n8n:低代碼自動化工作流引擎

  1. 定位:無代碼/低代碼自動化工具,用于連接 API 和系統(tǒng),非大模型 Agent 框架。
    核心能力
  2. 通過可視化流程圖(Node-Edge)編排任務(wù)(如觸發(fā) → 處理 → 執(zhí)行)
    支持 300+ 應(yīng)用集成(Slack、Google Sheets、數(shù)據(jù)庫等)
    無原生大模型集成,需通過 API 調(diào)用外部 LLM 服務(wù)

架構(gòu)

模式

  • ReAct (Reasoning and Acting) 是大模型的一種推理框架,通過交替進(jìn)行"思考(Thought)-行動(Action)-觀察(Observation)"的循環(huán)來解決問題。這種模式將語言模型的推理能力與行動能力相結(jié)合,使模型不僅能"思考",還能"行動"并根據(jù)結(jié)果調(diào)整策略。核心工作流程:
  1. 思考(Thought): 分析當(dāng)前狀態(tài),制定下一步策略
  2. 行動(Action): 執(zhí)行具體操作(如搜索、計(jì)算、調(diào)用API等)
  3. 觀察(Observation): 獲取行動結(jié)果,作為下一步輸入
  4. 重復(fù)上述過程,直至解決問題
  • 其他模式優(yōu)劣勢


    其他模式優(yōu)劣勢.png
  • 模式對比
模式 核心思想 工作流程 工具依賴 關(guān)鍵特征
CoT 模擬人類分步推理 問題 → 文本推理鏈 → 結(jié)論 ? 無 單線性思維,無驗(yàn)證機(jī)制
ToT 探索思維樹空間 生成多路徑 → 評估剪枝 → 回溯優(yōu)化 ?? 評估函數(shù) 廣度優(yōu)先搜索,抗局部最優(yōu)
PAL 用代碼替代文本推理 問題 → 生成代碼 → 執(zhí)行 → 結(jié)果 ? 代碼沙箱 精確計(jì)算,無錯誤處理
PAE 自修復(fù)式代碼執(zhí)行 生成代碼 → 執(zhí)行 → 捕獲錯誤 → 修正 → 重試 ? 代碼環(huán)境 + 錯誤反饋 容錯機(jī)制,防御性編程
ReAct 推理-行動閉環(huán) 思考 → 調(diào)用工具 → 觀察結(jié)果 → 新思考 ? 多工具 API 動態(tài)環(huán)境交互,實(shí)時驗(yàn)證
  • 模式對比2
模式 工作原理 交互性 工具調(diào)用 適用復(fù)雜度 典型應(yīng)用場景
ReAct 交替推理與行動,形成閉環(huán) 高(多輪) 支持多種外部工具 高復(fù)雜度任務(wù) 需要外部信息驗(yàn)證的復(fù)雜問題
Zero-shot / Few-shot 直接回答或基于示例生成 低(單輪) 簡單任務(wù) 簡單問答、內(nèi)容生成
Chain-of-Thought(CoT) 生成推理鏈路但不行動 中(單輪多步驟) 中等復(fù)雜度 邏輯推理、數(shù)學(xué)問題
Program-aided Language Models(PAL) 生成代碼執(zhí)行精確計(jì)算 限于編程環(huán)境 精確計(jì)算任務(wù) 數(shù)學(xué)問題、數(shù)據(jù)處理
Tree of Thoughts(ToT) 探索多條推理路徑 有限 極高復(fù)雜度 復(fù)雜規(guī)劃、創(chuàng)造性問題解決

架構(gòu)

  • 完全參考joyagent多agent架構(gòu)。上面前置部分的文章有詳細(xì)介紹


    整體架構(gòu).png
  • ExecutorAgent會根據(jù)PlanningAgent給的子任務(wù)進(jìn)行循環(huán)step,每步step包含,think和act。
    1. PlanningAgent規(guī)劃的動態(tài)任務(wù)流tag1前置檢查任務(wù)到來時,ExecutorAgent中think流程會從prompt撈取tag1的數(shù)據(jù),然后act流程會去調(diào)用clickhouse_mcp獲取對應(yīng)數(shù)據(jù),下一個think認(rèn)為條件已經(jīng)充分便結(jié)束當(dāng)前子流程,如果ExecutorAgent調(diào)用失敗或者信息不全這種step模式能自動重試
    2. 帶著動態(tài)任務(wù)流tag1前置檢查任務(wù)的結(jié)果和按需生成相關(guān)Tag查詢的子任務(wù)PlanningAgent也是用step循環(huán)決策,think一下,如果tag1無數(shù)據(jù)則直接標(biāo)志著任務(wù)結(jié)束。如果有數(shù)據(jù)則獲取prompt其他需要執(zhí)行的sql集合,然后act會去調(diào)用clickhouse_mcp獲取對應(yīng)數(shù) , 這個具體的執(zhí)行是ExecutorAgent去執(zhí)行,PlanExecutor只是規(guī)劃
    3. 如果第2步?jīng)]有標(biāo)志PlanTool結(jié)束,則第三步大模型think會帶入第2步結(jié)果和對應(yīng)prompt的規(guī)則進(jìn)行決策,最終執(zhí)行也是ExecutorAgent去的
    4. 如果第2步?jīng)]有標(biāo)志PlanTool結(jié)束,第4步會根據(jù)第3步定位的根因?qū)⒔Y(jié)果記錄,這個結(jié)果記錄是ExecutorAgent去執(zhí)行的
  • clickhosue_mcp架構(gòu)


    clickhosue_mcp架構(gòu).png
  • mcp架構(gòu)優(yōu)點(diǎn)
價值維度 具體收益 業(yè)務(wù)影響
安全加固 強(qiáng)制只讀模式 + SQL 參數(shù)隔離 + 憑據(jù)集中管理 消除 99%+ 數(shù)據(jù)誤操作風(fēng)險(xiǎn),滿足金融級合規(guī)要求
資源保障 30 秒查詢超時熔斷 + 10 線程并發(fā)控制 + 連接池隔離 服務(wù)可用性從 95% → 99.95%,杜絕雪崩效應(yīng)
開發(fā)提效 標(biāo)準(zhǔn)化工具接口(list_databases / list_tables / run_select_query)+ 結(jié)構(gòu)化元數(shù)據(jù)模型 新功能集成速度提升 3 倍,減少 50%+ 數(shù)據(jù)處理代碼
運(yùn)維簡化 內(nèi)置 /health 端點(diǎn) + session_id 追蹤日志 + 統(tǒng)一異常格式 故障平均修復(fù)時間(MTTR)降低 70%,告警精準(zhǔn)度提升 3 倍
架構(gòu)演進(jìn) MCP 協(xié)議解耦 + 云原生配置管理(get_config 無縫遷移至其他數(shù)據(jù)源,支持混合云/多云部署

參考文章

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容