YScope 的壓縮日誌處理器 (CLP) 會壓縮您的日誌,並允許您在不解壓縮的情況下搜尋壓縮日誌。 CLP 支援 JSON 日誌和非結構化(即自由文字)日誌。它還支援多個日誌庫中的即時日誌壓縮。 CLP 還包括用於搜尋和查看壓縮日誌的專用 Web 介面。要了解更多信息,請閱讀我們 2021 年有關處理非結構化日誌的論文和 2024 年有關將其擴展到 JSON 日誌的論文。
上圖顯示了 CLP 與其他工具相比的壓縮和搜尋效能。我們將JSON 和非結構化日誌分開進行實驗,因為(1) 有些工具只能處理一種類型的日誌,(2) 可以處理兩種類型的工具通常針對每種類型有不同的設計(例如CLP) 。
壓縮率是透過各種日誌資料集的平均值來衡量的。其中一些數據集可以在這裡找到。搜尋效能是使用 MongoDB 日誌(對於 JSON)和 Hadoop 日誌(對於非結構化日誌)的查詢來衡量的。請注意,CLP 使用無索引設計,因此為了公平比較,我們停用了 MongoDB 和 PostgreSQL 的索引;如果我們啟用它們,MongoDB 和 PostgreSQL 的壓縮率會更差。我們沒有停用 Elasticsearch 或 Splunk 的索引,因為這些工具基本上是基於索引的(即,沒有索引就無法搜尋日誌)。有關我們實驗方法的更多詳細信息,請參閱 2021 年論文和 2024 年論文。
CLP 提供端對端日誌管理管道,包括壓縮、搜尋、分析和檢視。上圖展示了CLP的生態架構。它由以下功能組成:
壓縮和搜尋:CLP 將日誌壓縮到檔案中,可以在 Web UI 中搜尋和分析這些檔案。輸入可以是原始日誌,也可以是 CLP 日誌記錄庫產生的 CLP 壓縮 IR(中間表示)。
使用 CLP 日誌庫進行即時壓縮:CLP 提供適用於 Python 和 Java(Log4j 和 Logback)的日誌庫。日誌庫即時壓縮日誌,因此只有壓縮的日誌才會寫入磁碟或透過網路傳輸。壓縮日誌使用 CLP 的中間表示 (IR) 格式,該格式比 Zstandard 等通用壓縮器具有更高的壓縮比。將 IR 壓縮到存檔中可以進一步使壓縮率加倍並啟用全域搜索,但這需要更多的記憶體使用,因為它需要緩衝足夠的日誌。有關 IR 與檔案的更多詳細信息,請參閱此 Uber 工程部落格。
日誌檢視器:可以在基於 Web 的日誌檢視器中查看壓縮的 IR。與在編輯器中查看日誌相比,CLP 的日誌檢視器支援進階功能,例如根據日誌等級詳細程度過濾日誌(例如,僅顯示日誌等級等於或高於 ERROR 的日誌)。這些功能之所以成為可能,是因為 CLP 的日誌記錄庫會在將日誌壓縮到 IR 之前對其進行解析。
IR 分析函式庫:我們也提供了一個可以分析壓縮 IR 的 Python 函式庫和 Go 函式庫。
日誌解析器:CLP 還包括一個基於自訂下推自動機的日誌解析器,它比 RE2 等最先進的正規表示式引擎快 3 倍。日誌解析器可作為可供其他應用程式使用的程式庫。
您可以下載包含分散式壓縮和搜尋支援的發行包。或者,要快速嘗試 CLP 的核心壓縮和搜索,您可以使用預先建置的容器。
我們還有從原始碼建立包和 CLP 核心的指南。
對於一些可用於測試 CLP 的日誌,請查看我們的開源資料集。
您可以在線上找到我們的文件或在docs/src
中查看原始程式碼。
您可以使用 GitHub issues 回報錯誤或請求功能。
加入 Zulip,與開發人員和其他社群成員聊天。
這是我們的開源版本,我們將不斷更新錯誤修復、功能等。