自定义 Azure 优化引擎
Azure 优化引擎(AOE)是一组Azure 自动化 Runbook,用于收集、引入和分析 Azure 消耗和性能数据,以提供成本优化建议。 该引擎设计为灵活且可自定义,使你可以调整其行为,以更好地满足组织的需求。 本文提供有关如何自定义引擎设置的指导。 它包括调整阈值、更改计划以及扩展引擎的范围。
扩大引擎范围
默认情况下,Azure 自动化托管标识仅通过相应的订阅分配“读取者”角色。 但是,只需向其他订阅授予相同的读者角色,甚至更简单地授予顶级管理组,即可扩大其建议的范围。
在增强型虚拟机(VM)大小建议的上下文中,可能会向多个工作区报告 VM。 如果需要在建议范围内包括其他工作区(除了主要一个 AOE 正在使用的工作区),只需将其工作区 ID 添加到AzureOptimization_RightSizeAdditionalPerfWorkspaces
变量(请参阅“配置工作区”中的更多详细信息)。
如果你是多租户客户,可以将 AOE 的覆盖范围扩展到部署它的租户以外的租户。 若要实现此扩展,必须确保满足以下先决条件:
- 在辅助租户中创建服务主体(应用注册)和机密。
- 向辅助租户中的服务主体授予所需的权限,即 Azure 订阅/管理组中的读取者 ,以及 Microsoft Entra ID 中的全局读取者 。
- 在 AOE 的自动化帐户中创建自动化凭据。 将服务主体的客户端 ID 设置为用户名和密码。
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
自动化变量,其中包含用户分配的托管标识客户端 ID 作为值。 - 自动化
AzureOptimization_AuthenticationOption
变量值已更新为UserAssignedManagedIdentity
。
调整阈值
对于顾问成本建议,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 存储库中查找顾问建议的间隔(默认值为 7),因为顾问建议每周收集一次。 |
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 列表(默认值为 westeurope )的参考的 Azure 区域。 |
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 |
用于查找 VM 指标的其他 Log Analytics 工作区 ID 的逗号分隔列表(请参阅 配置工作区)。 |
AzureOptimization_PerfThresholdDiskIOPSPercentage |
磁盘 IOPS 使用率百分比阈值。 在下方,未充分利用的高级 SSD 磁盘建议会触发。 |
AzureOptimization_PerfThresholdDiskMBsPercentage |
磁盘吞吐量使用率百分比阈值。 在下方,未充分利用的高级 SSD 磁盘建议会触发。 |
AzureOptimization_RecommendationsMaxAgeInDays |
建议保留在 SQL 数据库中的最大期限(以天为单位)。 默认值:365。 |
AzureOptimization_RetailPricesCurrencyCode |
用于收集预留零售价格的货币代码(例如 EUR、USD 等)。 |
AzureOptimization_PriceSheetMeterCategories |
用于价目表筛选的逗号分隔计量类别,以避免引入不必要的数据。 默认为 "Virtual Machines,Storage" 。 |
AzureOptimization_ConsumptionScope |
消耗导出的范围: Subscription (默认值)、 BillingProfile (仅限 MCA)或 BillingAccount (对于 MCA),需要将计费帐户读取者角色添加到 AOE 托管标识。 查看更多详细信息。 |
相关内容
相关产品:
相关解决方案: