收集效能資料的建議

適用于此 Azure Well-Architected Framework 效能效率檢查清單建議:

PE:04 收集效能資料。 工作負載元件和流程應該提供自動、連續且有意義的計量和記錄。 在不同的工作負載層級收集資料,例如應用程式、平臺、資料和作業系統層級。

收集效能資料是收集計量和記錄的程式,可提供工作負載效能的相關資訊。 此資料包括稱為 計量的數值。 計量描述特定時間點的系統狀態。 它也包含記錄,其中包含不同類型的資料組織成記錄。

藉由收集效能資料,您可以監視和分析工作負載的效能。 您可以使用這項資訊來識別效能瓶頸、針對問題進行疑難排解、優化資源配置,以及制定資料驅動決策,以改善工作負載的整體效能效率。

如果沒有資料驅動深入解析,您可能不知道基礎效能問題或優化的機會。 潛在結果包括較慢的回應時間、降低的輸送量、增加的資源使用量,最後是次佳的使用者體驗。 此外,缺乏效能資料會讓您難以及時診斷和疑難排解問題,進而延長停機時間並降低生產力。

定義

詞彙 定義
活動記錄 追蹤資源管理作業的記錄,例如刪除資源。
應用程式記錄檔 追蹤應用程式事件、錯誤和其他活動相關資訊的記錄,例如使用登入和資料庫連線失敗。
APM) 工具 (應用程式效能監視 監視和報告應用程式效能的工具。
程式碼檢測 從應用程式程式碼的觀點,直接或間接擷取效能計量。 擷取的計量包括流程計量、資源使用,以及語言或執行時間特定的計量。
分散式追蹤 跨分散式工作負載元件收集及相互關聯計量。
計量接收 計量的儲存體目的地,可讓時間序列資料相互關聯以進行分析。
平台記錄 包含資源記錄、活動記錄和稽核記錄的診斷和稽核資料。
平台計量 在特定時間記錄工作負載效能的數值。
資源記錄 系統產生的資料。 它提供系統狀態的相關資訊。
Rx/Tx 錯誤 網路介面上的接收錯誤和傳輸錯誤數目。
結構化記錄 定義有意義的格式來記錄訊息,通常是索引鍵/值組。

主要設計策略

效能優化需要資料根據工作負載或流程的效能目標來測量目前的效能。 您必須收集正確的資料量和多樣性,以根據效能目標測量程式碼和基礎結構 的效能。 確定工作負載中的每個元件和流程都會自動產生連續且有意義的計量和記錄。 您需要從應用程式、平臺、儲存體和作業系統等不同層級來源此資料。 完整的效能資料收集可讓您全面瞭解效能,以精確識別效率不佳和改善途徑。

集中處理效能資料

集中處理效能計量和記錄是收集各種來源的效能計量和記錄,並將其儲存在中央位置的程式。 建立中央計量接收和中央記錄接收。 此集中化可讓您輕鬆存取、分析和監視不同系統和元件之間的效能計量和記錄。 藉由集中處理計量和記錄,您可以瞭解工作負載的效能。 選擇適當的平臺或工具,以匯總和儲存工作負載效能計量和記錄。

取捨:瞭解收集計量和記錄的成本。 一般而言,您收集的計量和記錄越多,成本就越高。

區隔效能資料

分割效能資料牽涉到根據計量、用途或環境來組織和分類計量和記錄。 例如,您應該將生產資料與非生產資料分開,或區分效能目標和商務計量。 分割資料有助於優化特定環境、協助進行疑難排解,以及限制效能監視中的不透明度。 藉由維護不同資料類型之間的清楚區別,您可以擷取、分析及回應相關計量,更有效率且更妥善地讓工作負載健康情況與工作負載目標保持一致。 若要分割效能資料,請考慮下列建議:

  • 將生產資料和非生產資料分開。 藉由依環境分隔資料,您可以確保每個環境的焦點監視和優化。 在生產環境中,您可以更清楚地識別並解決直接影響使用者和商務作業的效能問題。 在非生產環境中,資料區隔有助於在測試階段進行有效的疑難排解和微調,再部署到生產環境。

  • 在每個環境中使用一組資料。 請勿將一組資料用於效能目標,而另一組資料用於與效能目標相關的警示。 使用不同的資料集會導致不正確的警示,因而破壞效能監視的有效性。

  • 個別的效能目標和商務計量。 營運和開發小組會使用效能目標來監視工作負載健康情況,並符合商務目標。 商務計量與商務目標或客戶報告有關。 擷取個別資料流程中的商務計量,即使資料直接重迭也一樣。 分隔可讓您彈性地擷取正確的資料,並獨立分析資料。

定義保留原則

保留原則會指定應保留效能資料的時間長度。 建立這些原則有助於有效率地管理儲存體,並確保只有必要的資料可供分析。 這類原則支援更佳的效能,並符合合規性標準。 您應該設定記錄和計量資料的保留原則,在所有環境中啟用有效的疑難排解和監視。 例如,記錄和計量可能需要在生產環境中保留較長的時間,而不是在測試環境中。 保留期間應符合貴組織的需求和合規性法規。 決定保留資料以供分析和稽核之用的時間長度。 封存您不需要立即分析的資料。

收集應用程式效能資料

收集應用程式資料牽涉到監視和分析應用程式的效能計量,例如輸送量、延遲和完成時間,主要是透過檢測程式碼收集。 應用程式效能資料提供對應用程式健康情況和效能的寶貴見解。 藉由監視和分析效能資料,您可以識別並疑難排解問題、優化應用程式效能,以及為您的應用程式做出明智的決策。

檢測程式碼

檢測是指內嵌程式碼片段或將工具整合到應用程式程式碼的程式。 檢測的目的是在應用程式執行時擷取效能資料。 請務必收集計量,以醒目提示應用程式的重要作業。 專注于輸送量、延遲和完成時間等計量。 請務必區分非商務相關作業和作業。 對於與商務營運相關的資料,請確定其中繼資料是以允許不同的追蹤和儲存體的方式進行結構化。 程式碼檢測的主要原因是收集應用程式如何處理其工作負載的資料。 其提供下列優點:

  • 識別效能瓶頸: 藉由追蹤 CPU 使用量和記憶體使用量等計量,您可以識別瓶頸並據以優化程式碼。

  • 在負載下評估系統行為: 您可以查看應用程式在不同工作負載和壓力案例下如何執行。 此資料可協助您識別與延展性、平行存取和資源使用相關的問題。

  • 追蹤應用程式健康情況和可用性: 因為關鍵效能指標會即時監視,所以您可以取得影響應用程式效能和可用性的潛在問題警示。

  • 改善使用者體驗: 您可以深入瞭解使用者如何與應用程式互動。 使用此資訊來優化使用者體驗,並識別改善的區域。

  • 規劃容量並配置資源: 檢測收集的效能資料可以提供對應用程式資源需求的寶貴見解。 此資訊可通知您的規劃容量和配置資源的相關決策。

當您檢測程式碼以進行效能監視時,請考慮下列策略:

  • 使用 APM 工具:APM工具可以收集和分析效能資料,包括計量、追蹤和記錄。 APM 工具提供程式碼層級檢測、交易追蹤和效能分析等功能。

  • 使用記錄和追蹤架構:記錄和追蹤架構是開發人員整合到其應用程式中的工具或程式庫,可協助記錄和追蹤。 這些架構提供函式來產生記錄、追蹤要求,有時甚至會格式化或傳輸產生的資料。 藉由將記錄和追蹤架構併入程式碼基底,開發人員可以在執行時間期間擷取相關的資料。 資料可以包含執行路徑、I/O 和效能的相關資訊。

  • 自訂檢測:開發人員可以新增自訂程式碼,以收集其應用程式和工作負載特有的效能計量。 自訂檢測可以測量執行時間、追蹤資源使用量,或擷取特定事件。 只有在平臺計量不足時,才撰寫自訂程式碼檢測。 在某些情況下,平臺資源可以測量應用程式的匯總或甚至細微檢視方塊。 根據平臺功能上的過多程式碼取捨或相依性,來衡量是否要使用自訂程式碼來複製該工作的問題。

  • 擷取交易時間。 擷取交易時間與測量關鍵技術功能的端對端時間有關,以作為效能監視的一部分。 應用層級計量應該包含端對端交易時間。 這些交易時間應該涵蓋重要的技術功能,例如資料庫查詢、外部 API 呼叫的回應時間,以及處理步驟的失敗率。

  • 使用遙測標準。 請考慮使用以遙測標準為基礎的 APM 工具檢測程式庫和工具,例如 OpenTelemetry。

啟用分散式追蹤

分散式追蹤是用來追蹤和監視要求流經分散式系統的技術。 它可讓您追蹤要求在跨多個服務和元件移動時的路徑,提供您工作負載效能和效率的寶貴見解。 分散式追蹤對於效能效率很重要,因為它有助於識別分散式系統中優化瓶頸、延遲問題和區域。 您可以找出發生延遲或效率不佳的位置,並採取適當的動作,藉由視覺化要求的流程來改善效能。 請遵循下列步驟來啟用分散式追蹤:

  1. 首先,檢測應用程式和服務以產生追蹤資料。 使用支援分散式追蹤的程式庫或架構,例如 OpenTelemetry。

  2. 確定追蹤資訊會跨服務界限傳播。 您通常會在每個要求中傳遞唯一的追蹤識別碼和其他內容資訊。

  3. 設定集中式追蹤收集系統。 此系統會收集並儲存您的應用程式和服務所產生的追蹤資料。

  4. 使用收集的追蹤資料,將要求的端對端流程視覺化,並分析分散式系統的效能特性。

收集應用程式記錄檔

當您檢測程式碼時,其中一個主要輸出應該是應用程式記錄。 記錄可協助您瞭解應用程式如何在各種環境中執行。 應用程式記錄會記錄產生應用程式事件的條件。 收集所有應用程式環境的應用程式記錄。 整個應用程式中對應的記錄項目應擷取其各自交易的相互關聯識別碼。 相互關聯識別碼應該會將應用程式記錄事件相互關聯到重要的應用程式流程,例如使用者登入。 使用此相互關聯來評估目標與非功能需求內容中重要案例的健康情況。

您應該使用結構化記錄。 結構化記錄可加速記錄剖析和分析。 它可讓記錄更容易編制索引、查詢和報告,而不需要複雜度。 在應用程式程式碼中新增和使用結構化記錄程式庫。 有時候記錄專案可協助您相互關聯無法透過其他方式相互關聯的資料。

收集資源效能資料

藉由收集資源效能資料,您可以深入瞭解工作負載的健康情況和行為。 資源效能資料提供資源使用的相關資訊,這是容量規劃的關鍵。 此資料也提供工作負載健康情況的深入解析,並協助您偵測問題並進行疑難排解。 請考量下列建議事項:

  • 收集每個資源的計量和記錄。 每個 Azure 服務都有一組計量,對資源的功能而言是唯一的。 這些計量可協助您瞭解資源的健全狀況和效能。 新增每個資源的 診斷設定 ,以將計量傳送至工作負載小組在建置警示和儀表板時可存取的位置。 計量資料可供短期存取。 如需長期存取,或從 Azure 監視器外部的系統存取,請將計量資料傳送至統一接收至存取位置。

  • 使用平臺工具。 從內建和整合式監視解決方案收集靈感,例如 Azure 監視器深入解析。 此工具可簡化效能作業。 當您選取平臺並投資自訂工具或報告時,請考慮平臺工具。

  • 監視網路流量。 監視網路流量表示在網路路徑之間移動時,追蹤和分析資料的流程和模式。 收集流量分析,並監視周遊子網界限的流量。 您的目標是分析和優化網路效能。

收集資料庫和儲存體資料

許多資料庫和儲存體系統都提供自己的監視工具。 這些工具會收集這些系統特有的效能資料。 資料庫和儲存體系統通常會產生包含效能相關事件和指標的記錄。 收集資料庫資料和儲存體效能資料,以便找出瓶頸、診斷問題,並做出明智的決策,以改善工作負載的整體效能和可靠性。 請考慮收集下列類型的效能資料:

  • 輸送量:輸送量會測量在一段時間內讀取或寫入儲存體系統的資料量。 輸送量資料表示資料傳輸功能。

  • 延遲:延遲會測量儲存體作業的持續時間。 延遲資料表示儲存體系統的回應性。

  • 每秒 IOPS (I/O 作業) :儲存體系統每秒可執行檔讀取作業或寫入作業數目相關資料。 IOPS 資料表示儲存體系統的輸送量和回應性。

  • 容量使用:容量使用是使用的儲存體容量數量,以及可用的容量。 容量使用資料可協助組織規劃未來的儲存體需求。

針對資料庫,您也應該收集資料庫特定的計量:

  • 查詢效能:資料庫查詢執行時間、資源使用量和效率的相關資料。 緩慢或效率不佳的資料庫查詢可能會大幅降低工作負載的速度。 尋找緩慢且經常執行的查詢。

  • 交易效能:資料庫交易效能的相關資料,例如交易持續時間、並行和鎖定爭用。

  • 索引效能:資料庫索引效能的相關資料,例如索引片段、使用量統計資料和查詢優化。

  • 資源使用:包含 CPU、記憶體、磁碟空間、I/O 和網路頻寬的資料。

  • 連線計量:追蹤作用中、中止和失敗連線數目的計量。 高失敗率可能表示網路問題,或表示資料庫達到其連線數目上限。

  • 交易速率:資料庫每秒執行的交易數目。 交易速率的變更可能表示效能問題。

  • 錯誤率:指出資料庫效能的資料。 高錯誤率可能表示效能問題。 收集和分析資料庫錯誤。

如果適用) ,請收集作業系統資料 (

平臺即服務 (PaaS) 解決方案不需要收集作業系統效能資料。 不過,如果您的工作負載在虛擬機器上執行, (基礎結構即服務) ,您需要收集作業系統的相關效能資料。 您必須瞭解作業系統和虛擬機器的需求。 經常範例作業系統效能計數器。 例如,您可以每分鐘取樣效能計數器。

至少會收集下列效能區域的相關資料。

效能區域 進程或函式
CPU - CPU 使用量 (使用者模式或特殊許可權模式)
- CPU 佇列長度 (等候 CPU 時間的進程數目)
流程 - 進程執行緒計數
- 進程控制碼計數
Memory - 認可記憶體
- 可用的記憶體
- 每秒分頁數
- 交換空間使用量
磁碟 - 磁片讀取
- 磁片寫入
- 磁片輸送量
- 磁碟空間使用量
網路 - 網路介面輸送量
- 網路介面 Rx/Tx 錯誤

驗證和分析資料

您的效能資料應符合效能目標。 資料必須完全且精確地表示工作負載或流程效能,因為它與效能目標有關。 例如,Web 服務的回應時間為 500 毫秒。 讓其成為分析資料的常式,因為頻繁的評估允許早期偵測和降低效能問題。

  • 建立警示。 擁有可採取動作的警示,啟用效能問題的提示識別和修正會很有説明。 這些警示應該清楚指出違反的效能閾值、潛在的商務效果,以及涉及的元件。 從設定一般和建議的警示開始。 經過一段時間後,您可以根據您的特定需求修改這些準則。 這些警示的主要目標是先預測潛在的效能下降,再呈報到重大問題。 如果您無法設定外部相依性警示,請考慮設計方法來收集間接度量,例如相依性呼叫的持續時間。

  • 設定資料收集限制。 決定並設定您所收集的資料量及其保留持續時間的邏輯限制。 遙測有時會產生大量的資料。 請務必專注于只擷取最重要的效能指標,或有效率的系統,以從效能資料擷取有意義的見解。

Azure 指導

集中、分割和保留效能資料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 儲存體分析可讓您收集 Azure 儲存體服務的效能資料,例如 Blob 儲存體、資料表儲存體和佇列儲存體。 您可以啟用儲存體帳戶的記錄和計量,以監視關鍵效能指標,例如讀取/寫入作業數目、輸送量和延遲。

收集作業系統效能資料:Azure 診斷擴充功能可讓您從虛擬機器 (VM) 收集詳細的效能資料,包括 CPU、記憶體、磁片 I/O 和網路流量。 此資料可以傳送至 Azure 監視器或其他儲存體服務,以進行分析和警示。

驗證和分析效能資料:在 Azure 監視器內,您可以使用 Azure 監視器記錄來收集、分析及視覺化來自應用程式和系統的記錄資料。 您可以將 Azure 監視器記錄設定為從您的應用程式擷取記錄,包括應用層級記錄和基礎結構記錄。 藉由匯總記錄,您可以交叉查詢事件,並深入瞭解應用程式的效能。 如需詳細資訊,請參閱 Azure 監視器記錄成本計算和選項Azure 監視器的定價

在 Azure 監視器中,您可以定義警示規則,以根據預先定義的條件來監視特定效能計量和觸發警示。 例如,您可以建立警示規則,以在 CPU 使用量超過特定閾值或回應時間超過指定限制時通知您。 設定警示規則以將通知傳送給所需的收件者。

當您建立警示規則時,您可以定義準則,以判斷何時應該觸發警示。 您可以設定臨界值、匯總方法、時間範圍,以及評估的頻率。 根據您的效能監視需求定義準則。 除了傳送通知之外,您還可以指定觸發警示時要採取的動作。 動作可能包括傳送電子郵件、呼叫 Webhook 或執行 Azure 函式。 選擇適當的動作來回應特定的警示案例。

範例

效能效率檢查清單

請參閱一組完整的建議。