Обзор функции "Запуск и остановка виртуальных машин в нерабочее время"

Функция запуска и остановки виртуальных машин в нерабочее время запускает или останавливает включенные виртуальные машины Azure. Она запускает или останавливает компьютеры по заданному пользователем расписанию, предоставляет аналитические сведения через журналы Azure Monitor и отправляет дополнительные сообщения электронной почты с помощью групп действий. В большинстве случаев она поддерживается как в Azure Resource Manager, так и на классических виртуальных машинах.

Примечание

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

Версия запуска и остановки виртуальных машин в нерабочее время (v1) будет признана нерекомендуемой 21 мая 2022 г.

Для запуска виртуальных машин эта функция использует командлет Start-AzVm. Для остановки в виртуальных машин используется Stop-AzVM.

Примечание

Функция "Запуск и остановка виртуальных машин в нерабочее время" была обновлена и получила поддержку последних версий доступных модулей Azure. Обновленная версия этой функции, доступная в Marketplace, не поддерживает модули AzureRM, так как мы перешли с AzureRM на модули Az. В то время как модули Runbook были обновлены для использования новых командлетов модуля Azure Az, они используют псевдоним префикса AzureRM.

Эта функция предоставляет возможность децентрализованной экономичной автоматизации пользователям, которым необходимо снизить расходы на виртуальные машины. Эту функцию можно использовать, чтобы:

Данная функция имеет следующие ограничения.

  • Управление виртуальными машинами может осуществляться в любом регионе, но саму функцию можно использовать только в той подписке, которую использует учетная запись службы автоматизации Azure.
  • Функция доступна в любом регионе Azure и Azure для государственных организаций, в котором поддерживаются рабочая область Log Analytics, учетная запись службы автоматизации Azure и отправка оповещений. Регионы Azure для государственных организаций на данный момент не поддерживают функции электронной почты.

Предварительные требования

  • Модули Runbook для функции запуска и остановки виртуальных машин в нерабочее время работают с учетной записью запуска от имени Azure. Этот метод аутентификации является предпочтительным, так как в нем используется сертификат, а не пароль, который может устареть или часто меняться.

  • Рабочая область Azure Monitor Log Analytics, которая сохраняет журналы заданий и результаты потоков заданий Runbook в рабочей области для запроса и анализа. Учетная запись службы автоматизации и рабочая область Log Analytics должны находиться в одной и той же подписке и поддерживаемом регионе. Рабочая область должна уже существовать, невозможно создать рабочую область во время развертывания этой функции.

Для работы с виртуальными машинами, для которых включена функция "Запуск и остановка виртуальных машин в нерабочее время", рекомендуется использовать отдельную учетную запись службы автоматизации. Версии модулей Azure часто обновляются, и их параметры могут измениться. Эта функция не обновляется с той же частотой, поэтому она может не работать с более новыми версиями используемых командлетов. Перед импортом обновленных модулей в рабочую учетную запись автоматизации рекомендуется импортировать их в тестовую учетную запись автоматизации, чтобы убедиться в отсутствии проблем совместимости.

Разрешения

Необходимо иметь определенные разрешения на включение виртуальных машин для функции запуска и остановки виртуальных машин в нерабочее время. Разрешения различаются в зависимости от того, использует ли функция предварительно созданную учетную запись службы автоматизации и рабочую область Log Analytics или создает новые.

Вам не нужно настраивать разрешения, если вы являетесь участником подписки и глобальным администратором в клиенте Azure Active Directory (AD). Если у вас нет этих прав или вам не нужно настраивать пользовательскую роль, убедитесь, что у вас есть разрешения, описанные ниже.

Разрешения для уже существующей учетной записи службы автоматизации и рабочей области Log Analytics

Чтобы подключить виртуальные машины к функции "Запуск и остановка виртуальных машин в нерабочее время" с помощью существующей учетной записи службы автоматизации и рабочей области Log Analytics, вам потребуются следующие разрешения для области группы ресурсов. Дополнительные сведения о ролях см. в статье Настраиваемые роли Azure.

