收集效能數據的建議
適用於此 Azure 架構完善的架構效能效率檢查清單建議:
PE:04 | 收集效能資料。 工作負載元件和流程應該提供自動、連續且有意義的計量和記錄。 在工作負載的不同層級收集數據,例如應用程式、平臺、數據和操作系統層級。 |
---|
收集效能資料是收集計量和記錄的流程,可提供工作負載效能的相關資訊。 此數據報括數值,稱為 計量。 計量描述系統在特定時間點的狀態。 它也包含記錄,其中包含組織成記錄的不同數據類型。
藉由收集效能資料,您即可監視和分析工作負載的效能。 您可以使用這項資訊來識別效能瓶頸、針對問題進行疑難排解、最佳化資源配置,並做出資料驅動決策,以改善工作負載的整體效能效率。
如果沒有數據驅動的深入解析,您可能不知道基礎效能問題或優化的機會。 潛在結果包括較慢的響應時間、降低的輸送量、增加的資源使用量,最後是次佳的用戶體驗。 此外,缺乏效能數據可讓您難以及時診斷和疑難解答問題,進而延長停機時間並降低生產力。
定義
詞彙 | 定義 |
---|---|
活動記錄 | 追蹤資源管理作業的記錄,例如刪除資源。 |
應用程式記錄 | 追蹤應用程式事件、錯誤和其他活動相關信息的記錄,例如使用登入和資料庫連線失敗。 |
應用程式效能監視 (APM) 工具 | 監視和報告應用程式效能的工具。 |
程式代碼檢測 | 從應用程式程式代碼的觀點,直接或間接擷取效能計量。 擷取的計量包括流程計量、資源使用,以及語言或運行時間特定的計量。 |
分散式追蹤 | 跨分散式工作負載元件收集及相互關聯計量。 |
計量接收 | 計量的記憶體目的地,可讓時間序列數據相互關聯以進行分析。 |
平台記錄 | 包含資源記錄、活動記錄和稽核記錄的診斷和稽核數據。 |
平台計量 | 記錄特定時間工作負載效能的數值。 |
資源記錄 | 系統產生的數據。 它提供系統狀態的相關信息。 |
Rx/Tx 錯誤 | 網路介面上的接收錯誤和傳輸錯誤數目。 |
結構化記錄 | 定義有意義的格式來記錄訊息,通常是索引鍵/值組。 |
關鍵設計策略
效能優化需要數據根據工作負載的效能目標測量工作負載或流程的目前效能。 您必須收集正確的數據量和多樣性,以根據 效能目標測量程式代碼和基礎結構的效能。 確定工作負載中的每個元件和流程都會自動產生連續且有意義的計量和記錄。 您需要從應用程式、平臺、記憶體和作業系統等不同層級來提供此資料。 全面的效能數據收集可讓您全面瞭解效能,進而精確識別效率不佳和改善途徑。
集中收集效能數據
集中效能計量和記錄是收集各種來源的效能計量和記錄,並將其儲存在中央位置的流程。 建立中央計量接收器和中央記錄接收器。 此集中化可讓您輕鬆存取、分析和監視不同系統和元件之間的效能計量和記錄。 藉由集中計量和記錄,您可以瞭解工作負載的效能。 選擇可匯總和儲存工作負載效能計量和記錄的適當平臺或工具。
取捨:瞭解收集計量和記錄的成本。 一般而言,您收集的計量和記錄越多,成本就越高。
區隔效能數據
區隔效能資料需要根據其來源、用途或環境來整理和分類計量與記錄。 例如,您應該將生產數據與非生產數據分開,或區分效能目標和商務計量。 區隔資料有助於最佳化特定環境、協助進行疑難排解,以及限制效能監控中的不準確之處。 藉由維持不同數據類型之間的清楚區別,您可以更有效率地擷取、分析及回應相關計量,並更妥善地讓工作負載健康情況與工作負載目標保持一致。 若要分割效能數據,請考慮下列建議:
將生產數據和非生產數據分開。 藉由依環境分隔數據,您可以確保每個環境的專注監視和優化。 在生產環境中,您可以更妥善地找出並解決直接影響使用者和商務作業的效能問題。 在非生產環境中,數據分離有助於在測試階段進行有效的疑難解答和微調,再部署到生產環境。
在每個環境中使用一組數據。 請勿將一組數據用於效能目標,另一組數據用於與效能目標相關的警示。 使用不同的數據集會導致不正確的警示破壞效能監視的有效性。
個別的效能目標和商務計量。 營運和開發小組會使用效能目標來監視工作負載健康情況,並符合商務目標。 商務計量與商務目標或客戶報告相關。 擷取個別數據流中的商務計量,即使數據直接重疊也一樣。 分隔可讓您彈性地擷取正確的數據,並獨立分析數據。
定義保留原則
保留原則會規定應保留效能資料的時間長度。 建立這些原則有助於有效率地管理儲存體,並確保只能存取必要的資料進行分析。 這類原則會支援更佳效能,並符合合規性標準。 您應該設定記錄和計量數據的保留原則,以在所有環境中啟用有效的疑難解答和監視。 例如,記錄和計量可能需要在生產環境中保留的時間比測試環境中更長的時間。 保留期限應符合貴組織的需求和合規性法規。 決定保留數據以供分析和稽核之用的時間長度。 封存您不需要立即分析的數據。
收集應用程式效能數據
收集應用程式數據牽涉到監視和分析應用程式的效能計量,例如輸送量、延遲和完成時間,主要是透過檢測程序代碼收集。 應用程式效能數據提供對應用程式健康情況和效能的寶貴見解。 藉由監視和分析效能數據,您可以識別並針對問題進行疑難解答、優化應用程式效能,併為您的應用程式做出明智的決策。
檢測程序代碼
檢測是指內嵌代碼段或將工具整合到應用程式程式代碼的程式。 檢測的目的是在應用程式執行時擷取效能數據。 請務必收集計量,以醒目提示應用程式的重要作業。 專注於輸送量、延遲和完成時間等計量。 請務必區分非商務相關作業和作業。 針對與商務作業相關的數據,請確定其元數據是以允許不同的追蹤和記憶體的方式進行結構化。 程式代碼檢測的主要原因是收集應用程式如何處理其工作負載的數據。 它提供了下列優點:
識別效能瓶頸: 藉由追蹤 CPU 使用量和記憶體使用量等計量,您可以識別瓶頸並據以優化程序代碼。
評估負載下的系統行為: 您可以查看應用程式在不同工作負載和壓力案例下執行的方式。 此數據可協助您識別與延展性、並行存取和資源使用相關的問題。
追蹤應用程式健康情況和可用性: 因為關鍵效能指標會即時監視,因此您可以取得影響應用程式效能和可用性的潛在問題警示。
改善用戶體驗: 您可以深入瞭解使用者如何與應用程式互動。 使用這項資訊來優化用戶體驗,並識別改善的領域。
規劃容量並配置資源: 檢測收集的效能數據可以提供對應用程式資源需求的寶貴見解。 此資訊可通知您有關規劃容量和配置資源的決策。
當您檢測程式代碼以進行效能監視時,請考慮下列策略:
使用 APM 工具:APM 工具可以收集和分析效能數據,包括計量、追蹤和記錄。 APM 工具提供程式碼層級檢測、交易追蹤和效能分析等功能。
使用記錄和追蹤架構:記錄和追蹤架構是開發人員整合到其應用程式中的工具或連結庫,可協助記錄和追蹤。 這些架構提供函式來產生記錄、追蹤要求,有時甚至會格式化或傳輸產生的數據。 藉由將記錄和追蹤架構併入程式代碼基底,開發人員可以在運行時間期間擷取相關數據。 數據可以包含執行路徑、I/O 和效能的相關信息。
自定義檢測:開發人員可以新增自定義程式碼來收集其應用程式和工作負載特有的效能計量。 自定義檢測可以測量運行時間、追蹤資源使用量,或擷取特定事件。 只有在平台計量不足時,才撰寫自定義程式代碼檢測。 在某些情況下,平臺資源可以測量應用程式的匯總甚至細微檢視方塊。 根據平臺功能上的過度程式代碼取捨或相依性,權衡是否要使用自定義程式代碼來複製該工作的問題。
擷取交易時間。 擷取交易時間與測量關鍵技術功能作為效能監視的一部分的端對端時間有關。 應用層級計量應包含端對端交易時間。 這些交易時間應該涵蓋重要的技術功能,例如資料庫查詢、外部 API 呼叫的回應時間,以及處理步驟的失敗率。
使用遙測標準。 請考慮使用以遙測標準為基礎的 APM 工具檢測連結庫和工具,例如 OpenTelemetry。
啟用分散式追蹤
分散式追蹤是用來追蹤和監視要求流經分散式系統的技術。 它可讓您追蹤要求在跨越多個服務和元件時的路徑,提供您工作負載效能和效率的寶貴見解。 分散式追蹤對於效能效率很重要,因為它有助於識別分散式系統中優化瓶頸、延遲問題和區域。 您可以找出延遲或效率不佳的位置,並採取適當的動作,藉由可視化要求流程來改善效能。 請遵循下列步驟來啟用分散式追蹤:
首先,檢測應用程式和服務以產生追蹤數據。 使用支援分散式追蹤的連結庫或架構,例如 OpenTelemetry。
確定追蹤資訊會跨服務界限傳播。 您通常應該在每個要求中傳遞唯一的追蹤標識碼和其他內容資訊。
設定集中式追蹤收集系統。 此系統會收集和儲存您的應用程式和服務所產生的追蹤數據。
使用收集的追蹤數據,將要求的端對端流程可視化,並分析分散式系統的效能特性。
收集應用程式記錄
當您檢測程式代碼時,其中一個主要輸出應該是應用程序記錄。 記錄可協助您瞭解應用程式如何在各種環境中執行。 應用程式記錄會記錄產生應用程式事件的條件。 收集所有應用程式環境的應用程式記錄。 應用程式之間的對應記錄項目應該擷取其個別交易的相互關聯標識碼。 相互關聯標識碼應該將應用程式記錄事件相互關聯到重要的應用程式流程,例如使用者登入。 使用此相互關聯來評估目標與非功能需求內容中重要案例的健康情況。
您應該使用結構化記錄。 結構化記錄可加速記錄剖析和分析。 它可讓記錄更容易編製索引、查詢和報表,而不需要複雜度。 在應用程式程式代碼中新增和使用結構化記錄連結庫。 有時候記錄項目可協助您將無法透過其他方式相互關聯的數據相互關聯。
收集資源效能數據
藉由收集資源效能數據,您可以深入瞭解工作負載的健康情況和行為。 資源效能數據提供資源使用的相關信息,這是容量規劃的關鍵。 此數據也提供工作負載健康情況的深入解析,並可協助您偵測問題並進行疑難解答。 請考量下列建議事項:
收集每個資源的計量和記錄。 每個 Azure 服務都有一組計量,對資源的功能而言是唯一的。 這些計量有助於您了解資源的健康情況和效能。 為每個資源新增診斷設定,以將計量傳送至工作負載小組在建置警示和儀錶板時可以存取的位置。 計量數據可用於短期存取。 對於長期存取或從 Azure 監視器外部的系統存取,請將計量數據傳送至統一接收至存取位置。
使用平臺工具。 從內建和整合式監視解決方案收集靈感,例如 Azure 監視器深入解析。 此工具可簡化效能作業。 當您選取平台並投資自訂工具或報告時,請考慮平臺工具。
監視網路流量。 監視網路流量表示在數據跨網路路徑移動時追蹤和分析數據的流程和模式。 收集流量分析並監視周遊子網路界限的流量。 您的目標是分析和最佳化網路效能。
收集資料庫和記憶體數據
許多資料庫和儲存體系統都提供自己的監視工具。 這些工具會收集這些系統特有的效能資料。 資料庫和儲存體系統通常會產生包含效能相關事件和指標的記錄。 收集資料庫資料和儲存體效能資料,以便識別瓶頸、診斷問題,並做出明智的決策,以改善工作負載的整體效能和可靠性。 請考慮收集下列類型的效能資料:
輸送量:輸送量會測量一段時間內從記憶體系統讀取或寫入的數據量。 輸送量數據表示數據傳輸功能。
延遲:延遲會測量記憶體作業持續多久。 延遲數據表示記憶體系統的回應性。
IOPS (每秒 I/O 作業數):記憶體系統每秒可執行的讀取作業或寫入作業數目的相關數據。 IOPS 數據表示記憶體系統的輸送量和回應性。
容量使用:容量使用量是使用的記憶體容量數量,以及可用的容量。 容量使用數據可協助組織規劃未來的記憶體需求。
針對資料庫,您也應該收集資料庫特定的計量:
查詢效能:資料庫查詢運行時間、資源使用量和效率的相關數據。 緩慢或效率不佳的資料庫查詢可能會大幅降低工作負載的速度。 尋找速度緩慢且經常執行的查詢。
交易效能:資料庫交易效能的相關數據,例如交易持續時間、並行和鎖定爭用。
索引效能:資料庫索引效能的相關數據,例如索引片段、使用量統計數據和查詢優化。
資源使用:包含 CPU、記憶體、磁碟空間、I/O 和網路頻寬的數據。
線上計量:追蹤作用中、中止和失敗連線數目的計量。 高失敗率可能表示網路問題,或可能表示資料庫達到其連線數目上限。
交易速率:資料庫每秒執行的交易數目。 異動速率的變更可能表示效能問題。
錯誤率:指出資料庫效能的數據。 高錯誤率可能表示效能問題。 收集和分析資料庫錯誤。
收集作業系統數據
平臺即服務 (PaaS) 解決方案不需要收集作業系統效能數據。 不過,如果您的工作負載在虛擬機上執行(基礎結構即服務),您需要收集操作系統的相關效能數據。 您必須瞭解作業系統和虛擬機的需求。 經常取樣操作系統性能計數器。 例如,您可以每分鐘取樣性能計數器。
至少收集下列效能區域的相關數據。
效能區域 | 進程或函式 |
---|---|
CPU | - CPU 使用量(使用者模式或特殊權限模式) - CPU 佇列長度(正在等候 CPU 時間的行程數目) |
處理 | - 行程線程計數 - 進程句柄計數 |
記憶體 | - 認可的記憶體 - 可用的記憶體 - 每秒頁面數 - 交換空間使用量 |
磁碟 | - 磁碟讀取 - 磁碟寫入 - 磁碟輸送量 - 磁碟空間使用量 |
網路 | - 網路介面輸送量 - 網路介面 Rx/Tx 錯誤 |
驗證和分析數據
您的效能數據應該與效能目標一致。 數據必須完整且準確地表示工作負載或流程效能,因為它與效能目標相關。 例如,Web 服務的響應時間為 500 毫秒。 讓其成為分析數據的例程,因為頻繁的評估允許早期偵測和降低效能問題。
建立警示。 有可採取動作的警示,有助於識別並修正效能問題。 這些警示應該清楚指出違反的效能閾值、潛在的商務影響,以及相關的元件。 從設定一般和建議的警示開始。 經過一段時間后,您可以根據您的特定需求修改這些準則。 這些警示的主要目標是在警示呈報到重大問題之前,先預測潛在的效能下降。 如果您無法設定外部相依性警示,請考慮設計方法來收集間接度量,例如相依性呼叫的持續時間。
設定數據收集限制。 決定並設定您所收集的數據量及其保留持續時間的邏輯限制。 遙測有時會產生大量的數據。 請務必專注於只擷取最重要的效能指標,或有效率的系統可從效能數據擷取有意義的見解。
Azure 便利化
集中、區隔及保留效能數據: Azure 監視器 會跨多個 Azure 和非 Azure 訂用帳戶和租使用者,從工作負載的每個層級和元件收集及匯總數據。 它會將資料儲存在通用資料平台中,以供一組通用的工具相互關聯、分析、視覺化及/或回應資料。
您至少需要一個 Log Analytics工作區 才能啟用 Azure 監視器記錄。 您可以將單一工作區用於所有的資料收集。 您也可以根據區隔效能數據的需求來建立多個工作區。 它也可讓您定義 保留原則。
收集應用程式效能數據: Application Insights 是 Azure 監視器的功能,可協助您監視應用程式的效能和可用性。 它藉由收集遙測數據,例如要求速率、回應時間和例外狀況詳細數據,來提供應用層級的深入解析。 您可以啟用應用程式的 Application Insights,並將其設定為收集必要的效能數據。 Application Insights 也支持 分散式追蹤。 設定所有流程的分散式追蹤。 若要建置端對端交易流程,請將來自不同應用程式元件或階層的事件相互關聯。
性能計數器是監視應用程式效能的強大方式。 Azure 提供各種性能計數器,可用來收集 CPU 使用量、記憶體使用量、磁碟 I/O、網路流量等等的相關數據。 如果您將應用程式設定為發出性能計數器數據,Azure 監視器會收集並儲存數據以供分析。
收集資源效能數據:大部分的 Azure 服務都會產生平台記錄和計量,以提供診斷和稽核資訊。 藉由啟用診斷設定,您可以指定要收集及儲存的平台記錄和計量。 為了相互關聯,請為所有支援的服務啟用診斷,然後將記錄傳送至與應用程式記錄相同的目的地。
收集資料庫和記憶體效能數據:Azure 監視器可讓您收集 Azure 中資料庫的效能數據。 您可以啟用 Azure SQL 資料庫、適用於 MySQL 的 Azure 資料庫、適用於 PostgreSQL 的 Azure 資料庫 和其他資料庫服務的監視。 Azure 監視器提供監視資料庫效能的計量和記錄,包括 CPU 使用、記憶體使用和查詢效能。 若要收到問題的通知,您可以根據效能閾值設定警示。
Azure 為資料庫提供效能建議,例如 Azure 上的 SQL Server 虛擬機器。 這些建議可協助您優化資料庫工作負載的效能。 其中包括收集性能計數器、擷取等候統計數據,以及在尖峰時段收集效能數據的建議。
Azure 儲存體 分析可讓您收集 blob 記憶體、資料表記憶體和佇列記憶體等 Azure 儲存體 服務的效能數據。 您可以啟用記憶體帳戶的記錄和計量來監視關鍵效能指標,例如讀取/寫入作業數目、輸送量和延遲。
收集作業系統效能數據:Azure 診斷 擴充功能可讓您從虛擬機(VM)收集詳細的效能數據,包括 CPU、記憶體、磁碟 I/O 和網路流量。 此數據可以傳送至 Azure 監視器或其他記憶體服務,以進行分析和警示。
驗證和分析效能數據:在 Azure 監視器內,您可以使用 Azure 監視器記錄來收集、分析及可視化來自應用程式和系統的記錄數據。 您可以將 Azure 監視器記錄設定為從您的應用程式擷取記錄,包括應用層級記錄和基礎結構記錄。 藉由匯總記錄,您可以交叉查詢事件,並深入瞭解應用程式的效能。 如需詳細資訊,請參閱 Azure 監視器記錄的成本計算和選項 和 Azure 監視器的價格。
在 Azure 監視器中,您可以定義警示規則,以根據預先定義的條件監視特定效能計量和觸發警示。 例如,您可以建立警示規則,以在CPU使用量超過特定閾值或回應時間超過指定限制時通知您。 設定警示規則,以將通知傳送給所需的收件者。
當您建立警示規則時,您可以定義準則,以判斷何時應觸發警示。 您可以設定臨界值、匯總方法、時間範圍和評估頻率。 根據您的效能監視需求定義準則。 除了傳送通知之外,您還可以指定觸發警示時要採取的動作。 動作可能包括傳送電子郵件、呼叫 Webhook 或執行 Azure 函式。 選擇適當的動作來回應特定警示案例。
範例
相關連結
效能效率檢查清單
請參閱一組完整的建議。