自定義 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 |
要套用至未連結磁碟建議補救的動作 (Delete 或 Downsize )。 |
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) BillingProfile 或 BillingAccount (針對 MCA,需要將計費帳戶讀者角色新增至 AOE 受控識別)。 查看詳細資料。 |
相關內容
相關產品:
相關解決方案: