敏捷開發實踐必須依賴敏捷監控框架的支持。忽視系統狀態的微小差異(包括基礎設施、應用程序性能和用戶交互)是企業無法承受的風險。特別是在性能指標和系統可靠性對客戶滿意度和忠誠度產生直接影響,並直接影響企業利潤的情況下。
傳統的應用程序性能監控(APM)工具最初設計用於更加靜態和可預測的環境。這些工具並非旨在追蹤微服務架構的快速迭代變化或者應對雲原生應用程序的複雜性。這導致了現代可觀測性方法的崛起,這種方法利用了APM的數據收集原理並擴展了其功能,以提供更深入的系統狀態瞭解。
在本文中,我們將深入探討可觀測性和監控的核心概念,同時探討現代可觀測性方法與傳統監控實踐之間的差異和相互補充的關係。
通過數據質量優化應用性能
性能指標的可靠性取決於所使用的數據。不同的數據源可能具有不同的格式和規模,這可能會影響對應用程序性能真實情況的理解。考慮到“垃圾輸入,垃圾輸出”的挑戰,數據標準化可以作爲一種糾正措施。它可以重新組織數據集,減少冗餘並提高數據的一致性和完整性。其主要目標是確保數據被有效且一致地存儲,以便更容易地檢索、操作和理解。
對於應用程序性能監控(APM),存在多種標準化技術可幫助將異構數據轉化爲通用的度量標準,以便更有效地進行比較和分析:
- 單位轉換:標準化測量單位,例如將所有基於時間的指標轉換爲毫秒,這樣可以保證數據的一致性,便於對比和分析。
- 範圍縮放:將指標調整到一個共同的範圍。這對於比較原本位於不同規模上的指標很有幫助,能夠讓它們在相同的尺度上進行比較和分析。
- Z 分數標準化:將指標轉換爲標準正態分佈。這種標準化方法特別適用於處理異常值,能夠讓數據更加穩定和可比,並有助於發現異常情況。
監控與可觀察性
在優化應用程序性能時,監控和可觀察性發揮着同樣重要但又截然不同的作用。有些人經常錯誤地互換使用這些術語,但兩者之間存在微妙差異。監控使用主動方法,根據預定義的閾值收集數據點並設置警報來標記異常。它主要回答了一個問題:我的系統是否按照預期運行?
另一方面,可觀察性則允許深入研究系統的行爲,提供對您不知道存在的問題的洞察。這種方法可以幫助您回答:爲什麼我的系統沒有按照預期運行? 監控更着重於實時狀態和警報,而可觀察性則更注重於系統行爲的理解和深入分析。
示例:某電子商務平臺
針對一個電子商務平臺,其中應用程序的正常運行時間和用戶體驗至關重要,爲了確保一切順利運行,以下是監控和可觀察性策略的正確組合:
-
監控策略:
- 實時性能監控:監測關鍵指標如服務器響應時間、頁面加載速度和交易處理時間等。設置警報,一旦超出預定閾值,立即通知相關團隊。
- 基礎設施監控:監控服務器、數據庫、網絡等基礎設施的健康狀況,確保它們運行良好,不會影響應用程序性能。
- 用戶行爲分析:跟蹤用戶行爲和交易路徑,瞭解用戶體驗,發現潛在的瓶頸和用戶流失點。
-
可觀察性策略:
- 日誌和異常追蹤:收集應用程序和系統的日誌數據,並實施異常追蹤機制。通過這些數據分析,可以及時發現和解決潛在的問題。
- 分佈式追蹤:監控服務之間的調用和交互,以識別潛在的性能瓶頸和系統間的依賴關係。
- 指標和度量:採集和分析關鍵指標,如交易量、購物車轉化率和用戶反饋等,以衡量業務成功和用戶滿意度。
通過合理結合監控和可觀察性策略,可以實現對應用程序性能的實時監控和全面瞭解,有助於及時發現問題並採取相應的優化和改進措施,確保用戶體驗和業務成功。
策略類型 | 策略名稱 | 目的 |
監控 | 可用性檢查 | 定期進行 ping 測試,確保網站可被訪問 |
監控 | 延遲指標 | 測量頁面加載時間,優化用戶體驗 |
監控 | 錯誤率跟蹤 | 標記服務器錯誤如 “404 Not Found” 超過閾值的情況 |
監控 | 交易監控 | 自動檢查關鍵流程如結賬等是否順利進行 |
可觀察性 | 日誌分析 | 深入分析服務器日誌,跟蹤失敗用戶請求 |
可觀察性 | 分佈式追蹤 | 映射服務間請求路徑,瞭解系統交互 |
可觀察性 | 事件標記 | 在代碼中設置自定義標籤,實時瞭解用戶行爲 |
可觀察性 | 查詢驅動的探索 | 用於暫時性地檢查系統行爲的查詢方法 |
監控和可觀察性之間的協同作用
監控和可觀察性並不是相互衝突的,相反,它們合作共同構建高效的應用程序性能管理(APM)框架。將監控和可觀察性集成在一起可以獲得許多優勢,包括以下列出的優勢:
- 增強覆蓋範圍:監控能夠識別已知問題,而可觀察性讓您能夠探索未知問題。無論是系統崩潰還是微小的性能下降,都能得到全面覆蓋。
- 舉例來說,不僅僅知道您的服務器響應了錯誤代碼
500
,還能瞭解發生這種情況的原因以及對整個生態系統的影響。
- 舉例來說,不僅僅知道您的服務器響應了錯誤代碼
- 改進的分析:混合使用這兩種方法讓您能夠從“正在發生的事情”轉向“爲什麼會發生”。對於基於數據的決策至關重要。您可以更有效地分配資源,確定錯誤修復的優先級,甚至發現您之前未意識到的優化機會。
- 例如,您可能會發現某些 API 調用在一天中的特定時間段消耗更多時間,並追溯到影響資源的內部進程。
- 可擴展性:隨着系統的增長,複雜性通常呈指數級增長。當監控和可觀察性同步工作時,APM 的可擴展性大幅提升。監控可以幫助您密切關注性能指標,而可觀察性則讓您能夠大規模微調系統以實現最佳性能。
- 因此,您可以實現一種可擴展的方法,不僅能夠主動識別瓶頸和資源限制,還可以調查並解決這些問題。
創建一個有凝聚力的系統
協同監控和可觀察性是構建強大、可伸縮且充滿洞察力的APM框架的關鍵組成部分。關鍵在於確立一個相互配合、相互依賴的監控和可觀察性環境,以增強它們在維護系統可靠性方面的作用。儘管不同的情景可能需要不同的方法,但考慮以下基本原則可以建立一個結構緊密的監控和可觀察性體系。
統一數據存儲和檢索
創建內聚分析管道的第一步是統一數據存儲。單一的數據存儲和檢索系統可以提高分析速度和準確性。您的性能分析堆棧應當適應來自監控的靜態指標和來自可觀察性的動態指標。基礎系統架構應具備有效處理不同數據類型的能力。解決方案如時間序列數據庫或數據湖通常能夠很好地滿足這些需求。然而,考慮系統的數據索引、搜索和過濾能力至關重要,尤其是在處理大規模高速數據時。
互操作性
敏捷的APM系統依賴於監控和可觀察工具之間的無縫數據交換。當每個工具作爲獨立系統運行時,存在獲取孤立數據流和操作盲點的風險。考慮構建一個可互操作的系統,允許將數據聚合到單個綜合儀表板中。選擇符合通用數據格式和通信協議的工具。更高級的實現方法是利用自定義中間件作爲連接不同工具之間的橋樑。這樣,可以將監控KPI與可觀測性工具中的詳細日誌和跟蹤關聯起來。
糾正措施
準確瞭解需要修復的問題內容可以幫助更快速地進行修復。在實時生產環境中,速度至關重要,因爲每一分鐘的次優性能都可能導致收入損失或失去用戶信任。當監控系統標記異常時,合理的下一步是深入研究潛在問題。例如,監控系統可能會警告錯誤率突然飆升,但不提供具體原因。集成可觀察性工具有助於連接各層面。這些工具能夠篩選日誌文件、查詢數據庫並分析跟蹤數據,最終提供更精細的視角。因此,可以採取更具針對性、基於數據的行動。
建立工作流
要建立一個自動化工作流程,以便監控系統的警報可以觸發可觀測性工具中的預定義查詢,快速追蹤問題的根本原因,可以採取以下步驟:
- 集成警報與查詢觸發:確保監控系統和可觀測性工具能夠相互集成。這可能需要設置警報系統,以便在檢測到異常時觸發預定義的查詢或腳本。
- 創建預定義查詢:在可觀測性工具中編寫或創建與警報相關的預定義查詢或腳本。這些查詢應該能夠檢索與警報相關的詳細信息,如日誌、指標或其他數據。
- 自動化觸發查詢:配置系統,使得在監控系統發出警報時,自動觸發這些預定義查詢。這可以通過API調用、自動化腳本或其他集成方式來實現。
- 分析和響應:根據查詢結果進行分析,識別根本原因,並採取相應的行動來解決問題。這可能涉及修復 bug、調整配置或其他必要的操作。
- 監控和優化工作流程:持續監控自動化工作流程的效果,並根據需要進行調整和優化,以確保其正常運行並持續提供價值。
通過建立這樣的自動化工作流程,可以更快速地響應和解決監控系統發現的問題,減少手動干預的需求,並提高整體的效率和系統穩定性。
區分監控與可觀察性
雖然監測和可觀察性方法常常相互交叉,但它們在以下方面有着不同的目標、方法和結果。
指標、日誌、跟蹤
監控主要圍繞指標展開。這些指標是預定義的數據點,提供有關係統狀態的定量信息,並指示何時違反了預設的閾值。這些通常是數值,例如CPU利用率、內存使用率或網絡延遲。
可觀察性更關注日誌和追蹤。日誌記錄特定事件和信息,對於深入調查問題至關重要,因爲它們包含了豐富的上下文和細節,使您能夠重現事件或瞭解流程的步驟。
追蹤提供了更廣泛的視角。它們追蹤請求在系統中的旅程,記錄其在各種服務和組件中的路徑。追蹤對於識別瓶頸、延遲問題和揭示性能問題的根本原因特別有用。
被動管理與主動管理
監控主要關注預設的閾值,採用一種被動的管理方法。當某項指標違反這些預設限制時,監控系統會快速響應,支持更廣泛的性能分析策略。這種反應性質非常適合及時解決已知問題,但可能不太適用於處理複雜和新穎問題所需的更主動和深入的方法。
可觀察性擴展了監控的範圍,採用主動和全面的分析來處理複雜和新穎的性能挑戰。這種動態、前瞻的方法有助於持續分析數據源,尋找可能顯示性能問題的模式和異常,如響應時間微小的變化、錯誤率輕微增加或與預期行爲的任何其他偏差。然後,可觀察性啓動全面調查,以瞭解問題的根本原因並採取糾正措施。
固定儀表板與臨時查詢
監控系統通常擁有預設的儀表板,用於展示一系列預定義的指標和性能數據。現代的監控工具允許配置特定的指標和數據點,這些被認爲對於跟蹤系統運行狀況至關重要。基礎指標的選擇通常基於對系統歷史和行業最佳實踐的理解。雖然固定儀表板能有效地回答已知問題,但它們缺乏靈活性來解決不可預見或複雜問題,並且可能無法提供進行有效調查所需的數據點。
相反,可觀察性提供了一種動態、實時的方法來查詢系統性能數據。這些即時查詢可以根據特定的、與上下文相關的問題進行定製。這些查詢的技術基礎在於其能夠分析來自不同來源的大量數據,包括指標、日誌和追蹤的豐富數據集。這種靈活的查詢功能爲解決新問題或意外問題提供了寶貴的靈活性。當出現以前未見過的問題時,用戶可以創建自定義查詢以提取相關數據進行詳細分析。
下面的比較表強調了每組關鍵績效指標 (KPI) 如何與基本理念保持一致,以及監控和可觀察性如何有助於系統管理:
這份表格整理了監控與可觀察性的關鍵績效指標:
關鍵績效指標 | 監控 | 可觀察性 |
---|---|---|
主要目標 | 確保系統在設定參數內運行 | 瞭解系統行爲並識別異常 |
數據的性質 | 指標 | 指標、日誌、跟蹤 |
關鍵指標 | CPU 使用率、內存使用率、網絡延遲 | 錯誤率、延遲分佈、用戶行爲 |
數據採集方法 | 預定義數據點 | 動態數據點 |
範圍 | 反應式:解決已知問題 | 主動:探索已知和未知問題 |
視覺表現 | 固定儀表板 | 即席查詢、動態儀表板 |
警報 | 基於閾值的 | 基於異常 |
測量尺度 | 通常是單維度指標 | 多維度指標 |
結論
當談及永久性的可觀察系統時,它的主動性是其優勢之一。然而,要充分利用可觀察性的潛力,我們必須收集正確的數據——這些數據能夠解讀可預測和不可預測的生產挑戰。文化應該強調改進應用程序的工具。建議的方法是建立一個堆棧,可以適應與應用程序性能相關的任何查詢。
還要注意,可觀察性是一個持續發展的過程,而不是一次性的設置。隨着您的應用程序的擴展和變化,您的儀器設施也應隨之調整。這種方法可以確保查詢(無論是探索常規操作還是處理意外異常)都能夠得到經過微調的響應式可觀察性框架提供的明智迴應。