Разрешение Область
Microsoft.Automation/automationAccounts/read Группа ресурсов
Microsoft.Automation/automationAccounts/variables/write Группа ресурсов
Microsoft.Automation/automationAccounts/schedules/write Группа ресурсов
Microsoft.Automation/automationAccounts/runbooks/write Группа ресурсов
Microsoft.Automation/automationAccounts/connections/write Группа ресурсов
Microsoft.Automation/automationAccounts/certificates/write Группа ресурсов
Microsoft.Automation/automationAccounts/modules/write Группа ресурсов
Microsoft.Automation/automationAccounts/modules/read Группа ресурсов
Microsoft.automation/automationAccounts/jobSchedules/write Группа ресурсов
Microsoft.Automation/automationAccounts/jobs/write Группа ресурсов
Microsoft.Automation/automationAccounts/jobs/read Группа ресурсов
Microsoft.OperationsManagement/solutions/write Группа ресурсов
Microsoft.OperationalInsights/workspaces/* Группа ресурсов
Microsoft.Insights/diagnosticSettings/write Группа ресурсов
Microsoft.Insights/ActionGroups/Write Группа ресурсов
Microsoft.Insights/ActionGroups/read Группа ресурсов
Microsoft.Resources/subscriptions/resourceGroups/read Группа ресурсов
Microsoft.Resources/deployments/* Группа ресурсов

Разрешения для новой учетной записи службы автоматизации и новой рабочей области Log Analytics

Вы можете подключить виртуальные машины к функции "Запуск и остановка виртуальных машин в нерабочее время", используя новые учетную запись службы автоматизации и рабочую область Log Analytics. В этом случае необходимы разрешения, определенные в предыдущем разделе, и разрешения из этого раздела. Также вам потребуются следующие роли.

Разрешение Область
Microsoft.Authorization/Operations/read Подписка
Microsoft.Authorization/permissions/read Подписка
Microsoft.Authorization/roleAssignments/read Подписка
Microsoft.Authorization/roleAssignments/write. Подписка
Microsoft.Authorization/roleAssignments/delete Подписка
Microsoft.Automation/automationAccounts/connections/read Группа ресурсов
Microsoft.Automation/automationAccounts/certificates/read Группа ресурсов
Microsoft.Automation/automationAccounts/write Группа ресурсов
Microsoft.OperationalInsights/workspaces/write Группа ресурсов

Components

Запуск и остановка виртуальных машин в нерабочее время включает в себя предварительно настроенные модули Runbook, расписания и интеграцию с журналами Azure Monitor. Эти элементы можно использовать для настройки запуска и завершения работы виртуальных машин в соответствии с нуждами вашего бизнеса.

Модули runbook

В таблице ниже перечислены модули runbook, которые функция развертывает в вашей учетной записи службы автоматизации. Ни в коем случае не следует вносить изменения в код runbook. Вместо этого напишите собственный runbook для новых функциональных возможностей.

Важно!

Не следует напрямую запускать какой-либо runbook со словом child в имени.

Все родительские модули runbook должны содержать параметр WhatIf. При установки значения "True" этот параметр обеспечивает подробное описание реакции runbook на событие при запуске без параметра и проверяет правильность выбора целевых виртуальных машин. Модули runbook выполняют определенные в них действия, только если параметр WhatIf имеет значение False.

Модуль Runbook Параметры Описание
AutoStop_CreateAlert_Child VMObject
AlertAction
WebHookURI
Вызывается из родительского runbook. Этот модуль runbook создает оповещения для каждого ресурса для сценария AutoStop.
AutoStop_CreateAlert_Parent VMList
WhatIf: Значение true или false
Создает или обновляет правила генерации оповещений Azure для виртуальных машин в целевой подписке или группах ресурсов.
VMList — это список виртуальных машин с разделителями-запятыми (без пробелов), например vm1,vm2,vm3.
WhatIf проверяет логику runbook без выполнения.
AutoStop_Disable None Отключает оповещения AutoStop и расписание по умолчанию.
AutoStop_VM_Child WebHookData Вызывается из родительского runbook. Правила оповещений вызывают этот модуль runbook, чтобы остановить классическую виртуальную машину.
AutoStop_VM_Child_ARM WebHookData Вызывается из родительского runbook. Правила оповещений вызывают этот модуль runbook, чтобы остановить виртуальную машину.
ScheduledStartStop_Base_Classic; CloudServiceName
Действие: Запуск или остановка
VMList
Выполняет действие запуска или отключения в классической группе виртуальных машин через облачные службы.
ScheduledStartStop_Child VMName
Действие: Запуск или остановка
ResourceGroupName
Вызывается из родительского runbook. Выполняет действие Start или Stop для запланированной остановки.
ScheduledStartStop_Child_Classic; VMName
Действие: Запуск или остановка
ResourceGroupName
Вызывается из родительского runbook. Выполняет действие Start или Stop для запланированной остановки классической виртуальной машины.
ScheduledStartStop_Parent Действие: Запуск или остановка
VMList
WhatIf: Значение true или false
Запускает или останавливает все виртуальные машины в подписке. Измените переменные External_Start_ResourceGroupNames и External_Stop_ResourceGroupNames, чтобы они выполнялись только в этих целевых группах ресурсов. Можно также исключить определенные виртуальные машины, обновив переменную External_ExcludeVMNames.
SequencedStartStop_Parent Действие: Запуск или остановка
WhatIf: Значение true или false
VMList
Создает теги sequencestart и sequencestop для каждой виртуальной машины, для которой требуется использовать действие последовательного запуска и остановки. В именах этих тегов учитывается регистр. Значением тега должен быть список положительных целых чисел, например 1,2,3, который соответствует очередности запуска или остановки.
Примечание. виртуальные машины должны находиться в группах ресурсов, определенных в External_Stop_ResourceGroupNames переменных, и External_ExcludeVMNames . Чтобы эти действия выполнялись, они должны иметь соответствующие теги.

Переменные

В таблице ниже перечислены переменные, создаваемые в вашей учетной записи службы автоматизации. Следует изменять только переменные с префиксом External. Изменение переменных с префиксом Internal может вызвать нежелательные эффекты.

Примечание

Ограничения на имя виртуальной машины и группы ресурсов в основном происходят из-за размера переменной. См. статью Ресурсы переменных в службе автоматизации Azure.

Переменная Описание
External_AutoStop_Condition Условный оператор, необходимый для настройки условия перед активацией оповещения. Допустимые значения — GreaterThan, GreaterThanOrEqual, LessThan и LessThanOrEqual.
External_AutoStop_Description Оповещение для остановки виртуальной машины в случае, если процент использования ЦП превышает пороговое значение.
External_AutoStop_Frequency Частота оценки для правила. Этот параметр принимает входные данные в формате временного диапазона. Допустимые значения составляют от 5 минут до 6 часов.
External_AutoStop_MetricName; Имя метрики производительности, для которой настраивается правило генерации оповещений Azure.
External_AutoStop_Severity Серьезность оповещения метрики в диапазоне от 0 до 4.
External_AutoStop_Threshold; Пороговое значение для правила генерации оповещений Azure, указанного в переменной External_AutoStop_MetricName. Процентные значения допустимы в диапазоне от 1 до 100.
External_AutoStop_TimeAggregationOperator; Оператор агрегата времени, который будет применяться к выбранному интервалу для оценки условия. Допустимые значения — Average, Minimum, Maximum, Total и Last.
External_AutoStop_TimeWindow. Размер временного интервала, на котором Azure анализирует выбранные метрики для активации оповещения. Этот параметр принимает входные данные в формате временного диапазона. Допустимые значения составляют от 5 минут до 6 часов.
External_EnableClassicVMs Это значение указывает, являются ли классические виртуальные машины целевыми для этой функции. По умолчанию используется значение True. Присвойте этой переменной значение False, если вы используете подписки поставщика облачных решений Azure (CSP).
External_ExcludeVMNames Разделенный запятыми список имен виртуальных машин, которые нужно исключить, с ограничением в 140 виртуальных машин. Если в список будет добавлено более 140 виртуальных машин, то те из них, которые необходимо исключить, могут начать запускаться или останавливаться в случайном порядке.
External_Start_ResourceGroupNames Разделяемый запятыми список для одной или нескольких групп ресурсов, предназначенных для действий запуска.
External_Stop_ResourceGroupNames Разделяемый запятыми список для одной или нескольких групп ресурсов, предназначенных для действий остановки.
External_WaitTimeForVMRetrySeconds Время ожидания в секундах для выполнения действий на виртуальных машинах для модуля Runbook SequencedStartStop_Parent. Эта переменная позволяет модулю Runbook ожидать дочерние операции в течение указанного числа секунд, прежде чем переходить к следующему действию. Максимальное время ожидания составляет 10 800 секунд, или три часа. Значение по умолчанию — 2100 секунд.
Internal_AutomationAccountName Задает имя учетной записи службы автоматизации Azure.
Internal_AutoSnooze_ARM_WebhookURI Указывает универсальный код ресурса (URI) веб-перехватчика, вызываемого в сценарии AutoStop.
Internal_AutoSnooze_WebhookUri Указывает универсальный код ресурса (URI) веб-перехватчика, вызываемого в сценарии AutoStop.
Internal_AzureSubscriptionId Идентификатор подписки Azure.
Internal_ResourceGroupName Указывает имя группы ресурсов учетной записи службы автоматизации.

Примечание

Для переменной External_WaitTimeForVMRetryInSeconds значение по умолчанию было увеличено с 600 до 2100.

Во всех сценариях переменные External_Start_ResourceGroupNames , External_Stop_ResourceGroupNames и необходимы External_ExcludeVMNames для целевых виртуальных машин, за исключением списков виртуальных машин с разделителями-запятыми для External_Start_ResourceGroupNames, External_Stop_ResourceGroupNamesи External_ExcludeVMNames модулей Runbook. Это означает, что виртуальные машины должны находиться в целевых группах ресурсов для выполнения действий запуска и остановки. Эта логика работает примерно так же, как политика Azure, — можно выбрать целевую подписку или группу ресурсов, после чего действия будут наследоваться создаваемыми в ней виртуальными машинами. Такой подход позволяет избежать необходимости использовать отдельное расписание для каждой виртуальной машины и управлять запуском и остановкой в соответствующем масштабе.

Расписания

В таблице ниже перечислены расписания по умолчанию, создаваемые в вашей учетной записи службы автоматизации.  Можно изменить их или создать собственные пользовательские расписания.  По умолчанию все расписания отключены, за исключением Scheduled_StartVM и Scheduled_StopVM.

Включение всех расписаний не рекомендуется, так как может привести к перекрытию действий. Лучшим решением будет определить, какие оптимизации нужно выполнить, и внести соответствующие изменения. Дополнительные пояснения можно получить, ознакомившись с примерами сценариев в разделе "Обзор".

Имя расписания Частота Описание
Schedule_AutoStop_CreateAlert_Parent Каждые 8 часов Запускает AutoStop_CreateAlert_Parent Runbook каждые 8 часов, что, в свою очередь, останавливает значения на основе виртуальных машин в External_Stop_ResourceGroupNames переменных, и External_ExcludeVMNames . Кроме того, можно указать разделенный запятыми список виртуальных машин с помощью параметраVMList.
Scheduled_StopVM Устанавливается пользователем, ежедневно. Запускает ScheduledStopStart_Parent Runbook с параметром каждый день в указанное время.  Автоматически останавливает все виртуальные машины, удовлетворяющие правилам, определенным с помощью ресурса переменной.  Включает связанное расписание Scheduled-StartVM.
Scheduled_StartVM Устанавливается пользователем, ежедневно. Запускает ScheduledStopStart_Parent Runbook со значением параметра каждый день в указанное время. Автоматически запускает все виртуальные машины, удовлетворяющие правилам, определенным с помощью ресурса переменной  Включает связанное расписание Scheduled-StopVM.
Sequenced-StopVM 01:00 (UTC), каждую пятницу Запускает Sequenced_StopStop_Parent Runbook со значением параметра каждую пятницу в указанное время.  Последовательно (по возрастанию) останавливает все виртуальные машины с тегом SequenceStop, которые указаны в соответствующих переменных. Ознакомьтесь с разделом Модули Runbook, чтобы получить дополнительные сведения о значениях тегов и переменных ресурсов.  Включите связанное расписание Sequenced-StartVM.
Sequenced-StartVM 13:00 (UTC), каждый понедельник Запускает SequencedStopStart_Parent Runbook со значением параметра каждый понедельник в указанное время. Последовательно (по убыванию) запускает все виртуальные машины с тегом SequenceStart, которые указаны в соответствующих переменных. Ознакомьтесь с разделом Модули Runbook, чтобы получить дополнительные сведения о значениях тегов и переменных ресурсов. Включите связанное расписание Sequenced-StopVM.

Использование функции с классическими виртуальными машинами

При использовании функции "Запуск и остановка виртуальных машин в нерабочее время для классических виртуальных машин" служба автоматизации обрабатывает все виртуальные машины последовательно в каждой облачной службе. Виртуальные машины по-прежнему обрабатываются параллельно в разных облачных службах.

При использовании более 20 виртуальных машин на одной облачной службе мы рекомендуем следующее.

  • Создайте несколько расписаний с родительским модулем Runbook ScheduledStartStop_Parent и укажите 20 виртуальных машин в одном расписании.
  • В свойствах расписания используйте параметр VMList, чтобы указать имена виртуальных машин в виде списка с разделителями-запятыми (без пробелов).

В противном случае, если задание службы автоматизации для этой функции выполняется более трех часов, оно временно выгружается или останавливается на пределе справедливого распределения ресурсов.

Подписки Azure CSP поддерживают только модель Azure Resource Manager. Службы, не являющиеся частью Azure Resource Manager, также недоступны в программе. Функция "Запуск и остановка виртуальных машин в нерабочее время" может останавливаться с ошибкой при запуске, так как она содержит командлеты для управления классическими ресурсами. Дополнительные сведения о CSP см. в разделе Комментарии. Если вы используете подписку CSP, после развертывания вам следует изменить значение переменной External_EnableClassicVMs на False.

Примечание

Сведения из данной статьи были недавно обновлены. Теперь вместо термина "Log Analytics" используется термин "журналы Azure Monitor". Данные журнала по-прежнему хранятся в рабочей области Log Analytics, собираются и анализируются той же службой Log Analytics. Целью обновления терминологии является лучшее отражение роли журналов в Azure Monitor. Дополнительные сведения см. в статье Изменения фирменной символики Azure Monitor.

Ознакомиться с функцией

Используйте один из следующих механизмов для доступа к включенной функции:

  • На странице учетной записи службы автоматизации выберите Запуск и остановка виртуальных машин в разделе Связанные ресурсы. На странице "Запуск/завершение виртуальной машины" выберите Управление решением в разделе Управление решениями виртуальной машины для запуска и остановки.

  • Перейдите на рабочую область Log Analytics, которая привязана к учетной записи службы автоматизации. После выбора рабочей области выберите пункт Решения в левой области. На странице решений выберите из списка пункт Start-Stop-VM[workspace] .

После этого отобразится страница Start-Stop-VM[workspace] . В ней можно просмотреть важные сведения, в том числе элемент StartStopVM. Как и в рабочей области Log Analytics, в нем отображаются сведения о количестве заданий runbook, которые были запущены и завершены для решения, а также их графическое представление.

Automation Update Management page

Здесь можно продолжить анализ записей заданий. Для этого следует щелкнуть на значок в виде кольца. На панели мониторинга отображается журнал заданий и предварительно определенные запросы поиска по журналам. Переключитесь на расширенный портал Log Analytics для поиска на основе ваших поисковых запросов.

Обновление функции

Если вы развернули предыдущую версию функции, потребуется сначала удалить ее из учетной записи, а затем развернуть обновленный выпуск. Выполните процедуру удаления компонента, а затем выполните необходимые действия, чтобы включить ее.

Дальнейшие действия

Сведения о включении функции на виртуальных машинах в вашей среде можно получить в разделе Активация функции "Запуск и остановка виртуальных машин в нерабочее время".