Log 是最常用、最自然的監控資料型別之一,具有以下的優點:
- 日誌的內容比指標更加豐富,可以提供更多的細節資訊,幫助開發人員和運維人員更好地理解應用程式的執行狀況,透過日誌幾乎可以重現、還原系統的完整工作過程。
- 日誌的格式靈活,可以方便的記錄多樣化的事件,包括錯誤、異常和警告等,而指標通常只能提供統計資料,無法直接反映系統中的具體事件。
- 日誌為文字格式,便於技術人員理解,同時可以被各種文字處理工具、文字搜尋工具高效的處理。
現實情況中,logs、traces、metrics 在收集、傳輸、儲存整個鏈條上,存在相互割裂的情況,導致在對可觀測性資料進行統一分析的時候,難以打通。
在可觀測性體系中,建立 logs 到 metrics 和 traces 的關聯打通,常見的方式有三種:
按照“時間維度”關聯
這是從 logs 下鑽到 traces 的最基本方式,即按照產生 logs 的時間,去查詢該時間段內相應的 traces。這種方式的好處是足夠的簡單和通用,缺點是關聯不夠精確。
按照Context 關聯
這是從 logs 下鑽到 traces 的推薦標準做法,即在 logs 中列印 TraceId、SpanId 等 Trace Context資訊,從而精確的根據 TraceId/SpanId 關聯到相對應的 traces。這種做法的缺點在於需要在 logs 和 traces 中同時引入 OTel 相關的 SDK,有一定的工作量。
下面是一個在日誌中引入 OTel SDK 的工作流程:
按照Resource關聯
這是根據 metrics、logs、traces 三者資料的來源資訊,進行關聯,比如 node name、pod name、container id、process、app name、 version 等資訊。
相比 metrics 和 traces,logs 是“可觀測性三支柱”中歷史包袱最重的監控資料型別,日誌的格式更隨意,缺乏標準和規範。推薦在應用研發階段,按照 OTel Logs 規範列印日誌。
OTel 關於 Log 欄位的規範如下:
OTel Logs 思維導圖整體如下,供參考:
關於快貓星雲和夜鶯
夜鶯 (Nightingale) 是一款開源雲原生監控工具,是中國計算機學會接受捐贈並託管的第一個開源專案,在GitHub上有8000顆星,有數千家企業使用者使用。快貓星雲以開源夜鶯為核心打造的“Flashcat平臺”,是國內頂級互聯⽹公司可觀測性實踐的產品化落地,我們致力於讓可觀測性技術更好的落地和發揮價值。
你可以透過Flashcat平臺,有效改善以下問題:
- 希望整個公司統一用一個工具,就可以支援指標、日誌、鏈路追蹤資料的採集、視覺化、告警,免去搭建和維護多套 Prometheus、Zabbix、Grafana、ELK、Jaeger 的工作量。
- 如果有在用多雲,並且在多個公有云監控控制檯來回切換不方便,希望監控資料、監控檢視都是統一的,有更一致的使用者體驗,同時降低給所有的工程師開通公有云控制檯許可權帶來的安全隱患。
- 告警太多,工作老被打斷, 可以利用我們提供的 OnCall 值班平臺(類似於 PagerDuty),支援告警聚合、降噪、認領、升級、排班,可以在飛書、釘釘、企微中接收和處理告警。
- 👉官方網站: https://flashcat.cloud
- 👉產品PPT: https://sourl.cn/LGYUyc
- 👉檢視更多可觀測性白皮書:https://flashcat.cloud/blog/whitepapers/