前言
作為 IT 信息系統運行狀態感知和故障分析的重要手段,日誌在行業興起之初便為運維和開發環節所廣泛應用。當應用和系統發生故障或出現問題時,日誌數據成為了排查和診斷問題的重要依據。通過分析日誌,開發人員和運維人員可以瞭解系統的運行狀況、錯誤消息和異常情況。對於高負載的應用和系統,性能監控至關重要。通過分析日誌數據,可以瞭解系統的吞吐量、響應時間、資源利用率等指標。這有助於識別瓶頸、優化性能,並提供更好的用户體驗。同時,許多行業和法規對於數據的保留和審計有明確的要求。日誌數據通常包含了關鍵的操作和事件信息,可以用於合規性審計和法律調查。
但隨着信息技術的快速發展,現代應用和系統變得越來越複雜。企業和組織使用各種軟件和硬件組件構建和運行復雜的應用程序和基礎設施。這些系統產生大量的日誌數據,包括應用日誌、服務器日誌、網絡日誌等。這些日誌記錄了系統中發生的事件、錯誤和警告等信息。這使得處理大規模的日誌數據變得非常困難,傳統的文本編輯器或命令行工具無法滿足快速搜索、過濾和分析的需求。在這樣的背景下,專用日誌分析工具應運而生。
產品簡介
ELK(Elasticsearch、Logstash和Kibana)套件始於 2010 年,是由 Elastic 公司開發的一組開源工具,用於處理、存儲和可視化日誌數據。與觀測雲類似,ELK 向用户提供了多端日誌收集的能力,用於集中採集、分析、展示日誌的相關內容。幫助用户監測管理並展示系統運行中各環節的運行狀態。
其中,Elasticsearch 是一個分佈式、實時的搜索和分析引擎,最初由 Shay Banon 於 2010 年創建。基於 Apache Lucene 搜索引擎庫構建,通過使用倒排索引和分佈式架構,提供了高性能的全文搜索和實時數據分析能力。Elasticsearch 的設計目標是處理大規模數據集,並具有水平擴展性和高可用性。
Logstash 是一個用於日誌收集、轉換和傳輸的開源工具,可以從各種來源(如日誌文件、消息隊列、數據庫等)收集日誌數據,並對其進行過濾、解析和轉換,然後將其傳輸到多個目的地如 Elasticsearch、文件存儲等)。Logstash 提供了豐富的插件生態系統,可以靈活地處理各種數據源和數據格式。
Kibana 創建於 2013 年。通過與 Elasticsearch 集成,提供了豐富的圖表、儀表盤和報表功能,可以對日誌數據進行實時查詢、分析和可視化。Kibana 的用户友好的界面使得用户可以通過交互式的方式探索和理解數據,從而更好地發現數據中的模式和趨勢。
觀測雲是一款面向開發、運維、測試及業務團隊的實時數據監測平台,能夠統一滿足雲、雲原生、應用及業務上的監測需求,快速實現基礎設施、中間件、應用層和業務層的可觀測。基礎設施監測、日誌與指標管理、應用性能監測、用户訪問監測、可用性監測、異常檢測、系統級安全巡檢、場景和儀表板等是觀測雲的可觀測解決方案,通過統一的數據採集、全面的數據監控、無縫的關聯分析、自定義的場景搭建、高度的可編程性,敏捷的成員協作,為用户提供了最快、最輕鬆、最全面、最自由的系統可觀測平台。
組件對比
一個功能齊全的可觀測平台,其技術架構中通常需具備收集、存儲、處理、分析和可視化應這幾個關鍵功能模塊。下面以這幾個主要功能為入口,在功能及性能方面對兩款工具進行對比和分析。
數據採集
ELK 為日誌採集提供了豐富的 Agent 矩陣,方便用户針對不同採集場景進行數據收集:
在日誌採集方面,Elastic 提供了 Beats 系列作為日誌採集器,其中包括 Filebeat、Winlogbeat、Packetbeat 等。Filebeat 用於收集和發送日誌文件,Winlogbeat 用於收集 Windows 事件日誌,Packetbeat 用於網絡數據包分析。
對於基礎設施的指標採集,Elastic 的 Metricbeat 主要用於收集和發送指標數據,當然除了 Metricbeat 外還有另一個專門的指標採集器,稱為 Heartbeat。Heartbeat 可以監測和採集網絡服務的可用性和性能指標,如 HTTP、TCP、ICMP 等。
近年來,隨着可觀測理論不斷髮展,日誌採集的範圍也從傳統概念中的日誌,逐步擴展至鏈路及用户訪問記錄等領域。為適應這種變化,Elastic 也陸續提供了 APM Agent 用於採集應用程序性能監控(APM)數據。Elastic APM 支持多種編程語言和框架,例如如 Java、Python、Go、Node.js 等。可以捕獲應用程序的事務和跟蹤數據,並將其發送到 Elasticsearch 進行存儲和分析。同時,藉助 APM Real User Monitoring (RUM) agent 實現對用户訪問過程的數據記錄。
ELK Agent 方案在提供豐富的數據接入體驗的同時,缺點也比較明顯,當同一套系統為不同採集目標配置多個 xBeats 採集器時,對系統資源的佔用將變得難以控制。實際應用過程中經常出現 multi-agent 資源爭用影響目標系統業務正常運行的情況,且對於運維管理人員而言,多 Agent 的部署方式也增加了很多配置維護負擔。
基於上述原因,觀測雲在數據採集側對這種模式進行了優化,通過 DataKit 採集套件,形成“One Agent + multi-inputs”的配置形態,降低資源佔用,簡化配置管理,大幅優化了數據採集器的部署及使用效率。
DataKit 是一款開源、一體式的數據集成 Agent ,它提供全平台操作系統(Linux/Windows/macOS)支持,擁有全面數據採集能力,涵蓋主機、容器、中間件、Tracing、日誌以及安全巡檢等各種場景。用户只需要配置一個 Agent,並按需打開不同的數據接收端 (inputs),即可方便的實現指標、網絡、日誌、應用鏈路、RUM 等數據的收集。為適配更多用户的使用場合,觀測雲對內置的數據接收端 (inputs) 進行了預置,超過 400+ 配置模板方便用户快速構建對目標系統的數據採集,配合可視化端配套的儀表板模板,實現採集到展現的開箱即用效果。
當然,受應用場景及部署形態的限制,RUM 真實用户體驗監測的數據仍是通過獨立 SDK ,即觀測雲 rum.js 的方式單獨發放到端進行數據收集,這和 ELK 採用的方案是相同的。
數據存儲
ELK
整個 ELK 技術棧的核心是 Elasticsearch 數據庫(簡稱 ES )。ES採用分佈式架構,可以在多個節點上存儲和處理數據。每個節點負責存儲數據的一部分,並處理查詢和分析請求。節點之間通過集羣協作,實現數據的自動分片和負載均衡,提供高可用性和可伸縮性。
!
入庫數據藉助基於倒排索引(Inverted Index)的數據結構來支持快速的全文搜索。倒排索引將每個文檔中的每個詞項映射到出現該詞項的文檔列表,這樣可以快速找到包含特定詞項的文檔。倒排索引還存儲了詞項的位置和頻率信息,以支持更高級的查詢操作。
同時為優化檢索準確性,Elasticsearch 使用分析器(Analyzer)對文本進行分詞和標準化處理。分詞將文本切分成詞項(Terms),並去除停用詞、標點符號等。標準化會將詞項轉換成小寫形式,並應用詞幹提取和詞形還原等技術以提高搜索的準確性。
觀測雲
觀測雲採用自研的 GuanceDB 對數據進行管理,其底層基於 Apache Doris 構建。在設計上 GuanceDB 把 Schemaless 當成最重要的特徵之一,可以支持任意字段的寫入,也可以實時增刪數據字段,無需手動維護數據模型。其數據存儲採用分佈式架構部署,一方面可以保證自身的高可用,另一方面也可以通過動態增刪節點實現集羣的橫向擴展。
在數據存取性能方面,通過對數據排序和索引結構的簡化,其查詢性能相比 Elastic 有較大幅度的性能提升。配合分層存儲策略等技術,有效減少用户整體的擁有成本。此外,全棧自研的 GuanceDB 數據庫在國內某些應用場景中,相比於 ES 也有着更高的可靠性和安全性,可以適配更豐富的用户需求場景。
數據查詢
ELK
數據的查詢功能方面,Elasticsearch 支持豐富的查詢語法和靈活的搜索功能。提供了諸如全文搜索、精確匹配、範圍查詢、布爾查詢、模糊查詢、聚合等多種查詢類型。通過使用查詢 DSL(Domain-Specific Language)和查詢 API ,用户可以構建複雜的查詢和過濾條件,並對結果進行排序、分頁和聚合操作。
作為 ELK 套件可視化領域的前端工具,Kibana 同時提供了基於 DSL 的查詢編輯器,稱為 Kibana Query Language(KQL),這是一種簡化的查詢語言,專門用於在 Kibana 中查詢和過濾日誌數據和指標數據。
總體上講,DSL 是 Elasticsearch 的通用查詢語言,適用於廣泛的領域和使用場景,而 KQL 是 Kibana 針對日誌查詢和分析而設計的簡化查詢語言。DSL 功能更為強大和靈活,適用於複雜的查詢需求,而 KQL 更加簡單易用,適用於日常的日誌查詢和過濾操作。
觀測雲
雖然 KQL 是對 DSL 的簡單封裝,其語法結構類似於 DSL 。但同一個平台中使用兩種查詢語言畢竟會導致學習成本的升高。為優化這個應用場景,觀測雲提供了 DQL 查詢語言,為全平台提供統一的可觀測查詢語句。觀測雲中所有類型的數據,無論是指標、日誌、鏈路,還是被觀測的基礎對象、用户訪問行為等數據,都可以通過一套語法體系方便的查詢及使用。
同時,為方便有其他產品使用習慣的用户查詢指標數據,觀測雲的查詢引擎兼容 PromQL 語法,用户可以使用 PromQL 對指標數據進行獲取。無縫銜接舊的使用習慣,進一步降低用户使用觀測雲的技術門檻。
可視化
ELK
Kibana 提供了比較豐富的圖表、圖形和儀表盤,如柱狀圖、折線圖、餅圖、地圖等,方便用户更直觀地理解和分析數據。用户可以創建各種類型的可視化圖表,並藉助上面提到的 KQL 構建查詢條件,來快速定位和篩選感興趣的數據。儀表盤支持動態交互及報表生成,便於對外分享各類儀表板。另外 Kibana 還提供了豐富的探索和分析功能,以幫助您發現數據中的模式、異常和趨勢。用户可以通過聚合查詢、數據過濾、數據透視、時間序列分析等功能來深入挖掘數據。
觀測雲
相比於 Kibana 可視化組件,觀測雲提供了更加強大的可視化界面 GuanceStudio 。其中 GuanceStudio Scenes 場景模塊除提供對標 Kibana 的完整可視化能力外,在圖形組件類型及數據查詢方面相比 Kibana 有着明顯的優勢。觀測雲 Studio 預置了 27 種儀表類型,滿足不同場景的使用需求。所有數據的查詢、過濾、篩選均基於DQL語言,避免了 Kibana 兩套查詢語言造成的查詢能力限制。
基於多年的可觀測場景積累,觀測雲在 Scenes 場景中為用户準備了多種監控儀表模板。用户點擊對應的儀表板模板,即可完成儀表板創建。
除了 Scenes 場景外,GuanceStudio 還對一些基礎場景儀表做了預置,例如 APM 應用分析控制枱,RUM 用户體驗分析控制枱,基礎設施監測控制枱等。用户接入數據後只需要點擊進入對應的控制枱,即可開展對相關數據對象的分析和監控,如需基於這些控制枱進行場景儀表板的構建,只需要將其克隆到對應的儀表板即可。無需自行從零開始搭建儀表板體系。
成本對比
對比兩種可觀測工具的獲取方式,ELK 目前提供 Elastic Cloud ,通過將 ELK 堆棧部署在雲平台上為用户提供 ELK 完整技術棧服務。目前已合作的雲服務商在 ELK 官網可獲取。如用户使用未列入名單的其他 IaaS 服務商,也可以通過下載 Elastic Stack 的方式,在自己環境中部署 ELK 套件。
部署費用方面,依底座規格的不同,ELK 套件的授權費用將有所差別。以雲服務商託管為例,大致對應 1TB 熱存、3TB 温存、7TB 冷存的基礎配置版底座需要花費 $5.2/hour 的擁有成本(相當於 ¥27k/moth )。對於接入初期較少數據量的情況,這種計費方式會造成比較大的浪費。後期隨着數據量的增長,費用又會出現比較大的上升。對於用户的總體擁有成本會造成比較大的壓力。
相比於 ELK ,觀測雲的服務提供方式就靈活很多了,目前提供的三種接入方案中,首推用户使用 SaaS 服務接入觀測數據,這樣可以以較少的費用支出,實現系統全鏈路可觀測體系的建立。後期隨着數據規模的增長,如希望進一步優化海量數據的存儲成本,可考慮採用私有化輸出和雲上專屬託管的方式,建立用户私有的觀測雲技術棧。相比於 ELK Cloud 版本,觀測雲私有化輸出版本的成本也有着比較大的優勢,尤其是在超大數據規模下,通過觀測雲的冷熱分離版本,綜合性價比可以做到將近 10 倍。通過 SaaS + 私有化的交付方式,可以為用户可觀測平台的選型提供更多靈活性。
總結
通過幾個維度的簡單對比不難發現,觀測雲相比傳統的 ELK 套件有着比較明顯的優勢:
- 在數據採集端,通過"One Agent"方式,簡化了數據採集配置及安裝,減少資源佔用;
- 在數據存儲端,通過自研 GuanceDB 數據庫,降低數據存儲成本,提升數據查詢性能;
- 在數據應用端,GuanceStudio 除提供與 Kibana 相同的場景儀表板可視化能力外,還基於觀測場景提供了更為豐富的可視化儀表板預置,減少用户自行編輯儀表板的工作量;
- 通過觀測雲 DQL 統一查詢語言,降低查詢語法的學習難度;
- 提供更加靈活的產品獲取方式,優化用户的總體擁有成本。
總體來説,觀測雲是一款更加優秀的全鏈路觀測工具,正在考慮 ELK 實施或產品替代的小夥伴一定不要錯過觀測雲。