本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
階段 2:實作可觀測性
在此階段,您會開始讓團隊逐步前往北極星的程序。
選擇您的可觀測性平台
第一步是識別正確的工具來擷取、視覺化和分析訊號,以及傳送提醒。選取工具時,請考慮其功能集、授權模型、價格、技能需求和維護。
功能集
以下是一些要考慮的問題:
-
可設定性和自訂。該工具提供哪些功能來簡化調查體驗,並協助減少 MTTR? 此工具是否提供警示關聯性、指標數學、處理遺失遙測的彈性,或異常偵測?
-
精細程度。支援的遙測訊號擷取和視覺化精細程度為何?
-
角色。此工具是否支援您想要提供給開發人員、平台工程師和其他角色的體驗? 它是否適用於技術和業務角色?
-
小工具。儀表板支援哪些類型的小工具? 工具是否允許建立自訂小工具?
-
預先建置的解決方案。該工具提供哪些預先建置的可觀測性解決方案,以縮短實現價值的時間?
-
自動化和生成式 AI。該工具提供哪些功能,可協助您和您的團隊自動化或減少混沌? 例如,自動異常偵測、預測分析和其他生成式 AI 功能有助於減輕假設和未知因素的壓力 (也就是您不知道或完全了解的事物)。此工具是否支援使用生成式 AI/ML 模型來增強大規模資料分析? 它是否為您提供自動化和實作 AIOps 的選項?
-
安全性。 工具支援哪些類型的身分驗證和授權整合? 使用者和登入體驗是否符合組織的需求?
-
OpenTelemetry 支援。工具和代理程式是否支援 OpenTelemetry? 大多數可觀測性平台支援擷取 OpenTelemetry 相容訊號,但並非所有代理器都提供組態選項,將這些訊號轉送至可觀測性平台。
-
整合。工具提供哪些整合? 考慮是否需要傳送提醒給 Slack、頁面團隊成員或自動化解決方案。
-
延展性。 工具的可擴展性和效能如何? 可觀測性解決方案必須隨著您的需求和用量增加而擴展,因此即使您的應用程式無法使用,它也可以提供診斷。
-
支援。提供哪些支援模型? 即使應用程式失敗,您的可觀測性工具也必須可用,如此您才能符合 MTTR 和應用程式可用性目標或服務層級協議 (SLAs)。開放原始碼解決方案可能提供有限的正式支援。
授權和部署模型
考慮解決方案的授權模式 (開放原始碼或商業) 和部署模式 (自我託管或雲端型)。開放原始碼選項通常具有較低的預付成本,但在提供價值之前,可能需要更多時間進行部署、設定和組態、維護和團隊升級。如果您正在考慮開放原始碼選項,您可能需要一個專門的可觀測性專家團隊。商業軟體通常會以更高的前期成本提供更快的價值時間,而且專用可觀測性團隊的需求會隨著採用率、複雜性和成熟度的增加而隨時間演進。與雲端型解決方案相比,自我託管解決方案需要更多時間進行部署、設定和組態、維護和操作開銷。
定價維度
隨著您的應用程式獲得新的使用者、更大的架構足跡或新的功能和應用程式,工具的定價模型將如何影響您的總體擁有成本 (TCO)? 例如,某些典型的授權模式是永久的或基於訂閱、具名使用者數量、耗用量或磁碟區。考慮您的應用程式和可觀測性工具如何擴展用量,以及授權模型如何影響工具的成本。
團隊技能
根據團隊目前的技能集和成熟度,您需要判斷需要多少提升技能。考慮廠商提供哪些支援來訓練您的團隊。同時考慮您的組織結構是否支援您選擇的工具的組態和管理。例如,如果您選擇 OpenTelemetry,您應該考慮設定專門提供可觀測性的單獨團隊。
操作和維護
評估下列問題:
-
可觀測性代理程式或收集器提供哪些部署選項? 這些選項是否符合架構的要求? 例如,如果您使用可觀測性工具的容器化部署,它是否支援協助程式集或附屬項目? 營運團隊需要採取或使用哪些額外的步驟或工具,以確保符合安全性和所有其他程序?
-
維護解決方案所需的工作量為何? 更新代理程式或收集器的程序有多簡單或自動化? 與自我部署和託管應用程式相比,完全受管和雲端型可觀測性界面通常具有較低的操作開銷,但代理程式或收集器的管理保持不變。將您的團隊結構納入考量,並考量維護您選擇的選項的人力成本。
檢測您的應用程式
上一節問題的答案為您提供檢測應用程式所需的資訊,也就是新增程式碼以擷取應用程式的遙測訊號,以及測量、觀察和驗證行為。您可以使用SDKs應用程式語言的 OpenTelemetry SDK 等 SDK 來自動檢測應用程式。您可能仍然需要新增手動檢測程式碼,以涵蓋任何差距,並確保end-to-end可見性。請特別注意您新增的遙測,並確保您可以將它連接到您在上一個階段建立的一或多個 SLIs 和 SLOs。
收集遙測
設定遙測收集器或代理程式來擷取相關的遙測訊號,以符合您在階段 1 中排定優先順序的結果。
實作可觀測性元件
當遙測正在流動並擷取到可觀測性平台時,請建立儀表板、警示、手冊和 Runbook。
-
儀表板:建立包含相關資訊的儀表板,包括與優先結果相關聯的目前和歷史趨勢視覺化呈現。將這些儀表板提供給您在階段 1 中定義的利益相關者。如需詳細資訊,請參閱 Amazon Builders' Library網站上的建置儀表板以取得操作可見
性。 -
提醒:定義提醒,在結果處於風險或違規時通知您的團隊。請考慮新增安全性和效能問題的提醒。採用下列方式來最佳化警示,以減少警示疲勞和成本:
-
使用異常偵測來避免設定硬閾值,這需要頻繁調整,並減少未知的發生。
-
使用智慧提醒組合,一起查看多個相關指標,而不是為每個指標設定個別提醒。例如,不針對 CPU、記憶體和回應時間設定個別提醒,而是建立一個有意義的提醒,只在這些指標共同指出實際問題時觸發。這種方法可大幅減少警示雜訊,並協助您的團隊專注於實際的服務影響問題,而不必回應隔離的指標峰值。
-
只有在使用者體驗或結果處於風險時,才會產生提醒。例如,當您的應用程式沒有作用中的使用者時,請避免收到由自動升級引起的 CPU 峰值提醒。
-
-
手冊:手冊為回應事件或警示的人員提供心理模型和內容,並協助他們更快識別根本原因。考慮為高度耦合、複雜的應用程式和缺少檢測但直接影響您在階段 1 中識別和優先結果的應用程式建立手冊。
-
Runbook:使用 Runbook 定義解決事件或警示所需的步驟。
驗證可觀測性系統
在整個軟體開發生命週期 (SDLC) 中,驗證儀表板是否在系統測試期間提供預期的行為和更新。實作混沌工程並驗證手冊和 Runbook 中記錄的步驟,以確保它們準確並滿足其目的。您也應該驗證警示擁有權和呈報路徑。