如果您從事軟體開發、 SRE或DevOps工作,您可能聽說過可觀察性、遙測和跟蹤等術語。這些概念對於理解應用程式在生產環境中的行為至關重要,並且它們是現代軟體開發實踐的重要組成部分。
您可能還聽說過在可觀測性方面提到過 OpenTelemetry。在本文中,我們將介紹 OpenTelemetry 101:它是什麼、它如何工作以及為什麼它對現代軟體開發很重要。您將獲得有關如何開始使用 OpenTelemetry 及其關鍵元件的高階概述。
本文翻譯自:https://www.dynatrace.com/news/blog/opentelemetry-101-guide-f...
什麼是 OpenTelemetry?
OpenTelemetry是一個開源可觀測性專案,包含一組 API、庫、代理和埋點標準。使用 OpenTelemetry,開發人員可以收集和處理來自應用程式、服務和系統的遙測資料。
為了理解這意味著什麼,我們首先看一下兩個核心概念:可觀測性和遙測。
可觀測性
可觀測性是透過分析系統生成的資料(例如日誌、指標和跟蹤)來確定系統執行狀況的能力。
與傳統監控不同,傳統監控側重於在沒有整體背景的情況下觀察系統執行狀況的各個指標,可觀察性更深入,分析遙測資料以在更廣泛的系統背景下全面瞭解系統的內部狀態。
Telemetry 遙測
遙測涉及收集和分析來自分散式來源的資料,以深入瞭解系統的執行情況。遙測資料主要分為三種型別:
- 指標。跟蹤系統隨時間變化的效能和執行狀況的定量測量。指標通常會聚合並儲存在時間序列資料庫中,以用於監控和警報目的。
- 日誌。由應用程式和基礎設施元件生成的基於文字的事件和活動記錄。日誌用於除錯、故障排除和稽核目的。
- 追蹤。透過分散式系統的請求流的詳細記錄,包括計時資訊和上下文資料。跟蹤用於效能分析、延遲最佳化和根本原因分析。
OpenTelemetry 101
在此背景下,OpenTelemetry 的統一的平臺無關 API、庫、代理和埋點標準集允許開發人員收集、處理和視覺化來自應用程式的遙測資料。開放遙測協議 (OTLP)在此框架中發揮著關鍵作用,它標準化了系統格式化和傳輸遙測資料的方式,確保資料可互操作和高效傳輸。反過來,這種標準化透過整合資料以獲得整體視角並實現主動問題解決,從而實現全面的可觀察性。
總體而言,OpenTelemetry 具有以下優勢:
- 標準化資料收集。它透過提供用於收集、處理和匯出指標、日誌和跟蹤的標準化工具和 API 來增強可觀察性。
- 互操作性和供應商中立性。一組通用的 API 和資料格式可確保不同工具和平臺之間的互操作性。這種互操作性使組織能夠避免供應商鎖定,並在多個可觀察性工具之間切換或整合,而無需重新檢測其應用程式。
- 增強上下文和相關性。它豐富了遙測資料的相關屬性,有助於指標、日誌和跟蹤的關聯,以全面瞭解系統行為。
- 與現有工具整合。它與現有的可觀測性工具整合,增強資料收集和分析,同時提供標準化資料格式,以實現更深入的洞察並提高互操作性。例如,使用日誌聚合工具的公司可以使用 OpenTelemetry 來獲取額外的跟蹤資料,而無需中斷其設定,從而實現從遺留系統到現代可觀測性的逐步平穩過渡。
- 面向未來的可觀察性。它透過充滿活力的社群的貢獻和主要科技公司的支援不斷發展,這確保了它與最新的行業標準、技術進步和最佳實踐保持一致。
OpenTelemetry 元件
OpenTelemetry 由幾個關鍵元件組成,包括跟蹤器、埋點庫和 OpenTelemetry Collector。
追蹤和埋點
OpenTelemetry 中的跟蹤器跟蹤應用程式不同部分的請求流,類似於跟蹤包裹從一個郵政中心到另一個郵政中心。他們記錄資料透過服務的過程,以幫助確定延遲或問題發生的位置。
埋點涉及嚮應用程式新增程式碼以收集跟蹤資訊,類似於在商店中安裝安全攝像頭以監控客戶的移動和行為。根據應用程式的語言和框架,您將使用許多不同的埋點庫。
跟蹤器和埋點庫都是收集和記錄應用程式效能見解的重要元件。當跟蹤主動記錄並跟蹤應用程式中的資料路徑時,埋點庫提供了必要的程式碼,可以輕鬆地將這些跟蹤器和其他遙測資料收集機制整合到應用程式中。
指標和日誌
指標是衡量應用程式效能的數字資料點。將指標視為應用程式的生命體徵,例如健康檢查中的心率或血壓。它們會告訴您有多少使用者正在訪問該服務、請求需要多長時間或應用程式使用了多少記憶體等資訊。
日誌是應用程式內發生的事件的詳細記錄。這類似於記日記,記下一天中的每一個重要事件。日誌透過記錄錯誤、事務和其他重要操作來為應用程式實現此目的。它們提供上下文和詳細資訊,幫助您在出現問題時診斷問題。
OpenTelemetry Collector
OpenTelemetry Collector 是一種集中式服務,用於收集應用程式的遙測資料(指標、日誌和跟蹤)。它就像一個郵政分揀中心,從不同的地方收集郵件,進行整理,然後將其傳送到正確的目的地。收集器可以處理這些資料,過濾掉不必要的資訊,並將有用的見解傳送到各種監控和分析工具。
監控、可觀測性領域的內容確實極為駁雜,如果想找靠譜的供應商來建設整套體系,歡迎和我們交流產品技術。我們專注在這個領域十年有餘了。
OpenTelemetry 入門
OpenTelemetry 入門涉及為您的程式語言和環境安裝適當的庫和代理。 OpenTelemetry 支援多種語言,包括 Java、Python、JavaScript 等,使其可供大多數應用程式使用。受支援的框架和語言的完整列表可以在 OpenTelemetry 登錄檔 中找到。
安裝過程通常包括將 OpenTelemetry 依賴項新增到專案中並初始化 OpenTelemetry 軟體開發工具包 (SDK)。 OpenTelemetry 網站提供每種語言的詳細文件,指導您完成設定環境的必要步驟。
為您的應用程式配置 OpenTelemetry
安裝庫後,下一步是配置 OpenTelemetry 以從應用程式收集遙測資料。這涉及設定工具來捕獲指標、日誌和跟蹤。您可以透過嚮應用程式新增特定程式碼片段來手動設定檢測,也可以使用 OpenTelemetry 自動檢測代理自動設定檢測。
您還需要配置匯出器,它確定 OpenTelemetry 將其收集的資料傳送到何處進行分析。常見的匯出器包括用於指標的 Prometheus、用於跟蹤的 Jaeger 和用於日誌的 Elasticsearch。配置檔案或環境變數通常用於設定這些引數,從而可以輕鬆地根據您的特定需求調整設定。
根據您的使用案例,您可以自定義取樣率、過濾規則和其他設定以最佳化資料收集和分析。 OpenTelemetry 提供了大量的文件和示例,可幫助您微調配置以實現最大效率。
實施 OpenTelemetry 的最佳實踐
為了最大限度地發揮 OpenTelemetry 的優勢,請遵循下面概述的最佳實踐。
從小規模和漸進開始
從試點專案或單個服務開始,以驗證您的設定並瞭解正在收集的資料。這種方法允許您測試和完善配置、管理實施複雜性並向利益相關者展示價值。
關注相關遙測資料
透過關注特定用例和問題,確保您收集正確型別的遙測資料以實現有效的可觀察性:
- 確定關鍵指標。捕獲關鍵效能指標,例如請求延遲、錯誤率和資源使用情況。
- 將資料置於情境中。向遙測資料新增相關上下文,例如服務名稱、環境標籤和自定義屬性。
- 採用高效抽樣。使用跟蹤取樣來管理資料量,而不會丟失重要的見解。
確保安全和資料隱私
為了避免透過遙測資料洩露敏感資訊,您應該確保遙測資料在傳輸過程中和靜態時使用 TLS 等協議進行加密。您還必須實施強大的訪問控制,以限制誰可以檢視和管理遙測資料,並在傳送遙測資料之前對敏感資訊進行匿名或編輯。這些做法不僅可以保護敏感資訊,還可以保持對資料隱私法規的遵守。
實施高效的取樣技術
實施有效的取樣技術來管理資料量。例如,您可以使用跟蹤取樣來捕獲具有代表性的跟蹤子集,並收集足夠的資訊來有效地診斷問題。
源頭聚合指標
透過在源處聚合指標來減少資料量和處理開銷。在應用程式內或邊緣聚合指標將最大限度地減少傳送到可觀察性後端的資料量。
利用現有工具
將 OpenTelemetry 與現有日誌記錄和跟蹤工具整合,以增強您當前的監控基礎設施。 OpenTelemetry 可以補充和擴充套件您現有的可觀測性工具,以確保統一且有效的策略。
OpenTelemetry 用例
OpenTelemetry 有多個用例,包括:
- 分散式系統的監控和故障排除。 OpenTelemetry 透過捕獲跨多個服務的請求的詳細跟蹤,提供分散式系統中的端到端可見性。例如,如果使用者在電子商務應用程式中遇到響應時間緩慢的情況,OpenTelemetry 可以透過各種微服務跟蹤請求,以查明導致延遲的服務。這種可視性簡化了故障排除,並使 IT 團隊能夠快速識別和解決問題,從而最大限度地減少停機時間並提高系統可靠性。
- 效能最佳化。透過收集和分析指標和跟蹤,OpenTelemetry 有助於識別系統效率低下的地方。例如,如果應用程式遇到高延遲,OpenTelemetry 可以顯示特定資料庫查詢執行時間過長。這種資料驅動的方法使 IT 團隊能夠最佳化效能緩慢的元件,從而提高應用程式效率和使用者體驗。
- 與現有工具整合。 OpenTelemetry 與現有的可觀測性工具無縫整合,將遙測資料匯出到監控和分析平臺。例如,使用 Prometheus 進行監控的組織可以合併 OpenTelemetry 來獲取額外的跟蹤資料,以豐富其可觀測性策略。這種互操作性使組織能夠利用全面的遙測資料增強其當前的監控基礎設施,從而確保統一且有效的可觀測性策略。
OpenTelemetry 的未來
OpenTelemetry 正在迅速發展,不斷更新、增強,以及充滿活力的開發人員和組織社群的貢獻,更重要的是,它不斷得到更廣泛的採用。
瞭解 OpenTelemetry 最新動態的最佳方式是遵循該專案的公共路線圖,其中概述了即將推出的功能、改進和計劃。
也就是說,最令人興奮的功能之一將是客戶端檢測專案,該專案將使開發人員能夠真正瞭解其應用程式延遲和效能的端到端可見性。透過傳統的監控和日誌記錄,您通常會獲得應用程式效能的孤立檢視,但這種開發將使您能夠從瀏覽器互動一直到系統後端檢視應用程式效能。
OpenTelemetry 101:靈活、可定製的遙測收集,可實現全面的可觀測性
OpenTelemetry 是組織建立、收集和自定義指標、跟蹤和日誌的標準方法,以便更全面地瞭解系統行為。使用這種標準化的遙測資料方法,開發人員可以更好地觀察其系統,並且可以透過持續分析系統行為並在異常問題出現之前識別異常來變得更加主動。
此外,由於 OpenTelemetry 是開源的,因此您可以避免供應商鎖定。當開發人員建立新的工具和庫時,這種供應商中立性使得 OpenTelemetry 能夠面向未來。最重要的是,它是一種跨各種可觀察性後端進行分析的有效方法。
總結
OpenTelemetry 是一個開源專案,旨在標準化遙測資料的收集和處理。透過提供一組 API、庫和代理,OpenTelemetry 使開發人員能夠收集、處理和視覺化來自應用程式、服務和系統的遙測資料。這種標準化方法提供了一種靈活、可定製的方法,可以實現全面的可觀察性,從而幫助開發人員更好地瞭解其系統的行為。