建構開源可觀測平台
企業必須不斷地確保其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技術堆疊實現的。
在LGTM堆疊中,我們利用:
‧ Loki進行日誌匯總
‧ Grafana儀表板進行遙測可視化
‧ Tempo(或Jaeger)進行追蹤匯總
‧ 受管理的Prometheus進行指標匯總
結論
可觀察性是指對系統擁有全面的可見度,並將業務指標與技術數據相互關聯。監控則是了解系統是否正常運作。而 AIOps 則是從這種可見度中獲取意義。可觀察性和監控對於確保應用程式的順利運行並滿足客戶的服務水準協議(SLA)至關重要。總而言之,透過投資開源的 OTel 框架和 LGTM 工具,站務可靠性工程團隊可以有效地監控其應用程式,並深入了解系統行為和潛在問題。這些工具提供了成本效益和自訂化的優勢,以滿足特定需求。它促進了供應商中立性,這對於避免供應商鎖定而言至關重要。