在使用 Loki 配置警報時,若要在警報註釋中添加原始日誌內容,當前最佳實踐是避免在警報通知中直接嵌入完整的日誌行。這是因為 Loki 警報操作基於從日誌派生的時間序列數據,而不是原始的日誌行本身。在警報標籤或註釋中包含高度動態的日誌內容可能導致高基數問題,從而產生大量唯一的警報並引發潛在的性能問題。
相反,推薦的方法是:
- 使用
summary或description等註釋來清晰地解釋告警,並在需要時包含一個預填充 LogQL 查詢的 Grafana Explore 鏈接。這允許響應者快速訪問相關的日誌行,而無需將它們直接嵌入告警消息中。 - 如果你必須包含日誌內容,可以使用 Promtail 管道從日誌中提取特定字段作為標籤,但你應該非常小心以避免高基數數據。
以下是該指南的總結:
...創建你的告警,寫好摘要,寫好描述,然後鏈接到 Grafana Explore 中的 LogQL 查詢,在那裏你可以查看日誌。如果你真的、真的有必要,可以嘗試將日誌行的部分內容提取為標籤,但你必須非常小心處理高度動態的數據,因為最終你會得到數百或數千個告警... 今天我建議儘量避免將日誌行放入告警中,原因就在於此。
Grafana Loki:記錄和告警規則的最佳實踐(Loki 社區會議 2025 年 2 月)
目前,還沒有內置的、安全的方法可以自動將完整的原始日誌內容包含在 Loki 告警的註釋中。推薦的工作流程是提供上下文並鏈接到相關日誌,而不是嵌入日誌本身。這種方法既可擴展又用户友好。
三人行, 必有我師; 知識共享, 天下為公. 本文由東風微鳴技術博客 EWhisper.cn 編寫.