靈能API API中轉(zhuǎn)站日志告警接入教程:異常分析、值班摘要與故障復(fù)盤(pán)
運(yùn)維告警最折磨人的地方,不是系統(tǒng)響了,而是同時(shí)響太多:CPU、接口 5xx、隊(duì)列堆積、數(shù)據(jù)庫(kù)慢查詢(xún)、第三方超時(shí)、用戶(hù)投訴一起出現(xiàn)。值班同學(xué)要在幾分鐘內(nèi)判斷影響范圍、找出可能根因、同步進(jìn)展,還要避免把噪聲當(dāng)成事故。??
這篇用 靈能API 作為統(tǒng)一 API 中轉(zhuǎn)入口,講一套日志告警接入大模型的實(shí)戰(zhàn)方法。模型不替代監(jiān)控系統(tǒng)和 SRE 判斷,而是負(fù)責(zé)聚合信息、整理排查順序、生成值班摘要和故障復(fù)盤(pán)初稿。

一、先明確模型適合做什么
日志告警場(chǎng)景里,大模型最適合處理“信息整理”和“語(yǔ)義歸納”,不適合直接決定擴(kuò)容、回滾或關(guān)閉告警。真正上線(xiàn)時(shí),要把模型放在值班輔助層,而不是控制平面。
- 適合:把多條告警合并成一個(gè)事件,減少重復(fù)提醒。
- 適合:根據(jù)日志、指標(biāo)和變更記錄生成排查順序。
- 適合:把值班過(guò)程整理成對(duì)內(nèi)同步摘要。
- 適合:事故結(jié)束后生成復(fù)盤(pán)初稿和預(yù)防項(xiàng)清單。
- 不適合:未經(jīng)人工確認(rèn)自動(dòng)回滾、自動(dòng)擴(kuò)容、自動(dòng)關(guān)閉高危告警。
二、接入鏈路:告警先聚合,再交給模型分析
不要把每一條原始日志都發(fā)給模型。可靠做法是先由監(jiān)控系統(tǒng)和日志平**成過(guò)濾、聚合和字段化,再把一個(gè)“事件包”傳入模型。事件包里包含時(shí)間窗口、服務(wù)名、錯(cuò)誤摘要、關(guān)鍵指標(biāo)、最近變更和歷史相似事故。
| 層級(jí) | 主要輸入 | 輸出結(jié)果 |
|---|---|---|
| 監(jiān)控層 | 指標(biāo)、日志、Trace、探針結(jié)果 | 原始告警和異常時(shí)間窗口 |
| 聚合層 | 同服務(wù)、同錯(cuò)誤碼、同鏈路事件 | 合并后的 incident candi**te |
| 分析層 | 事件包、拓?fù)洹⒆兏v史復(fù)盤(pán) | 影響范圍、疑似原因、排查步驟 |
| 協(xié)同層 | 值班群、工單、狀態(tài)頁(yè) | 摘要、升級(jí)提醒、復(fù)盤(pán)草稿 |

三、準(zhǔn)備 API 信息:給值班服務(wù)單獨(dú)配置
告警分析屬于高優(yōu)先級(jí)系統(tǒng),建議使用獨(dú)立密鑰和獨(dú)立服務(wù)名。這樣可以單獨(dú)查看調(diào)用量、失敗率和成本,也能在異常時(shí)快速禁用某類(lèi)低優(yōu)先級(jí)任務(wù)。
OPENAI_API_KEY=sk-your-oncall-key
OPENAI_*ASE_**L=https://api.靈能API.ai/v1
ONCALL_FAST_MODEL=gpt-4o-mini
ONCALL_ANA**S**_MODEL=claude-sonnet-4-6
ONCALL_MAX_TOKENS=1600
ONCALL_TIMEOUT_MS=18000
ONCALL_SERV***_NAME=incident-assistant
線(xiàn)上值班鏈路還要配置超時(shí)和降級(jí)策略。模型分析失敗時(shí),告警不能丟;系統(tǒng)應(yīng)繼續(xù)把原始告警發(fā)送給值班人,并標(biāo)記“AI 摘要生成失敗”。
四、事件包設(shè)計(jì):輸入越規(guī)整,輸出越穩(wěn)定
模型分析前,先把多源信息整理成固定 **ON。不要把幾十屏日志原文塞進(jìn)去,而是提取錯(cuò)誤類(lèi)型、出現(xiàn)頻率、服務(wù)依賴(lài)、最近發(fā)布和用戶(hù)影響。
{
"incident_id": "inc_20260720_0031",
"time_window": "2026-07-20 14:05-14:16",
"service": "payment-api",
"symptoms": ["5xx rate increased", "p95 latency a*ove threshold"],
"top_errors": [
{ "message": "upstream timeout", "count": 382 },
{ "message": "**ta*ase connection pool exhausted", "count": 79 }
],
"recent_changes": ["payment-api deployed at 13:58", "d* pool config changed yester**y"],
"customer_impact": "部分支付請(qǐng)求變慢,少量請(qǐng)求失敗",
"similar_incidents": ["inc_20260618_0012"]
}
五、異常分析 Prompt:輸出要能直接指導(dǎo)排查
值班分析最怕空話(huà),例如“請(qǐng)檢查服務(wù)狀態(tài)”。Prompt 要強(qiáng)制模型輸出疑似原因、排查順序、需要升級(jí)的條件和溝通摘要。
請(qǐng)分析這個(gè)告警事件,返回 **ON:
- severity:P0/P1/P2/P3
- impact_sum**ry:影響范圍,80 字以?xún)?nèi)
- likely_causes:疑似原因數(shù)組,每項(xiàng)包含 evidence 和 confidence
- first_checks:前 5 個(gè)排查動(dòng)作,按優(yōu)先級(jí)排序
- escalation_conditions:需要升級(jí)給負(fù)責(zé)人或更高級(jí)別響應(yīng)的條件
- up**te_message:發(fā)到值班群的簡(jiǎn)短進(jìn)展
約束:只根據(jù)輸入信息判斷;沒(méi)有證據(jù)時(shí)寫(xiě)資料不足。
六、后端調(diào)用示例:異步分析,避免阻塞告警通知
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.OPENAI_API_KEY,
*ase**L: process.env.OPENAI_*ASE_**L,
});
export async function analyzeIncident(eventPackage) {
const res = await client.chat.completions.create({
model: process.env.ONCALL_ANA**S**_MODEL,
temperature: 0.2,
**x_tokens: Num*er(process.env.ONCALL_MAX_TOKENS || 1600),
messages: [
{ role: "system", content: "你是 SRE 值班輔助助手,只基于輸入材料分析故障。" },
{ role: "user", content: **ON.stringify(eventPackage) }
],
response_for**t: { type: "json_o*ject" }
});
return **ON.parse(res.choices[0].message.content);
}
這個(gè)接口建議由隊(duì)列任務(wù)觸發(fā),而不是監(jiān)控回調(diào)同步等待。監(jiān)控系統(tǒng)先把告警發(fā)送出去,模型分析結(jié)果隨后補(bǔ)充到值班群或工單詳情里。這樣即使模型超時(shí),也不會(huì)影響核心告警鏈路。??

七、值班摘要:讓群里每個(gè)人都知道當(dāng)前狀態(tài)
事故處理中,溝通成本往往比技術(shù)排查還高。模型可以根據(jù)事件包和人工更新生成短摘要,幫助產(chǎn)品、**、技術(shù)負(fù)責(zé)人快速理解狀態(tài)。
| 摘要字段 | 示例 | 用途 |
|---|---|---|
| 當(dāng)前狀態(tài) | 支付接口失敗率已下降,但延遲仍高于基線(xiàn) | 讓非技術(shù)同事快速理解進(jìn)展 |
| 影響范圍 | 約 3% 支付請(qǐng)求受影響,集中在華東節(jié)點(diǎn) | 用于**和業(yè)務(wù)同步 |
| 已執(zhí)行動(dòng)作 | 已回滾 13:58 發(fā)布,正在觀察連接池指標(biāo) | 避免重復(fù)排查 |
| 下一步 | 若 10 分鐘內(nèi)延遲不下降,升級(jí)數(shù)據(jù)庫(kù)負(fù)責(zé)人 | 明確升級(jí)條件 |
八、告警降噪:模型不能替代規(guī)則,但能輔助歸并
告警降噪的第一層仍然應(yīng)該是規(guī)則:相同服務(wù)、相同錯(cuò)誤、相同時(shí)間窗口內(nèi)合并;依賴(lài)服務(wù)異常導(dǎo)致的下游告警,優(yōu)先歸為同一事件。模型可以在規(guī)則聚合之后,判斷多條現(xiàn)象是否可能屬于同一根因。
- 同一服務(wù) 5 分鐘內(nèi)重復(fù)告警,合并為一個(gè)事件并增加計(jì)數(shù)。
- 上游服務(wù)異常時(shí),下游超時(shí)告警標(biāo)記為疑似級(jí)聯(lián)影響。
- 低優(yōu)先級(jí)告警只進(jìn)入摘要,不反復(fù) @ 全員。
- P0/P1 告警必須保留原始通知,不因模型判斷而靜默。
九、故障復(fù)盤(pán):把現(xiàn)場(chǎng)信息沉淀成可改進(jìn)項(xiàng)
事故結(jié)束后,值班群里通常散落著時(shí)間點(diǎn)、判斷過(guò)程、修復(fù)動(dòng)作和后續(xù) TODO。模型可以生成復(fù)盤(pán)初稿,但最終根因和整改項(xiàng)必須由負(fù)責(zé)人確認(rèn)。

{
"timeline": [
{ "time": "14:05", "event": "5xx 告警觸發(fā)" },
{ "time": "14:09", "event": "確認(rèn)支付接口延遲升高" },
{ "time": "14:18", "event": "回滾最近發(fā)布" }
],
"root_cause_candi**te": "發(fā)布后連接池配置與流量峰值不匹配",
"fixed_actions": ["回滾發(fā)布", "臨時(shí)提高連接池上限"],
"prevention_items": ["發(fā)布前增加連接池壓測(cè)", "P1 告警增加變更關(guān)聯(lián)提示"]
}
十、建議落庫(kù)字段:讓每次事故都能回放
建議保存 incident_id、service、severity、event_window、source_alert_ids、model_name、prompt_version、analysis_result、hu**n_decision、ticket_id、postmortem_id 和 token_usage。模型輸出和人工確認(rèn)要分開(kāi)保存,避免后續(xù)誤以為候選判斷就是最終結(jié)論。
有了這些字段,團(tuán)隊(duì)可以統(tǒng)計(jì)哪些服務(wù)最常觸發(fā)告警、哪些告警經(jīng)常誤報(bào)、哪些事故和發(fā)布變更關(guān)聯(lián)最高。長(zhǎng)期看,這比單次摘要更有價(jià)值,因?yàn)樗芡苿?dòng)監(jiān)控規(guī)則、發(fā)布流程和容量規(guī)劃持續(xù)改進(jìn)。
十一、上線(xiàn)前檢查清單
- 模型分析失敗時(shí),原始告警是否仍能正常發(fā)送。
- 是否禁止模型自動(dòng)執(zhí)行回滾、擴(kuò)容、封禁等高風(fēng)險(xiǎn)動(dòng)作。
- 是否記錄 source_alert_ids,方便從摘要回到原始監(jiān)控事件。
- 是否對(duì)日志中的手機(jī)號(hào)、郵箱、token、訂單號(hào)等敏感字段做脫敏。
- 是否設(shè)置 P0/P1 人工確認(rèn)和升級(jí)規(guī)則。
- 是否能按服務(wù)、模型、任務(wù)類(lèi)型統(tǒng)計(jì)調(diào)用成本。
十二、推薦落地節(jié)奏
第一階段只做告警摘要,不改變?nèi)魏翁幹昧鞒蹋坏诙A段加入疑似原因和排查步驟,讓值班人評(píng)價(jià)是否有用;第三階段接入工單和復(fù)盤(pán)草稿,但仍保留人工確認(rèn);**階段再根據(jù)歷史數(shù)據(jù)優(yōu)化告警歸并和升級(jí)策略。
日志告警接入大模型的價(jià)值,不是讓系統(tǒng)自動(dòng)判斷一切,而是讓值班人更快看到全局:發(fā)生了什么、影響誰(shuí)、先查哪里、什么時(shí)候升級(jí)、事后怎么防止重演。把這些信息整理清楚,事故處理就會(huì)少很多混亂。???