共用方式為


自定義 Azure 優化引擎

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


擴大引擎範圍

根據預設,Azure Automation 受管身份僅在相應的訂用帳戶上被指派讀者角色。 不過,您可以將相同的讀者角色授與其他訂用帳戶,或更簡單地授予頂層管理群組來擴展其建議範圍。

增強型虛擬機(VM)適當大小建議的情況下,您可能會將您的 VM 報告至多個工作區。 如果您需要在建議範圍中包含除了 AOE 正在使用的主要工作區之外的其他工作區,只要將這些工作區的 ID 新增至 AzureOptimization_RightSizeAdditionalPerfWorkspaces 變數即可(詳情請參閱 設定工作區)。

如果您有多個 Entra ID 目錄(也稱為租使用者),您可以將 AOE 的觸達範圍延伸至不同於部署所在的另一個租使用者。 若要達成此目的,您有兩個選項,每個選項都有其優缺點:

次要租使用者中的服務主體 Azure Lighthouse 部署
提供最廣泛的功能涵蓋範圍(請參閱下面的限制) 提供幾乎完整的功能涵蓋範圍(請參閱下面的限制)
基於秘密的較不安全且未受管理的驗證方法 提供可靠的身份驗證,重用引擎的自動管理身份識別
在增強 VM 適當大小建議時,不支援從次要租戶中的 Log Analytics 工作區重複使用 Perf 指標。 不支援 Microsoft Entra 物件,這影響了身分識別和角色活頁簿的完整性以及 Microsoft Entra ID 相關建議。 [政策符合性活頁簿概觀] 索引標籤不會輸入來自次要租戶的數據,僅支援詳細的政策分析。
實作是以協助程式PowerShell腳本的執行為基礎 實作是以部署 Azure Resource Manager 範本為基礎
更具彈性的次要租用戶覆蓋範圍,只需將許可權授與更高層級範圍的服務主體 在次要租戶的每個訂用帳戶中完成部署,需要 Azure 原則來擴展。
成本效益較低,因為次要租用戶會重複工作排程。 更具成本效益,因為現有的作業排程會自動涵蓋次要租使用者

具有次要租用戶中服務主體的多租使用者

若要以服務主體為基礎的方法擴大引擎範圍,您必須確保下列必要條件:

  • 在次要租用戶中建立服務主體(應用程式註冊)和密鑰。
  • 將必要的許可權授與次要租戶中的服務主體,也就是在 Azure 訂用帳戶/管理群組中的讀取者,以及在 Microsoft Entra ID 中的全域讀取者
  • 在 AOE 的自動化帳戶中建立 自動化認證 。 將服務主體的用戶端識別元設定為用戶名稱,並將密碼設定為密碼。
  • 在 AOE 部署的訂用帳戶中執行 Register-MultitenantAutomationSchedules.ps1 腳本(可以在 AOE 根資料夾中取得)。 此腳本會為每個匯出 Runbooks 建立新的作業排程,並將其設定為查詢次要租戶。 您只需要使用下列語法來呼叫文稿:
./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>]

透過 Azure Lighthouse 的多租戶架構

若要使用 Azure Lighthouse 型方法擴大引擎範圍,您必須確定下列必要條件:

  • 準備要部署在次要租使用者中的 Azure Resource Manager 範本。 您可以在儲存庫中重複使用 as-is 參考範本(lighthouse-template.json 檔案,AOE 根目錄)。
  • 如果您要部署單一訂用帳戶的範本,您只需要依照此處 所述的步驟,使用上述參考範本並指定範本參數值(作為個別的參數檔案,或直接在 Azure 入口網站介面中)。
  • 如果您需要大規模部署至多個訂用帳戶,您可以遵循此處 提供的指示來運用 Azure 原則, 並調整原則定義程式碼,以遵循上述參考範本。
  • 不論部署方法為何,您必須提供的範本參數如下:
    • managedByTenantId - 部署 AOE 所在租戶的 Microsoft Entra 租戶識別碼。
    • principalId - Microsoft AOE 自動化帳戶系統受控識別的 Entra 物件識別碼。
    • principalIdDisplayName - AOE 自動化帳戶名稱。

調整排程

根據預設,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,且必須根據您想要產生建議的一周和小時數來定義。 您必須從您選擇的時間扣除3小時30分鐘。 這是因為基礎時間會定義產生建議之前必須執行的所有相依的自動化運行手冊的時間表。 例如,假設您希望在每星期一上午 8 點 30 分產生建議;那麼基準時間就是下一個日曆日期為星期一的上午 5 點。 您選擇的日期格式必須是 YYYY-MM-dd HH:mm:ss,例如 2022-01-03 05:00:00

腳本也會在需要時要求您輸入您希望程控手冊在哪個混合背景工作群組中執行(請參閱下一個小節)。


使用混合運算工作者擴展 AOE Runbook

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

重要

  • 混合工作者計算機必須安裝必要的 PowerShell 模組。 檔案 upgrade-manifest.json 包含必要模組的清單。
  • 將作業流程書執行內容變更為混合式工作角色之後,每當升級 AOE 時,必須使用 DoPartialUpgrade 標誌,否則您會失去作業流程書的排程設定,並恢復為預設沙盒配置。
  • 用於對 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 自動化 Runbooks 的預設驗證方法是RunAsAccount。 不過,如果您在 Azure VM 中使用混合工作程序,您可以更改為 ManagedIdentity
AzureOptimization_ConsumptionOffsetDays Azure 使用量資料蒐集運行手冊會每天查詢發生在七天前的計費事件(預設值)。 您可以變更為更接近的位移,但請記住,某些訂用帳戶類型(例如 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(預設),BillingProfile(僅限 MCA),或 BillingAccount(MCA 使用,需要將計費帳戶讀者角色新增到 AOE 受控身分)。 查看詳細資料

相關產品:

相關解決方案: