共用方式為


自定義 Azure 優化引擎

Azure 優化引擎 (AOE) 是一組 Azure 自動化 Runbook,可收集、擷取和分析 Azure 耗用量和效能數據,以提供成本優化建議。 引擎的設計訴求是彈性且可自定義的,可讓您調整其行為,以更符合組織的需求。 本文提供如何自定義引擎設定的指引。 它包括調整臨界值、變更排程,以及擴充引擎的範圍。


擴大引擎範圍

根據預設,Azure 自動化 受控識別只會透過個別訂用帳戶指派讀者角色。 不過,您可以將相同的讀者角色授與其他訂用帳戶,甚至更簡單地授與其他訂用帳戶,以擴大其建議的範圍。

在增強型虛擬機 (VM) 大小建議的內容中,您可能會將 VM 回報給多個工作區。 如果您需要在建議範圍中包含其他工作區 ,除了主要使用 AOE 之外,您只需要將其工作區標識元新增至AzureOptimization_RightSizeAdditionalPerfWorkspaces變數即可(請參閱設定工作區中的更多詳細數據)。

如果您是多租用戶客戶,您可以將 AOE 的觸達範圍延伸至部署所在租使用者以外的租使用者。 若要達成此擴充功能,您必須確定下列必要條件:

  • 在次要租使用者中建立服務主體(應用程式註冊)和秘密。
  • 將必要的許可權授與次要租使用者中的服務主體,也就是 Azure 訂用帳戶/管理群組中的讀取者 ,以及 Microsoft Entra ID 中的全域讀取器
  • 在 AOE 的自動化帳戶中建立 自動化認證 。 將服務主體的用戶端識別元設定為用戶名稱,並將密碼設定為密碼。
  • Register-MultitenantAutomationSchedules.ps1 部署 AOE 的訂用帳戶內容中 執行腳本 (可在 AOE 根資料夾中取得)。 此腳本會為每個匯出 Runbook 建立新的作業排程,並將其設定為查詢次要租使用者。 您只需要使用下列語法來呼叫文稿:
./Register-MultitenantAutomationSchedules.ps1 -AutomationAccountName <AOE automation account> -ResourceGroupName <AOE resource group> -TargetSchedulesSuffix <suffix to append to every new job schedules, e.g., Tenant2> -TargetTenantId <secondary tenant GUID> -TargetTenantCredentialName <name of the Automation credential created in the previous step> [-TargetSchedulesOffsetMinutes <offset in minutes relative to original schedules, defaults to 0>] [-TargetAzureEnvironment <AzureUSGovernment|AzureGermanCloud|AzureCloud>] [-ExcludedRunbooks <An array of runbook names to exclude from the process>] [-IncludedRunbooks <An array of runbook names to include in the process>]

調整排程

根據預設,AOE 自動化排程的基底時間會設定為部署時間。 在初始部署完成之後不久,匯出、內嵌和建議 Runbook 會根據引擎的預設排程執行。 例如,如果您在星期一上午 11:00 部署 AOE,則每週一下午 2:30 取得新的建議。 如果基於某些原因,此排程不符合您的需求,您可以使用腳本將它重設為更適合您的Reset-AutomationSchedules.ps1時間(可在 AOE 根資料夾中取得)。 您只需要呼叫下列腳本。 遵循語法並回應輸入要求:

./Reset-AutomationSchedules.ps1 -AutomationAccountName <AOE automation account> -ResourceGroupName <AOE resource group> [-AzureEnvironment <AzureUSGovernment|AzureGermanCloud|AzureCloud>]

您選擇的基底時間必須是UTC,且必須根據您想要產生建議的一周和小時數來定義。 您必須從您選擇的時間推算 3h30m。 這是因為基底時間會定義產生建議之前必須執行之所有相依自動化 Runbook 的排程。 例如,假設您想要在星期一上午 8h30 產生建議;基準時間是下一個日曆日期落在星期一上午 5 點。 您選擇的日期格式必須是 YYYY-MM-dd HH:mm:ss,例如 2022-01-03 05:00:00

腳本也會要求您視需要輸入您希望 Runbook 在 中執行的混合式背景工作角色群組(請參閱下一個小節)。


使用混合式背景工作角色調整 AOE Runbook

