針對 Azure 監視器自動調整進行疑難排解
Azure 監視器自動調整可協助您執行適當數量的資源來處理應用程式的負載。 其可讓您新增資源來處理增加的負載,還能透過移除閒置資源來節省成本。 您可以根據自己選擇的排程、固定日期時間或資源計量進行調整。 如需詳細資訊,請參閱自動調整概觀。
自動調整服務可提供計量和記錄,以協助您了解發生了哪些調整動作,並評估導致那些動作的狀況。 您可以找到諸如下列問題的解答:
- 為什麼我的服務擴增或縮減?
- 為什麼我的服務未調整?
- 為什麼自動調整動作失敗?
- 為什麼自動調整動作需要時間調整?
Flex 虛擬機器擴展集
自動調整的調整動作會在一組特定虛擬機器作業的 Flex Microsoft.Compute/virtualMachineScaleSets (VMSS) 資源套用手動調整動作之後,延遲數小時。
例如,Azure VM CLI 刪除 或 Azure VM Rest API 刪除,作業會在個別的 VM 上執行。
在這些情況下,自動調整服務並不知道這些個別的 VM 作業。
若要避免這種情況,請使用相同的作業,但在虛擬機器擴展集層級上執行。 例如,Azure VMSS CLI 刪除執行個體 或 Azure VMSS Rest API 刪除執行個體。 自動調整會偵測虛擬機器擴展集中的執行個體計數變更,並執行適當的調整動作。
自動調整計量
自動調整為您提供四個計量來了解其作業:
- 觀察的計量值:選擇要採取調整動作的計量值,如同自動調整引擎所看見或計算。 由於單一自動調整設定可以有多個規則,所以可有多個計量來源,因此您可以使用「計量來源」當作維度來篩選。
- 計量閾值:設定要採取調整動作的閾值。 由於單一自動調整設定可以有多個規則,所以可有多個計量來源,您可以使用「計量規則」當作維度來篩選。
- 觀察到的容量:自動調整引擎所見的有效目標資源執行個體數目。
- 已起始的調整動作:自動調整引擎所起始的擴增和縮減動作數目。 您可以依擴增與縮減動作進行篩選。
您可以使用計量瀏覽器,繪製集中前述計量的圖表。 此圖表應顯示:
- 實際計量。
- 自動調整引擎所見/所計算的計量。
- 調整動作的閾值。
- 容量變更。
範例 1:分析自動調整規則
虛擬機器擴展集的自動調整設定:
- 在擴展集的平均 CPU 百分比大於 70% 達 10 分鐘時擴增。
- 在擴展集的 CPU 百分比小於 5% 超過 10 分鐘時縮減。
讓我們檢閱自動調整服務的計量。
下圖顯示虛擬機器擴展集的 CPU 百分比計量。
下一張圖表顯示自動調整設定中觀察的計量值計量。
最後一個圖表顯示計量閾值和觀察的容量計量。 擴增規則頂端的計量閾值計量為 70。 底端的觀察的容量計量顯示作用中的執行個體數目,目前是 3。
注意
您可以依計量觸發程序規則維度擴增 (增加) 規則來篩選計量閾值以查看擴增閾值,以及依縮減規則 (減少) 來篩選以查看縮減閥值。
範例 2:虛擬機器擴展集的進階自動調整
自動調整設定可讓虛擬機器擴展集資源根據其自己的輸出流量計量進行擴增。 已選取計量閾值的 [以計量除以執行個體計數] 選項。
調整動作規則是如果 [每個執行個體的輸出流量] 值大於 10,則自動調整服務應該會擴增 1 個執行個體。
在此案例中,會將自動調整引擎觀察到的計量值計算為實際計量值除以執行個體數目。 如果觀察的計量值小於閾值,就不會起始任何擴增動作。
下列螢幕擷取畫面顯示兩個計量圖表。
平均輸出流量圖表顯示輸出流量計量的值。 實際值為 6。
下圖顯示幾個值:
如果有多個調整動作規則,您可以使用計量瀏覽器圖表中的分割或 [新增篩選] 選項,依特定來源或規則查看計量。 如需分割計量圖表的詳細資訊,請參閱計量圖表的進階功能 - 分割。
範例 3:了解自動調整事件
在自動調整設定畫面中,移至 [執行歷程記錄] 索引標籤,以查看最新的調整動作。 此索引標籤也會顯示 [觀察的容量] 中在一段時間內的變更。 若要進一步了解所有自動調整動作,包括更新/刪除自動調整設定等作業,請檢視活動記錄,並依自動調整作業進行篩選。
自動調整資源記錄
自動調整服務會提供資源記錄。 記錄有兩種類別:
- 自動調整評估: 每次執行檢查時,自動調整引擎就會記錄每個單一狀況評估的記錄項目。 此項目包含計量的觀察值詳細資料、已評估的規則,以及評估是否導致調整動作。
- 自動調整規模動作:引擎會記錄由自動調整服務起始的調整動作事件,以及那些調整動作的結果 (成功、失敗,以及如同自動調整服務所看見的調整規模)。
如同使用任何 Azure 監視器支援的服務,您可以使用診斷設定,路由傳送這些記錄到:
- 您的 Log Analytics 工作區以進行詳細的分析。
- Azure 事件中樞,然後傳送到非 Azure 工具。
- 您的 Azure 儲存體帳戶以進行封存。
上面的螢幕擷取畫面顯示 Azure 入口網站自動調整 [診斷設定] 窗格。 您可以在該處選取 [診斷/資源記錄] 索引標籤,並啟用記錄收集與路由。 您也可以使用 REST API、Azure CLI、PowerShell 和 Azure Resource Manager 範本,在診斷設定中選擇 Microsoft.Insights/AutoscaleSettings 作為資源類型,執行相同的動作。
使用自動調整記錄進行疑難排解
為了獲得最佳疑難排解體驗,建議您在建立自動調整設定時,透過工作區將記錄路由傳送到 Azure 監視器記錄 (Log Analytics)。 此程序顯示於上一節的螢幕擷取畫面。 您可以使用 Log Analytics,進一步驗證評估和調整動作。
將自動調整記錄設定為傳送至 Log Analytics 工作區之後,您可以執行下列查詢來檢查記錄。
若要開始使用,請嘗試此查詢來檢視最新的自動調整評估記錄:
AutoscaleEvaluationsLog
| limit 50
或者,嘗試下列查詢來檢視最新的調整動作記錄:
AutoscaleScaleActionsLog
| limit 50
使用下列各節來回答這些問題。
發生了您未預期到的調整動作
首先,請執行調整動作查詢來尋找您感興趣的調整動作。 如果是最新的調整動作,請使用下列查詢:
AutoscaleScaleActionsLog
| take 1
從調整動作記錄中選取 CorrelationId
欄位。 使用 CorrelationId
來尋找正確的評估記錄。 執行下列查詢會顯示已評估並導致該調整動作的所有規則和條件。
AutoscaleEvaluationsLog
| where CorrelationId = "<correliationId>"
哪一個設定檔導致了調整動作?
發生調整動作,但您有重疊的規則和設定檔,而且必須追蹤導致該動作的規則和設定檔。
尋找調整動作的 CorrelationId
,如範例 1 中所述。 然後在評估記錄上執行查詢,以進一步了解設定檔。
AutoscaleEvaluationsLog
| where CorrelationId = "<correliationId_Guid>"
| where ProfileSelected == true
| project ProfileEvaluationTime, Profile, ProfileSelected, EvaluationResult
您也可以使用下列查詢,以進一步了解整個設定檔評估:
AutoscaleEvaluationsLog
| where TimeGenerated > ago(2h)
| where OperationName contains == "profileEvaluation"
| project OperationName, Profile, ProfileEvaluationTime, ProfileSelected, EvaluationResult
未發生調整動作
您預期會發生調整動作,但未發生。 可能沒有任何調整動作事件或記錄。
如果您使用計量型調整規則,請檢閱自動調整計量。 觀察的計量值或觀察的容量值可能不是您的預期值,所以不會引發調整規則。 您仍會看到評估,但看不到擴增規則。 冷卻時間也可能讓調整動作無法發生。
檢閱您預期會發生調整動作這段期間的自動調整評估記錄。 檢閱其所做的所有評估,以及為何決定不要觸發調整動作。
AutoscaleEvaluationsLog
| where TimeGenerated > ago(2h)
| where OperationName == "MetricEvaluation" or OperationName == "ScaleRuleEvaluation"
| project OperationName, MetricData, ObservedValue, Threshold, EstimateScaleResult
調整動作失敗
在某些情況下,自動調整服務會採取調整動作,但系統決定不調整或無法完成調整動作。 使用此查詢來尋找失敗的調整動作:
AutoscaleScaleActionsLog
| where ResultType == "Failed"
| project ResultDescription
建立警示規則,以取得自動調整動作或失敗的通知。 您也可以建立警示規則,以取得自動調整事件的通知。
自動調整資源記錄的結構描述
如需詳細資訊,請參閱自動調整資源記錄。
下一步
閱讀自動調整最佳做法的相關資訊。