日誌分析提示詞(海量報錯日誌歸類:高頻模式、首次出現時間、影響範圍與排查優先級)
線上告警後面對幾千上萬行日誌無從下手、或想定期復盤錯誤趨勢時用:把日誌歸併成「錯誤模板」,統計每類出現次數、首末時間和影響面,區分新出現的錯誤與長期噪音,並給出排查優先級;日誌太大時生成本地聚合腳本,只把統計結果交給 AI。
通用大模型 對話模型通用
【角色】你是一名值班經驗豐富的 SRE,擅長從大量日誌裏找規律:先歸類、再看趨勢、最後才看單條細節。 【背景】 - 系統與組件:[系統與組件] - 日誌格式說明(時間、級別、模組、trace_id 等字段在哪):[日誌格式] - 時間範圍與關鍵事件(如幾點發版、幾點開始告警):[時間範圍與事件] - 用戶反饋的現象:[故障現象] - 日誌內容(已脫敏;可以是原始日誌,也可以是聚合後的統計結果): [粘貼日誌] 【任務】 1. 歸一化:把每行日誌中的變量部分(數字、UUID、IP、用戶 ID、時間戳、文件路徑中的變化部分)替換成佔位符,得到「錯誤模板」。 2. 模板統計表:模板 | 級別 | 次數 | 首次出現 | 最後出現 | 涉及的模組或實例 | 示例原文一條。 3. 趨勢判斷:哪些模板是在我給出的關鍵事件之後新出現或激增的;哪些是長期存在的背景噪音(說明判斷依據)。 4. 關聯分析:通過 trace_id、請求 ID 或時間相鄰關係,找出可能的因果鏈,例如「數據庫連接池耗盡」之後緊接着出現大量「接口超時」。 5. 排查優先級:按「與故障現象的相關性 × 影響面 × 是否新出現」排序,前 3 個各給出下一步排查動作(查看哪個指標、執行什麼命令、看哪段代碼)。 6. 如果我貼的是原始日誌且超過幾百行,給出一個本地運行的聚合腳本(Python,或 grep、awk 組合),讓我在本地跑完後只貼統計結果。 【約束】 - 結論要能追溯到具體的日誌行或統計數字,推測的因果關係標註「推測」。 - 不要因為某條錯誤次數多就認定它是根因,背景噪音往往次數最多。 - 發現日誌裏有未脫敏的密鑰、手機號、身份證號等,提醒我輪換或清理,並在輸出中打碼。 【輸出格式】 一句話結論 → 模板統計表(按優先級排序)→ 時間線 → 可能的因果鏈 → 下一步排查動作 → 聚合腳本(如需要)→ 日誌改進建議(缺少的字段、級別使用不當的地方)。
高亮處換成你自己的內容:[系統與組件]、[日誌格式]、[時間範圍與事件]、[故障現象]、[粘貼日誌]
ChatGPT Plus 充值
已被複製 0 次
使用說明
怎麼填變量:[時間範圍與事件] 是區分「新問題」和「老毛病」的關鍵,寫清「14:05 發版,14:12 開始告警」,AI 才能做前後對比。日誌量很大時不要硬貼,先讓它生成聚合腳本,在本地跑出前 50 個模板的統計再貼回來,既省上下文,也避免把大量敏感數據交給外部服務。
和「程序報錯怎麼解決」提示詞的區別:那條適合一個具體報錯的深挖;這條適合面對大量日誌時先找出「該深挖哪一個」。找到優先級最高的錯誤後,可以把它的完整堆棧交給那條提示詞繼續定位。
常見坑:日誌中常帶用戶手機號、token、內網 IP,粘貼前先脫敏;不同實例的時區不一致會讓時間線錯亂,先確認都是同一時區。
追問技巧:對排名第一的模板追問「列出能證實或排除它是根因的 3 個證據」;復盤時說「根據這次的模式,建議增加哪些告警規則」。
示例輸出
示例,僅供參考
結論:14:05 發版後新出現「連接池等待超時」模板(1,842 次),與接口超時告警的時間吻合,優先排查;「Redis 重連」每天都有,屬背景噪音。
本地聚合腳本(節選):
python
import re
from collections import Counter
RULES = [
(re.compile(r"\b[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\b", re.I), "<UUID>"),
(re.compile(r"\b\d{1,3}(?:\.\d{1,3}){3}\b"), "<IP>"),
(re.compile(r"\d+"), "<N>"),
]
def to_template(message: str) -> str:
for pattern, placeholder in RULES: # 先替換長模式,再替換普通數字
message = pattern.sub(placeholder, message)
return message.strip()
counter = Counter()
with open("app.log", encoding="utf-8", errors="replace") as f:
for line in f:
if " ERROR " in line:
# 假設每行前 3 段是 日期 時間 級別,其後是消息
counter[to_template(line.split(" ", 3)[-1])] += 1
for template, count in counter.most_common(50):
print(count, template)同款作品
用這條提示詞做出來的作品;原作者會因此獲得積分
還沒有同款,來做第一個。


0 條評論
還沒有評論,來搶沙發~