根據預設,AOE 自動化 Runbook 會在 Azure 自動化 沙箱的內容中執行。 您可能會因為自動化沙箱的記憶體限制而面臨效能問題。 或者,您可能決定實作記憶體帳戶的私人端點,或 SQL 資料庫 強化 AOE 的安全性。 不論是哪一種情況,您都需要從混合式背景工作角色執行 Runbook。 它是具有自動化混合式背景工作角色擴充功能的 Azure 或內部部署虛擬機。 若要變更 AOE Runbook 的執行內容,您必須使用 Reset-AutomationSchedules.ps1 腳本。 請參閱如何使用上一個子區段中的腳本。 設定 Runbook 執行基底時間之後,請輸入您希望 Runbook 在 中執行的混合式背景工作角色組名。

重要

  • 混合式背景工作角色計算機必須已安裝必要的PowerShell模組。 檔案 upgrade-manifest.json 包含必要模組的清單。
  • 將 Runbook 執行內容變更為混合式背景工作角色之後,每當升級 AOE 時,您都必須使用 DoPartialUpgrade 旗標,否則您會遺失 Runbook 排程設定,並還原為預設沙盒組態。
  • 用來對 Azure 進行驗證的受控識別、Microsoft Entra ID 和計費帳戶範圍仍然是 Azure 自動化 使用的範圍。 即使混合式背景工作角色計算機已指派受控識別,它仍會使用 (請參閱詳細數據)。 只有在混合式背景工作角色的內容中才支援使用者指派的受控識別:
    • 自動化帳戶沒有任何相關聯的受控識別,也就是說,只有混合式背景工作角色計算機可以擁有使用者指派的受控識別。
    • 所有 Runbook 都會在混合式背景工作角色的內容中執行。 在此情況下,您必須使用 AzureOptimization_UAMIClientID 使用者指派的受控識別用戶端標識碼作為值來建立自動化變數。
    • 自動化 AzureOptimization_AuthenticationOption 變數值會更新為 UserAssignedManagedIdentity

調整臨界值

針對 Advisor 成本建議,AOE 的預設設定會產生百分位數第 99 個 VM 計量匯總,但您可以將其調整為較不保守。 也有可用來計算配適分數的可調整計量臨界值。 CPU 的預設閾值為 30%(關機建議為 5%)、記憶體的 50% (關機為 100%) 和 750 Mbps 的網路頻寬 (10 Mbps 用於關機)。 所有可調整的組態都以 Azure 自動化 變數的形式提供。 下表中的資訊會醒目提示最相關的組態變數。 若要存取它們,請移至 [自動化帳戶 共用資源 - 變數 ] 功能表選項。

變數 描述
AzureOptimization_AdvisorFilter 如果您不想要取得所有非成本建議程式支柱的建議,您可以指定柱子層級篩選條件(以逗號分隔的清單,其中至少具有下列其中一個值: HighAvailability,Security,Performance,OperationalExcellence。 默認為所有支柱。
AzureOptimization_AuthenticationOption 自動化 Runbook RunAsAccount的預設驗證方法是 。 但是,如果您使用 Azure VM 中的混合式背景工作角色,您可以變更為 ManagedIdentity
AzureOptimization_ConsumptionOffsetDays Azure 使用量數據收集 Runbook 會每天查詢七天前發生的計費事件(預設值)。 您可以變更為更接近的位移,但請記住,某些訂用帳戶類型(例如 MSDN)不支援較低的值。
AzureOptimization_PerfPercentileCpu CPU 計量匯總的預設百分位數為99。 當百分位數降低時,VM 大小適當分數演算法會較不保守地調整。
AzureOptimization_PerfPercentileDisk 磁碟 IO/輸送量計量匯總的預設百分位數為 99。 當百分位數降低時,VM 大小適當分數演算法會較不保守地調整。
AzureOptimization_PerfPercentileMemory 記憶體計量匯總的預設百分位數為99。 當百分位數降低時,VM 大小適當分數演算法會較不保守地調整。
AzureOptimization_PerfPercentileNetwork 網路計量匯總的預設百分位數為99。 當百分位數降低時,VM 大小適當分數演算法會較不保守地調整。
AzureOptimization_PerfPercentileSqlDtu 要用於 SQL DB DTU 計量的預設百分位數。 隨著百分位數的降低,SQL 資料庫 正確大小的演算法會較不保守地調整。
AzureOptimization_PerfThresholdCpuPercentage CPU 閾值 (以 % 處理器時間為單位)。 在上面,VM 大小調整分數會減少。 在下方,Azure 虛擬機擴展集(擴展集)大小正確的成本建議觸發程式。
AzureOptimization_PerfThresholdCpuShutdownPercentage CPU 閾值 (以 % 處理器時間為單位)。 在上面,VM 的大小調整分數會減少(僅限關機建議)。
AzureOptimization_PerfThresholdCpuDegradedMaxPercentage CPU 閾值(在 % 處理器時間中觀察到的最大值)。 在上面,擴展集大小正確的效能建議觸發程式。
AzureOptimization_PerfThresholdCpuDegradedAvgPercentage CPU 閾值(在 % 處理器時間中觀察到的平均值)。 在上面,擴展集大小正確的效能建議觸發程式。
AzureOptimization_PerfThresholdMemoryPercentage 記憶體閾值 (以% 使用的記憶體為單位)。 在上面,VM 大小調整分數會減少。 在下方,擴展集大小正確的成本建議觸發程式。
AzureOptimization_PerfThresholdMemoryShutdownPercentage 記憶體閾值 (以% 使用的記憶體為單位)。 在上面,VM 的大小調整分數會減少(僅限關機建議)。
AzureOptimization_PerfThresholdMemoryDegradedPercentage 記憶體閾值 (以% 使用的記憶體為單位)。 在上面,擴展集大小正確的效能建議觸發程式。
AzureOptimization_PerfThresholdNetworkMbps 網路閾值 (以 Mbps 總計為單位)。 在上面,VM 大小調整分數會減少。
AzureOptimization_PerfThresholdNetworkShutdownMbps 網路閾值 (以 Mbps 總計為單位)。 在上面,VM 的大小調整分數會減少(僅限關機建議)。
AzureOptimization_PerfThresholdDtuPercentage DTU 使用量百分比閾值。 在下方,會將 SQL 資料庫 實例視為使用量過低。
AzureOptimization_RecommendAdvisorPeriodInDays 在 Log Analytics 存放庫中尋找 Advisor 建議的間隔 -預設值為 7,因為 Advisor 建議會每周收集一次。
AzureOptimization_RecommendationAADMaxCredValidityYears 服務主體認證/憑證有效性的年數上限 - 此間隔上方的任何有效性都會產生安全性建議。 預設為 2。
AzureOptimization_RecommendationAADMinCredValidityDays 服務主體認證/憑證到期前的最低天數 - 此間隔以下的任何有效性都會產生營運卓越建議。 預設值為 30。
AzureOptimization_RecommendationLongDeallocatedVmsIntervalDays 在建議刪除之前,VM 已解除分配的連續天數(虛擬機已長時間解除分配,磁碟仍會產生成本)。 預設值為 30。
AzureOptimization_RecommendationVNetSubnetMaxUsedPercentageThreshold 子網IP空間使用量容許的最大百分比。 預設值為80。
AzureOptimization_RecommendationVNetSubnetMinUsedPercentageThreshold 子網IP空間使用量的最小百分比 - 此值下方的任何使用量會將個別子網標示為使用低IP空間。 預設值為 5。
AzureOptimization_RecommendationVNetSubnetEmptyMinAgeInDays 要標幟空白子網的天數下限,因此可避免標示新建立的子網。 預設值為 30。
AzureOptimization_RecommendationVNetSubnetUsedPercentageExclusions 以逗號分隔的單引號括住子網名稱清單,這些名稱必須從子網使用百分比建議中排除,例如 ,'gatewaysubnet''azurebastionsubnet'。 預設為 'gatewaysubnet'
AzureOptimization_RecommendationRBACAssignmentsPercentageThreshold RBAC 指派的最大百分比會限制使用量。 預設值為80。
AzureOptimization_RecommendationResourceGroupsPerSubPercentageThreshold 每個訂用帳戶的資源群組計數上限百分比會限制使用量。 預設值為80。
AzureOptimization_RecommendationRBACSubscriptionsAssignmentsLimit 每個訂用帳戶的 RBAC 指派上限。 目前設定為 2000 年(如記載)。
AzureOptimization_RecommendationRBACMgmtGroupsAssignmentsLimit 每個管理群組的 RBAC 指派上限。 目前設定為 500 (如 記載所示)。
AzureOptimization_RecommendationResourceGroupsPerSubLimit 每個訂用帳戶的資源群組計數上限。 目前設定為980(如 記載所示)。
AzureOptimization_RecommendationStorageAcountGrowthThresholdPercentage 將記憶體標記為沒有保留原則所需的最小記憶體帳戶成長百分比。
AzureOptimization_RecommendationStorageAcountGrowthMonthlyCostThreshold 將記憶體標示為沒有保留原則所需的最低每月成本(以 EA/MCA 貨幣為單位)。
AzureOptimization_RecommendationStorageAcountGrowthLookbackDays 用於分析記憶體帳戶成長的回溯期間(以天為單位)。
AzureOptimization_ReferenceRegion 作為取得可用 SKU 列表的參考 Azure 區域(預設值為 westeurope)。
AzureOptimization_RemediateRightSizeMinFitScore VM 大小建議的最低配適分數必須具有,才能進行補救。
AzureOptimization_RemediateRightSizeMinWeeksInARow VM 大小建議必須完成數據列中的最小周數,才能進行補救。
AzureOptimization_RemediateRightSizeTagsFilter VM 大小建議的標籤名稱/值組必須具有,才能進行補救。 範例: [ { "tagName": "a", "tagValue": "b" }, { "tagName": "c", "tagValue": "d" } ]
AzureOptimization_RemediateLongDeallocatedVMsMinFitScore 已解除分配之 VM 建議的最低配適分數必須具有,才能進行補救。
AzureOptimization_RemediateLongDeallocatedVMsMinWeeksInARow 必須完成長時間解除分配 VM 建議的數據列中最少的周數,才能進行補救。
AzureOptimization_RemediateLongDeallocatedVMsTagsFilter 標記名稱/值組與長時間解除分配的 VM 建議必須有,才能進行補救。 範例: [ { "tagName": "a", "tagValue": "b" }, { "tagName": "c", "tagValue": "d" } ]
AzureOptimization_RemediateUnattachedDisksMinFitScore 未連結磁碟建議的最低配適分數必須具有,才能進行補救。
AzureOptimization_RemediateUnattachedDisksMinWeeksInARow 必須完成未連結磁碟建議的數據列中最少的周數,才能進行補救。
AzureOptimization_RemediateUnattachedDisksAction 要套用至未連結磁碟建議補救的動作 (DeleteDownsize)。
AzureOptimization_RemediateUnattachedDisksTagsFilter 卷標名稱/值組未連結的磁碟建議必須有,才能進行補救。 範例: [ { "tagName": "a", "tagValue": "b" }, { "tagName": "c", "tagValue": "d" } ]
AzureOptimization_RightSizeAdditionalPerfWorkspaces 其他 Log Analytics 工作區識別碼的逗號分隔清單,可在其中尋找 VM 計量(請參閱 設定工作區)。
AzureOptimization_PerfThresholdDiskIOPSPercentage 磁碟 IOPS 使用量百分比閾值。 在下方,使用量過低的進階 SSD 磁碟建議觸發程式。
AzureOptimization_PerfThresholdDiskMBsPercentage 磁碟輸送量使用量百分比閾值。 在下方,使用量過低的進階 SSD 磁碟建議觸發程式。
AzureOptimization_RecommendationsMaxAgeInDays 建議保留在 SQL 資料庫中的最大存留期(以天為單位)。 默認值:365。
AzureOptimization_RetailPricesCurrencyCode 用來收集保留零售價格的貨幣代碼(例如歐元、美元等)。
AzureOptimization_PriceSheetMeterCategories 用於價位表篩選的逗號分隔計量類別,以避免擷取不必要的數據。 預設為 "Virtual Machines,Storage"
AzureOptimization_ConsumptionScope 取用導出的範圍: Subscription (預設值)、(僅限 MCA) BillingProfileBillingAccount (針對 MCA,需要將計費帳戶讀者角色新增至 AOE 受控識別)。 查看詳細資料

相關產品:

相關解決方案: