Поделиться через


Настройка подсистемы оптимизации Azure

Подсистема оптимизации Azure (AOE) — это набор Runbook службы автоматизации Azure, которые собирают, поглощают и анализируют данные о потреблении и производительности Azure для предоставления рекомендаций по оптимизации затрат. Механизм предназначен для того, чтобы быть гибким и настраиваемым, что позволяет вам изменять его поведение в соответствии с потребностями вашей организации. В этой статье приводятся инструкции по настройке параметров подсистемы. Она включает настройку пороговых значений, изменение расписаний и расширение области двигателя.


Расширение области действия механизма

По умолчанию управляемому удостоверению службы автоматизации Azure назначается роль Читателя только по соответствующей подписке. Однако вы можете расширить область своих рекомендаций, просто предоставив ту же роль Читателя другим подпискам или, ещё проще, группе управления верхнего уровня.

В контексте рекомендаций по оптимизации размера виртуальных машин с расширенной функциональностью ваши виртуальные машины могут отчитываться в нескольких рабочих областях. Если вам нужно включить другие рабочие области, помимо основной, которую использует AOE, в область рекомендаций, просто добавьте их идентификаторы рабочих областей в переменную AzureOptimization_RightSizeAdditionalPerfWorkspaces (см. дополнительные сведения о настройке рабочих областей).

Если у вас несколько каталогов Entra ID (также известных как арендаторы), вы можете расширить охват AOE на арендатора, отличного от того, где он был развернут. Для этого у вас есть два варианта, каждый из которых имеет свои плюсы и минусы:

Принципал службы во вторичном арендаторе Развертывание Azure Lighthouse
Предоставляет самый широкий охват функций (см. ограничения ниже) Обеспечивает почти полное покрытие функций (см. ограничения ниже)
Использует менее безопасный и неуправляемый параметр проверки подлинности на основе секретов Обеспечивает надежную аутентификацию с повторным использованием управляемого удостоверения подсистемы.
Не поддерживает повторное использование показателей производительности из рабочих областей Log Analytics в дополнительном клиенте при улучшении рекомендаций по оптимальному размеру виртуальной машины. Отсутствует поддержка объектов Microsoft Entra, что влияет на полноту рабочей книги "Идентичности и Роли" и рекомендаций, связанных с Microsoft Entra ID. Вкладка обзора в книге соответствия политик не отображает данные из вторичного арендатора; поддерживается только подробный анализ политик.
Реализация основана на выполнении вспомогательного скрипта PowerShell Реализация основана на развертывании шаблона Azure Resource Manager
Более масштабируемое покрытие вторичного арендатора всего лишь за счет предоставления разрешений субъекту-службе на более высоком уровне прав доступа. Развертывание выполняется для каждой подписки в вторичной учетной записи; требуется политика Azure для масштабирования.
Менее экономически выгодно, так как графики заданий дублируются для вторичного арендатора. Более экономично, так как существующие расписания заданий автоматически охватывают вторичного арендатора.

Мультитенантный с основным объектом службы во вторичном арендаторе

Чтобы расширить область двигателя с помощью подхода на основе учётной записи службы, необходимо убедиться в выполнении следующих предварительных требований:

  • Создайте учетную запись службы (регистрация приложения) и секрет во вторичном арендаторе.
  • Предоставьте необходимые разрешения субъекту-службе в дополнительном клиенте, а именно читателю в подписках и группах управления Azure и глобальному читателю в идентификаторе Microsoft Entra ID.
  • Создайте учетные данные для автоматизации в учетной записи автоматизации AOE. Задайте идентификатор клиента субъекта-службы в качестве имени пользователя и секрета в качестве пароля.
  • Register-MultitenantAutomationSchedules.ps1 Выполните скрипт (доступен в корневой папке AOE) в контексте подписки, в которой был развернут AOE. Этот скрипт создает новые расписания заданий для каждого экспортного ранбука и настраивает их для обращения ко вторичному арендатору. Просто необходимо вызвать скрипт с помощью следующего синтаксиса:
./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 — идентификатор тенанта Microsoft Entra, в котором был развернут AOE.
    • principalId — идентификатор объекта Microsoft Entra для управляемой системы идентификации учетной записи автоматизации AOE.
    • principalIdDisplayName — имя учетной записи службы автоматизации AOE.

Настройка расписаний

По умолчанию в качестве времени развертывания задается базовое время расписания автоматизации AOE. Вскоре после завершения первоначального развертывания задачи по экспорту, импорту и рекомендации выполняются в соответствии с расписаниями по умолчанию механизма. Например, если вы развертываете AOE в понедельник в 11:00 утра, вы получаете новые рекомендации каждый понедельник в 2:30 вечера. Если это расписание, по какой-то причине, не соответствует вашим потребностям, вы можете сбросить его до времени, которое лучше подходит вам, используя Reset-AutomationSchedules.ps1 скрипт (доступен в корневой папке AOE). Нужно просто вызвать следующий скрипт. Следуйте синтаксису и ответьте на входные запросы:

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

Выбранное базовое время должно быть в формате UTC и определено в соответствии с днем недели и часом, когда вы хотите, чтобы рекомендации генерировались. Вы должны вычесть 3 часа 30 минут из выбранного времени. Это связано с тем, что базовое время определяет расписания для всех зависимых автоматизационных runbook'ов, которые должны выполняться до генерации рекомендаций. Например, предположим, что вы хотите, чтобы рекомендации создавались каждый понедельник в 8h30 утра; базовое время — следующая дата календаря, падающая в понедельник, в 5h00. Формат выбранной даты должен быть YYYY-MM-dd HH:mm:ss, например 2022-01-03 05:00:00.

Сценарий также предлагает вам ввести, по необходимости, группу гибридных рабочих, в которой вы хотите запускать рабочие книги (см. следующий подраздел).


Масштабирование сценариев AOE с использованием гибридного рабочего.

По умолчанию сценарии автоматизации AOE выполняются в контексте песочницы службы автоматизации Azure. Проблемы с производительностью могут возникнуть из-за ограничений памяти песочницы автоматизации. Или вы можете реализовать частные конечные точки для учетной записи хранения или базы данных SQL для повышения безопасности AOE. В любом случае необходимо запустить рукбуки с гибридного рабочего узла. Это виртуальная машина в Azure или локальной среде с расширением гибридного рабочего агента для автоматизации. Чтобы изменить контекст выполнения для AOE runbooks, необходимо использовать скрипт Reset-AutomationSchedules.ps1. Узнайте, как использовать скрипт в предыдущем подразделе. После настройки базового времени выполнения модулей Runbook введите имя группы гибридных рабочих ролей, в которой будут выполняться модули Runbook.

Внимание

  • У машины гибридного работника должны быть установлены необходимые модули PowerShell. Файл upgrade-manifest.json содержит список обязательных модулей.
  • После изменения контекста выполнения runbook на гибридного агента, нужно всегда использовать флаг DoPartialUpgrade при обновлении AOE, иначе вы потеряете параметры расписания runbook и вернетесь к конфигурации песочницы по умолчанию.
  • Управляемое удостоверение, используемое для проверки подлинности в Azure, Microsoft Entra ID и области действия учетной записи выставления счетов, по-прежнему используется Azure Automation. Он будет использоваться даже в том случае, если устройству гибридного рабочего назначено управляемое удостоверение (см. детали). Управляемые удостоверения, назначаемые пользователем, поддерживаются в контексте гибридных работников только если:
    • Учетная запись службы автоматизации не имеет связанного управляемого удостоверения. Это значит, что только компьютер гибридной рабочей роли может иметь управляемое удостоверение, назначаемое пользователем.
    • Все процессы Runbook выполняются в контексте гибридного рабочего. В этом случае необходимо создать AzureOptimization_UAMIClientID переменную автоматизации, где в качестве значения используется идентификатор клиента управляемого удостоверения, назначаемого пользователем.
    • Значение переменной AzureOptimization_AuthenticationOption автоматизации обновляется до UserAssignedManagedIdentity.

Настройка пороговых значений

Для рекомендаций по затратам Advisor конфигурация по умолчанию AOE создает агрегаты метрик виртуальной машины на уровне 99-го процентиля, но их можно настроить для более низкого уровня консервативности. Существуют также настраиваемые пороговые значения метрик, которые используются для вычисления оценки соответствия. Пороговые значения по умолчанию — 30 % для ЦП (5 % для рекомендаций по завершении работы), 50 % памяти (100 % для завершения работы) и 750 Мбит/с для пропускной способности сети (10 Мбит/с для завершения работы). Все настраиваемые конфигурации доступны как переменные в службе автоматизации Azure Automation. Сведения в следующей таблице выделяют наиболее релевантные переменные конфигурации. Чтобы получить доступ к ним, перейдите в меню "Общие ресурсы учетной записи службы автоматизации" — меню "Переменные ".

Переменная Описание
AzureOptimization_AdvisorFilter Если вы не заинтересованы в получении рекомендаций для всех компонентов, не относящихся к Cost Advisor, вы можете указать фильтр на уровне компонентов (список через запятую, содержащий по крайней мере одно из следующих значений: HighAvailability,Security,Performance,OperationalExcellence). По умолчанию применяются все основные столпы.
AzureOptimization_AuthenticationOption Метод проверки подлинности по умолчанию для Runbook службы автоматизации RunAsAccount. Но вы можете перейти на ManagedIdentity, если вы используете гибридного работника в виртуальной машине Azure.
AzureOptimization_ConsumptionOffsetDays Модуль Runbook для сбора данных о потреблении в Azure ежедневно запрашивает данные о событиях выставления счетов, которые произошли семь дней назад (по умолчанию). Можно изменить более близкое смещение, но помните, что некоторые типы подписок (например, MSDN) не поддерживают более низкое значение.
AzureOptimization_PerfPercentileCpu Процентиль по умолчанию для агрегатов метрик ЦП — 99. По мере снижения процентиля алгоритм оценки правильного размера виртуальной машины корректируется менее консервативно.
AzureOptimization_PerfPercentileDisk Процентиль по умолчанию для метрик операций ввода-вывода и пропускной способности диска составляет 99. По мере снижения процентиля алгоритм оценки правильного размера виртуальной машины корректируется менее консервативно.
AzureOptimization_PerfPercentileMemory Процентиль по умолчанию для агрегатов метрик памяти — 99. По мере снижения процентиля алгоритм оценки правильного размера виртуальной машины корректируется менее консервативно.
AzureOptimization_PerfPercentileNetwork Процентиль по умолчанию для агрегатов сетевых метрик составляет 99. По мере снижения процентиля алгоритм оценки правильного размера виртуальной машины корректируется менее консервативно.
AzureOptimization_PerfPercentileSqlDtu Процентиль по умолчанию, используемый для метрик DTU базы данных SQL. По мере снижения процентили алгоритм оптимизации размера в SQL Database корректируется менее консервативно.
AzureOptimization_PerfThresholdCpuPercentage Пороговое значение ЦП (в % времени процессора). Над ним уменьшается оценка соответствия размера виртуальной машины. Под ним запускаются рекомендации по оптимизации затрат для масштабируемого набора виртуальных машин Azure (масштабируемого набора).
AzureOptimization_PerfThresholdCpuShutdownPercentage Пороговое значение ЦП (в % времени процессора). Над ним уменьшается оценка соответствия оптимальному размеру виртуальной машины (только рекомендации по выключению).
AzureOptimization_PerfThresholdCpuDegradedMaxPercentage Порог ЦП (максимальное значение, наблюдаемое в % времени процессора). Над ним активируются рекомендации по оптимальному размеру масштабируемого набора для производительности.
AzureOptimization_PerfThresholdCpuDegradedAvgPercentage Порог ЦП (среднее значение, наблюдаемое в % времени процессора). Над ним активируются рекомендации по оптимальному размеру масштабируемого набора для производительности.
AzureOptimization_PerfThresholdMemoryPercentage Порог памяти (в % используемой памяти). Над ним снижается оценка соответствия размера виртуальной машины. Под ним находятся триггеры рекомендаций по оптимальному размеру затрат.
AzureOptimization_PerfThresholdMemoryShutdownPercentage Порог памяти (в % используемой памяти). Над ним уменьшается оценка соответствия оптимальному размеру виртуальной машины (только рекомендации по выключению).
AzureOptimization_PerfThresholdMemoryDegradedPercentage Порог памяти (в % используемой памяти). Над ним активируются рекомендации по оптимальному размеру масштабируемого набора для производительности.
AzureOptimization_PerfThresholdNetworkMbps Пороговое значение сети (в общей Мбит/с). Оценка соответствия правильного размера виртуальной машины уменьшается.
AzureOptimization_PerfThresholdNetworkShutdownMbps Пороговое значение сети (в общей Мбит/с). Над ним уменьшается оценка соответствия оптимальному размеру виртуальной машины (только рекомендации по выключению).
AzureOptimization_PerfThresholdDtuPercentage Пороговое значение процента использования DTU. Под ним экземпляр базы данных SQL считается недоиспользуемым.
AzureOptimization_RecommendAdvisorPeriodInDays Интервал в днях для поиска рекомендаций Помощника в репозитории Log Analytics — значение по умолчанию равно 7, так как рекомендации помощника собираются один раз в неделю.
AzureOptimization_RecommendationAADMaxCredValidityYears Максимальное количество лет для срока действия учетных данных или сертификатов субъекта-службы — любая продолжительность срока действия, превышающая этот интервал, создает рекомендацию по безопасности. Значение по умолчанию — 2.
AzureOptimization_RecommendationAADMinCredValidityDays Минимальное количество дней для учетных данных или сертификата Служебного Принципала до истечения срока действия — любой срок действия ниже этого интервала создает рекомендацию по операционной эффективности. По умолчанию - 30.
AzureOptimization_RecommendationLongDeallocatedVmsIntervalDays Количество последовательных дней, когда виртуальная машина была отключена, прежде чем было рекомендовано удалить (виртуальная машина долгое время была отключена, но диски все еще вызывали затраты). Значение по умолчанию — 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 Регион Azure, используемый в качестве ссылки для получения списка доступных номеров SKU (по умолчанию westeurope).
AzureOptimization_RemediateRightSizeMinFitScore Минимальная оценка соответствия, необходимая для выполнения рекомендации по оптимальному размеру виртуальной машины.
AzureOptimization_RemediateRightSizeMinWeeksInARow Минимальное количество недель подряд, в течение которых рекомендации по правильному размеру виртуальной машины должны быть выполнены для применения изменений.
AzureOptimization_RemediateRightSizeTagsFilter Теги с именами и значениями, которые должна иметь рекомендация по оптимальному размеру виртуальной машины, чтобы произошло устранение. Пример: [ { "tagName": "a", "tagValue": "b" }, { "tagName": "c", "tagValue": "d" } ]
AzureOptimization_RemediateLongDeallocatedVMsMinFitScore Минимальная оценка соответствия, которую должна иметь рекомендация по высвобожденной виртуальной машине, чтобы произошло её устранение.
AzureOptimization_RemediateLongDeallocatedVMsMinWeeksInARow Минимальное количество недель подряд, в течение которых длинная рекомендация по отключенным виртуальным машинам должна быть выполнена, чтобы произошло исправление.
AzureOptimization_RemediateLongDeallocatedVMsTagsFilter Пары имя/значение тега, которые должна иметь рекомендация по выделенной виртуальной машине для выполнения исправления. Пример: [ { "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, где следует искать метрики виртуальных машин (см. раздел "Настройка рабочих областей").
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). См. дополнительные сведения.

Связанные продукты:

Связанные решения: