Introducción a la característica Start/Stop VMs during off-hours

La característica Start/Stop VMs during off-hours inicia o detiene las máquinas virtuales de Azure habilitadas. Inicia o detiene las máquinas en las programaciones definidas por el usuario, proporciona información mediante los registros de Azure Monitor y envía mensajes de correo electrónico, si se desea, mediante grupos de acciones. La característica se puede habilitar en la mayoría de los escenarios tanto en máquinas virtuales clásicas como de Azure Resource Manager.

Nota

Antes de instalar esta versión (v1), nos gustaría que conozca la siguiente versión, que se encuentra en versión preliminar en este momento. La nueva versión (v2) ofrece la misma funcionalidad que esta, pero está diseñada para aprovechar las ventajas de la tecnología más reciente de Azure. Agrega algunas de las características solicitadas de forma común por los clientes, como la compatibilidad con varias suscripciones desde una única instancia de inicio y detención.

Start/Stop VMs during off-hours (v1) se retirará el 21 de mayo de 2022.

Esta característica usa el cmdlet Start-AzVm para iniciar las máquinas virtuales. Usa Stop-AzVm para detener las máquinas virtuales.

Nota

La característica Start/Stop VMs during off-hours se ha actualizado para admitir las versiones de los módulos de Azure más recientes disponibles. La versión actualizada de esta característica, disponible en Marketplace, no es compatible con los módulos de AzureRM porque hemos migrado de los módulos de AzureRM a los de Az. Aunque los runbooks se hayan actualizado para usar los nuevos cmdlets del módulo Az de Azure, usan el alias de prefijo AzureRM.

La característica proporciona una opción de automatización descentralizada de bajo costo para los usuarios que quieran optimizar sus costos de máquinas virtuales. Puede usar la característica para:

Las siguientes son limitaciones de la característica actual:

  • Administra máquinas virtuales de cualquier región, pero solo se puede utilizar en la misma suscripción que la cuenta de Azure Automation.
  • Está disponible en Azure y Azure Government para cualquier región que admita un área de trabajo de Log Analytics, una cuenta de Azure Automation y alertas. Las regiones de Azure Government no admiten la funcionalidad de correo electrónico en este momento.

Prerrequisitos

  • Los runbooks de la característica Start/Stop VMs during off hours funcionan con una cuenta de ejecución de Azure. La cuenta de ejecución es el método de autenticación preferido, ya que emplea la autenticación mediante certificado, en lugar de una contraseña que puede expirar o cambiar con frecuencia.

  • Un área de trabajo de Log Analytics de Azure Monitor que almacene los registros de trabajo de los runbooks y los resultados de los flujos de trabajo en un área de trabajo para consultarlos y analizarlos. La cuenta de Automation y el área de trabajo de Log Analytics deben estar en la misma suscripción y la misma región admitida. El área de trabajo ya debe existir; no se puede crear una nueva área de trabajo durante la implementación de esta característica.

Se recomienda usar otra cuenta de Automation para trabajar con máquinas virtuales habilitadas para la característica Start/Stop VMs during off-hours. Las versiones del módulo de Azure se actualizan con frecuencia y puede que sus parámetros cambien. La característica no se actualiza al mismo ritmo y es posible que no funcione con versiones más recientes de los cmdlets que usa. Antes de importar los módulos actualizados en las cuentas de Automation de producción, se recomienda importarlos en una cuenta de prueba, para comprobar que no hay problemas de compatibilidad.

Permisos

Para habilitar la característica Start/Stop VMs during off-hours en las máquinas virtuales, debe tener determinados permisos. Los permisos son diferentes según si la característica usa una cuenta de Automation o un área de trabajo de Log Analytics creadas previamente o se crean unas nuevas.

Si es colaborador de la suscripción y administrador global del inquilino de Azure Active Directory, no tiene que configurar permisos. Si no tiene estos derechos o necesita configurar un rol personalizado, asegúrese de que dispone de los permisos que se describen a continuación.

Permisos para la cuenta de Automation y área de trabajo de Log Analytics ya existentes

Para permitir la característica Start/Stop VMs during off-hours en las máquinas virtuales mediante una cuenta Automation y un área de trabajo de Log Analytics existentes, necesita los siguientes permisos en el ámbito del grupo de recursos. Para más información sobre los roles, consulte Roles personalizados de Azure.

Permiso Ámbito
Microsoft.Automation/automationAccounts/read Grupo de recursos
Microsoft.Automation/automationAccounts/variables/write Grupo de recursos
Microsoft.Automation/automationAccounts/schedules/write Grupo de recursos
Microsoft.Automation/automationAccounts/runbooks/write Grupo de recursos
Microsoft.Automation/automationAccounts/connections/write Grupo de recursos
Microsoft.Automation/automationAccounts/certificates/write Grupo de recursos
Microsoft.Automation/automationAccounts/modules/write Grupo de recursos
Microsoft.Automation/automationAccounts/modules/read Grupo de recursos
Microsoft.automation/automationAccounts/jobSchedules/write Grupo de recursos
Microsoft.Automation/automationAccounts/jobs/write Grupo de recursos
Microsoft.Automation/automationAccounts/jobs/read Grupo de recursos
Microsoft.OperationsManagement/solutions/write Grupo de recursos
Microsoft.OperationalInsights/workspaces/* Grupo de recursos
Microsoft.Insights/diagnosticSettings/write Grupo de recursos
Microsoft.Insights/ActionGroups/Write Grupo de recursos
Microsoft.Insights/ActionGroups/read Grupo de recursos
Microsoft.Resources/subscriptions/resourceGroups/read Grupo de recursos
Microsoft.Resources/deployments/* Grupo de recursos

Permisos para una cuenta de Automation y un área de trabajo de Log Analytics nuevas

Puede habilitar la característica Start/Stop VMs during off-hours en las máquinas virtuales mediante una cuenta de Automation y un área de trabajo de Log Analytics nuevas. En este caso, necesita los permisos definidos en la sección anterior y los que se definen en esta. También necesita los siguientes roles:

Permiso Ámbito
Microsoft.Authorization/Operations/read Subscription
Microsoft.Authorization/permissions/read Subscription
Microsoft.Authorization/roleAssignments/read Subscription
Microsoft.Authorization/roleAssignments/write Subscription
Microsoft.Authorization/roleAssignments/delete Subscription
Microsoft.Automation/automationAccounts/connections/read Grupo de recursos
Microsoft.Automation/automationAccounts/certificates/read Grupo de recursos
Microsoft.Automation/automationAccounts/write Grupo de recursos
Microsoft.OperationalInsights/workspaces/write Grupo de recursos

Componentes

La característica Start/Stop VMs during off-hours incluye runbooks, programaciones e integración preconfigurados con los registros de Azure Monitor. Puede usar estos elementos para personalizar el inicio y el apagado de las máquinas virtuales de modo que se adapten a sus necesidades empresariales.

Runbooks

En la tabla siguiente se enumeran los runbooks que la característica implementa en la cuenta de Automation. NO realice cambios en el código del runbook. En su lugar, escriba un runbook que aporte una nueva funcionalidad.

Importante

No ejecute directamente ningún runbook cuyo nombre tenga anexado child.

Todos los runbooks primarios incluyen el parámetro WhatIf. Cuando se establece en True, permite detallar el comportamiento exacto del runbook cuando se ejecuta sin el parámetro y comprueba que el destino sean las máquinas virtuales correctas. Los runbooks solo realizan sus acciones definidas cuando el parámetro WhatIf está establecido en False.

Runbook Parámetros Descripción
AutoStop_CreateAlert_Child VMObject
AlertAction
WebHookURI
Se llama desde el runbook primario. Este runbook crea alertas según el recurso para el escenario de AutoStop.
AutoStop_CreateAlert_Parent VMList
WhatIf: Verdadero o falso
Crea o actualiza las reglas de alerta de Azure en las máquinas virtuales de los grupos de recursos o la suscripción de destino.
VMList es una lista separada por comas de VM (sin espacios en blanco), como, por ejemplo, vm1,vm2,vm3.
WhatIf habilita la validación de la lógica de runbook sin ejecutarse.
AutoStop_Disable None Deshabilita la programación predeterminada y las alertas de Auto-Stop.
AutoStop_VM_Child WebHookData Se llama desde el runbook primario. Las reglas de alertas llaman a este runbook para detener una máquina virtual clásica.
AutoStop_VM_Child_ARM WebHookData Se llama desde el runbook primario. Las reglas de alertas llaman a este runbook para detener una máquina virtual.
ScheduledStartStop_Base_Classic CloudServiceName
Acción: Iniciar o detener
VMList
Realiza la acción de inicio o detención en el grupo de máquinas virtuales clásicas de Cloud Services.
ScheduledStartStop_Child VMName
Acción: Iniciar o detener
ResourceGroupName
Se llama desde el runbook primario. Ejecuta una acción de inicio o detención para la detención programada.
ScheduledStartStop_Child_Classic VMName
Acción: Iniciar o detener
ResourceGroupName
Se llama desde el runbook primario. Ejecuta una acción de inicio o detención para la detención programada de máquinas virtuales clásicas.
ScheduledStartStop_Parent Acción: Iniciar o detener
VMList
WhatIf: Verdadero o falso
Inicia o detiene todas las máquinas virtuales de la suscripción. Edite las variables External_Start_ResourceGroupNames y External_Stop_ResourceGroupNames para que solo se ejecuten en estos grupos de recursos de destino. También puede excluir máquinas virtuales específicas si actualiza la variable External_ExcludeVMNames.
SequencedStartStop_Parent Acción: Iniciar o detener
WhatIf: Verdadero o falso
VMList
Cree etiquetas denominadas sequencestart y sequencestop en todas las máquinas virtuales en las que quiera secuenciar la actividad de inicio y detención. Estos nombres de etiqueta distinguen entre mayúsculas y minúsculas. El valor de la etiqueta debe ser una lista de enteros positivos, como 1,2,3, que se corresponda con el orden deseado para el inicio o la detención.
Nota: Las máquinas virtuales deben estar dentro de grupos de recursos definidos en las variables External_Start_ResourceGroupNames, External_Stop_ResourceGroupNames y External_ExcludeVMNames. Para que las acciones surtan efecto, deben tener las etiquetas correspondientes.

variables

En la tabla siguiente se enumeran las variables creadas en su cuenta de Automation. Modifique solo las variables cuyo prefijo sea External. La modificación de variables con el prefijo Internal produce efectos no deseados.

Nota

Las limitaciones en el nombre de la máquina virtual y el grupo de recursos son en gran medida el resultado del tamaño de la variable. Consulte Recursos de variables en Azure Automation.

Variable Descripción
External_AutoStop_Condition El operador condicional necesario para configurar la condición antes de desencadenar una alerta. Los valores aceptables son GreaterThan, GreaterThanOrEqual, LessThan y LessThanOrEqual.
External_AutoStop_Description Alerta para detener la máquina virtual si el porcentaje de CPU supera el umbral.
External_AutoStop_Frequency Frecuencia de evaluación de la regla. Este parámetro acepta la entrada en formato timespan. Los valores posibles son de 5 minutos a 6 horas.
External_AutoStop_MetricName El nombre de la métrica de rendimiento para el que se configura la regla de alertas de Azure.
External_AutoStop_Severity Gravedad de la alerta de métrica, que puede oscilar entre 0 y 4.
External_AutoStop_Threshold El umbral de la regla de alerta de Azure especificada en la variable External_AutoStop_MetricName. Los valores de porcentaje oscilan entre 1 y 100.
External_AutoStop_TimeAggregationOperator El operador de agregación de tiempo aplicado al tamaño de la ventana seleccionada para evaluar la condición. Los valores aceptables son Average, Minimum, Maximum, Total y Last.
External_AutoStop_TimeWindow El tamaño de la ventana en la que Azure analiza la métrica seleccionada para desencadenar una alerta. Este parámetro acepta la entrada en formato timespan. Los valores posibles son de 5 minutos a 6 horas.
External_EnableClassicVMs Valor que especifica si la característica tiene como destino las máquinas virtuales clásicas. El valor predeterminado es True. Establezca esta variable en False para las suscripciones del Proveedor de soluciones en la nube (CSP) de Azure.
External_ExcludeVMNames Lista separada por comas de los nombres de máquina virtual que se van a excluir, limitado a 140. Si agrega más de 140 máquinas virtuales a la lista, las especificadas para exclusión pueden iniciarse o detenerse accidentalmente.
External_Start_ResourceGroupNames Lista separada por comas de uno o varios grupos de recursos destinados a las acciones de inicio.
External_Stop_ResourceGroupNames Lista separada por comas de uno o varios grupos de recursos destinados a las acciones de detención.
External_WaitTimeForVMRetrySeconds Tiempo de espera en segundos para que las acciones se realicen en las máquinas virtuales del runbook SequencedStartStop_Parent. Esta variable permite que el runbook espere a las operaciones secundarias durante el número de segundos especificado antes de continuar con la siguiente acción. El tiempo de espera máximo es de 10 800 o tres horas. El valor predeterminado es 2 100 segundos.
Internal_AutomationAccountName Especifica el nombre de la cuenta de Automation.
Internal_AutoSnooze_ARM_WebhookURI Especifica el URI de Webhook llamado para el escenario de AutoStop de las máquinas virtuales.
Internal_AutoSnooze_WebhookUri Especifica el URI de Webhook llamado para el escenario de AutoStop de las máquinas virtuales clásicas.
Internal_AzureSubscriptionId El identificador de la suscripción de Azure.
Internal_ResourceGroupName Especifica el nombre del grupo de recursos de la cuenta de Automation.

Nota

En la variable External_WaitTimeForVMRetryInSeconds, el valor predeterminado se ha actualizado de 600 a 2100.

En todos los escenarios, las variables External_Start_ResourceGroupNames, External_Stop_ResourceGroupNames y External_ExcludeVMNames son necesarias para las máquinas virtuales de destino, excepto para las listas de máquinas virtuales separadas por comas de los runbooks AutoStop_CreateAlert_Parent, SequencedStartStop_Parent y ScheduledStartStop_Parent. Es decir, para que se realicen las acciones de inicio o detención, las máquinas virtuales deben pertenecer a los grupos de recursos de destino. La lógica funciona de forma similar a Azure Policy, en el sentido de que el destino puede ser la suscripción o el grupo de recursos, y las acciones las pueden heredar las máquinas virtuales recién creadas. Este enfoque evita tener que mantener una programación independiente para cada máquina virtual y administrar los inicios y detenciones en escala.

Programaciones

En la tabla siguiente se enumera cada una de las programaciones predeterminadas que se crean en su cuenta de Automation.  Puede modificarlas o crear sus propias programaciones personalizadas.  De forma predeterminada, todas las programaciones están deshabilitadas, excepto las de Scheduled_StartVM y Scheduled_StopVM.

No se deben habilitar todas las programaciones, ya que ello podría crear acciones de programación que se superpongan. Lo mejor es determinar las optimizaciones que se desean y modificarlas en consecuencia. Vea los escenarios de ejemplo en la sección de información general para obtener una explicación.

Nombre de programación Frecuencia Descripción
Schedule_AutoStop_CreateAlert_Parent Cada ocho horas Ejecuta el runbook AutoStop_CreateAlert_Parent cada 8 horas, que a su vez detiene los valores basados en la máquina virtual en las variables External_Start_ResourceGroupNames, External_Stop_ResourceGroupNames y External_ExcludeVMNames. Como alternativa, puede especificar una lista separada por comas de las máquinas virtuales mediante el parámetro VMList.
Scheduled_StopVM Definido por el usuario, diariamente Ejecuta el runbook ScheduledStopStart_Parent con un parámetro de detención Stopcada día a la hora especificada.  Detiene automáticamente todas las máquinas virtuales que cumplen las reglas definidas por las variables de los recursos.  Habilite la programación relacionada, Scheduled-StartVM.
Scheduled_StartVM Definido por el usuario, diariamente Ejecuta el runbook ScheduledStopStart_ParentStart con un valor de parámetro de inicio Start cada día a la hora especificada. Inicia automáticamente todas las máquinas virtuales que cumplan las reglas definidas por los recursos de variables.  Habilite la programación relacionada, Scheduled-StopVM.
Sequenced-StopVM 1:00 AM (UTC), todos los viernes Ejecuta el runbook Sequenced_StopStop_Parent con el valor del parámetro Stop establecido en todos los viernes a la hora especificada.  Detiene secuencialmente (de forma ascendente) todas las máquinas virtuales que tengan la etiqueta SequenceStop definida por las variables adecuadas. Para más información sobre los valores de etiqueta y las variables de recurso, consulte Runbooks.  Habilite la programación relacionada, Sequenced-StartVM.
Sequenced-StartVM 1:00 PM (hora UTC), todos los lunes Ejecuta el runbook SequencedStopStart_Parent con un valor de parámetro de detención Start cada lunes a la hora determinada. Inicia secuencialmente (de forma descendente) todas las máquinas virtuales que tengan la etiqueta SequenceStart definida por las variables adecuadas. Para más información sobre los valores de etiqueta y los recursos de variables, consulte Runbooks. Habilite la programación relacionada, Sequenced-StopVM.

Uso de la característica con máquinas virtuales clásicas

Si usa la característica Start/Stop VMs during off-hours con máquinas virtuales clásicas, Automation procesa todas las máquinas virtuales en orden por cada servicio en la nube. Las máquinas virtuales se siguen procesando en paralelo entre diferentes servicios en la nube.

Si tiene más de 20 máquinas virtuales por cada servicio en la nube, estas son algunas recomendaciones:

  • Cree varias programaciones con el runbook primario ScheduledStartStop_Parent y especifique 20 máquinas virtuales por programación.
  • En las propiedades de la programación, use el parámetro VMList para especificar los nombres de las VM como una lista separada por comas (sin espacios en blanco).

De lo contrario, si el trabajo de Automation con esta característica se ejecuta durante más de tres horas, se descarga temporalmente o se detiene debido al límite de distribución equilibrada.

Las suscripciones de CSP de Azure solo admiten el modelo de Azure Resource Manager. Los servicios que no son de Azure Resource Manager no están disponibles en el programa. Cuando se ejecuta la característica Start/Stop VMs during off-hours, es posible que reciba errores, ya que contiene cmdlets para administrar los recursos clásicos. Para más información sobre CSP, consulte Servicios disponibles en las suscripciones de CSP. Si usa una suscripción de CSP, debe establecer la variable External_EnableClassicVMs en False después de la implementación.

Nota

Este artículo se ha actualizado recientemente para usar el término registros de Azure Monitor en lugar de Log Analytics. Los datos de registro siguen almacenándose en un área de trabajo de Log Analytics y siguen recopilándose y analizándose por el mismo servicio de Log Analytics. Estamos actualizando la terminología para reflejar mejor el rol de los registros de Azure Monitor. Consulte Azure Monitor terminology changes (Cambios en la terminología de Azure Monitor) para obtener más información.

Visualización de la característica

Use uno de los siguientes mecanismos para acceder a la característica habilitada:

  • En la cuenta de Automation, seleccione Start/Stop VM en Recursos relacionados. En la página Start/Stop VM, seleccione Manage the solution (Administrar la solución), en la sección Manage Start/Stop VM Solutions (Administrar soluciones Start/Stop VM).

  • Vaya al área de trabajo de Log Analytics vinculada a su cuenta de Automation. Después de seleccionar el área de trabajo, elija Soluciones en el panel izquierdo. En la página Soluciones, seleccione Start-Stop-VM[workspace] en la lista.

Al seleccionar la característica se muestra la página Start-Stop-VM[workspace] . En ella puede examinar detalles importantes, como el icono StartStopVM. Al igual que en el área de trabajo de Log Analytics, este icono muestra un número y una representación gráfica de los trabajos de runbook de la característica que se han iniciado y han terminado correctamente.

Página Update Management de Automation

Puede realizar más análisis de los registros de trabajos. Para ello, solo debe hacer clic en el icono del anillo. El panel muestra el historial de trabajos y las consultas de búsqueda de registros predefinidas. Cambie al portal avanzado de Log Analytics para realizar búsquedas basadas en sus consultas de búsqueda.

Actualización de la característica

Si ha implementado una versión anterior de la característica Start/Stop VMs during off-hours, debe eliminarla de la cuenta antes de implementar una versión actualizada. Siga los pasos para quitar la característica y luego siga los pasos para habilitarla.

Pasos siguientes

Para habilitar la característica en las máquinas virtuales de su entorno, consulte Habilitación de Start/Stop VMs during off-hours.