建構開放源碼的可觀察性平台
企業必須不斷努力確保其IT基礎架構和應用程式全年無虞地運作。現代架構的複雜性(如容器、混合雲、SOA、微服務等)不斷增加,產生了大量難以管理的日誌。我們需要智慧型的應用程式效能管理(APM)和可觀察性工具,以達到卓越的生產力,並符合可用性和正常運作時間的目標。這包括分析應用程式的健康狀況、效能和使用者體驗。採用機器學習技術來識別異常情況和行為模式,將有助於及早發現根本原因,並滿足客戶的服務水準協議(SLA)。
APM和可觀察性工具市場無疑是一個熱門領域。這些工具會攝取多種遙測數據,並提供強大的分析平台,為應用程式和基礎架構的健康狀況提供關鍵見解,包括系統效能。採用可觀察性的軟體開發團隊在逐步釋出應用程式代碼時,將更有優勢。根據”MarketsandMarkets”的研究,2023年可觀察性工具和平台的市場規模預計將從24億美元成長至2028年超過40億美元,年複合成長率(CAGR)為11.7%。
什麼是可觀察性?
可觀察性是指能夠收集有關分散式應用程式、基礎架構以及內部和外部元件與服務之間通訊的數據,讓團隊能夠努力除錯其系統。它使網站可靠性工程(SRE)、軟體工程和營運團隊能夠分析客戶影響並處理服務中斷事件。可觀察性和監控有時會互換使用。可觀察性(主動式)使數據可被存取,並允許您詢問任何系統問題以更深入地了解代碼的行為。監控(被動式)是收集和顯示該數據的任務,以及確定系統整體狀態的能力。
可觀察性可進一步細分為三大支柱:日誌、追蹤和指標,這對於SRE的可觀察性至關重要。
- 日誌有助於我們診斷問題,並告訴我們問題發生的原因。
- 追蹤記錄有助於我們隔離問題,並告訴我們問題發生的位置。
- 指標有助於我們檢測問題,並告訴我們發生了什麼事情。
市場工具、能力與挑戰
根據Gartner對應用程式效能管理(APM)及可觀察性的魔力象限報告,已有20多家廠商提供APM及可觀察性的產品,包括自行託管、由廠商管理或軟體服務(SaaS)部署方式。這些產品提供多項功能,包括應用程式效能指標、事件監控與警示、可追蹤性、異常偵測及漏洞等。
企業業務應用程式包含自製應用程式(如.NET、Java、Python、SQL、NoSQL資料庫等)、第三方/現成產品(如Salesforce、HubSpot等)及整合(如Stripe、PayPal等)。自製應用程式部署於內部資料中心或雲端廠商如AWS、GCP或Azure。現成產品則以SaaS形式提供或透過API整合。有些高度分散式應用程式橫跨數十甚至數百個節點、服務及實例。
• 工具過多:企業應用程式使用各種工具監控應用程式健康與效能(如New Relic、DataDog等)、錯誤紀錄(如Splunk)及雲端廠商提供的工具(如CloudWatch)。這些產品在功能上有所重疊,維護及管理這些工具(採購、學習曲線等)可能相當麻煩。
• 資料量無法預測:想像一下根據應用程式流量、使用情況、對外部產品的依賴等所收集的可觀察性資料(日誌、追蹤、指標)量。所需的資料儲存空間可能很快就會失控成長。
• 定價複雜:這些廠商產品也提供不同的定價模式,如按主機收費(如Splunk、DataDog、Dynatrace)、按使用者收費(如New Relic)、按資料攝入量收費(如SumoLogic、AppDynamics)。定價模式的複雜性使得比較各家廠商的總擁有成本(TCO)及選擇符合需求與預算的工具變得具有挑戰性。
為何選擇開源可觀測性平台?
基於開源的可觀測性工具旨在提供標準化、廠商無關的方式來攝取、轉換並傳送資料至可觀測性後端。開源可觀測性工具可作為替代方案,節省授權費用,並將多個APM工具整合為符合您需求和預算的工具。
然而,維護開源系統可能需要付出努力進行設置和維護,這會增加您的初始運營成本。但從長遠來看,您將節省授權費用,避免廠商鎖定和合約約束。
根據Gartner的預測,到2025年,70%的新雲原生應用程式監控將使用開源工具進行檢測,而非使用廠商特定的代理程式,以提高互操作性;70%的新雲原生應用程式將採用OpenTelemetry進行可觀測性,而非使用廠商特定的代理程式和軟體開發套件(SDK)。
利用開源生態系統擴展可觀測性
可觀測性的開源領域非常活躍。雲原生計算基金會(CNCF)有多種開源工具用於可觀測性和監控。本文將主要聚焦於OpenTelemetry框架和LGTM技術棧。
OpenTelemetry:
上述所描述的「太多工具」挑戰帶來了遙測資料收集的新掙扎。每個工具廠商都有自己的API、SDK、代理程式和收集器,用於記錄、指標和追蹤。我們需要使用OpenTelemetry框架進行統一的遙測收集,以創建和管理遙測資料,如記錄、追蹤和指標。
在CNCF的支持下,OTEL項目提供了一組統一的廠商無關API、SDK和工具,用於產生和收集遙測資料,並將其導出到各種分析工具。您可獲得一個API和每種程式語言的SDK,以提取應用程式的可觀測性資料、一個標準收集器、傳輸協定(OTLP)等等。
最受歡迎的開源可觀測性及監控技術是基於LGTM技術棧實現。
在LGTM技術棧中,我們採用了:
• Loki進行日誌彙集
• Grafana儀表板進行遙測視覺化
• Tempo(或Jaeger)進行追蹤彙集
• 受管理的Prometheus進行指標彙集
結論
可觀測性是指對系統具有全面的可見性,並將業務指標與技術數據聯繫起來。監控則是了解系統是否正常運作。而AIOps則是從這種可見性中獲得洞見。可觀測性和監控對於確保應用程式的順利運作和滿足客戶SLA至關重要。總之,通過投資開源OTel框架和LGTM工具,SRE團隊可以有效地監控其應用程式,並深入了解系統行為和潛在問題。這些工具提供了低成本和可定制化,以滿足特定需求。它促進了供應商中立性,這對於避免供應商鎖定而言至關重要。