Mi alarma de Amazon CloudWatch está configurada para invocar mi política de Auto Scaling de Amazon Elastic Compute Cloud (Amazon EC2), pero no funciona.
Descripción corta
Cuando una alarma de CloudWatch pasa a un nuevo estado de alarma, la alarma invoca todas las acciones configuradas para ese estado de alarma. Amazon EC2 Auto Scaling utiliza el periodo de tiempo configurado en la alarma para determinar si el estado de la alarma debe cambiar. Sin embargo, una alarma invoca una acción de escalamiento automático una vez por minuto cuando la alarma permanece en un estado nuevo, independientemente del periodo de tiempo configurado.
Los motivos más comunes por los que un cambio de estado de alarma de CloudWatch no invoca una política de Amazon EC2 Auto Scaling son los siguientes:
- La acción Auto Scaling no está configurada para la alarma de CloudWatch.
- La política de grupo de Amazon EC2 Auto Scaling no está configurada. Esto impide la evaluación del grupo de escalamiento automático.
- El grupo de escalamiento automático tiene políticas de escalamiento sencillo o políticas de escalamiento por pasos que entran en conflicto. Esto evita que se inicien algunas políticas.
- El grupo de escalamiento automático tiene un enlace de ciclo de vida incompleto. Esto evita que se apliquen todas las políticas de escalamiento sencillo. Una instancia pendiente también provoca retrasos en las políticas de escalamiento por pasos y de seguimiento de destino. Esto se debe a que Auto Scaling no cuenta la instancia para la capacidad del grupo hasta que finalice el enlace de ciclo de vida y se complete el tiempo de calentamiento (en el caso de escalamiento horizontal). La instancia se tiene en cuenta para la capacidad del grupo (para el desescalamiento horizontal) para evitar un escalamiento excesivo.
- El enlace del ciclo de vida finaliza cuando se agota el tiempo de espera o cuando se llama a la operación CompleteLifecycleAction o a la interfaz de la línea de comandos de AWS (AWS CLI).
Resolución
Antes de empezar, comprueba que la alarma de CloudWatch esté en estado ALARM. Si la configuración de una alarma no coincide con el umbral de la métrica que estás supervisando, es posible que la alarma no pase al estado ALARM. Si una alarma no cambia de estado, no invoca las políticas de Auto Scaling. Para obtener más información sobre cómo se evalúan las alarmas de CloudWatch, consulta Evaluating an alarm (Evaluación de una alarma).
Comprueba que tu alarma de CloudWatch entra en el estado ALARM cuando se espera comprobando el valor límite de la alarma. Aumenta o disminuye el límite para que coincida con el valor esperado. Además, revisa el periodo y los periodos de evaluación de la alarma. Puede que tengas que editar el periodo y el periodo de evaluación de la alarma para invocar tu política de Auto Scaling según lo previsto.
Importante: Al crear o editar alarmas, ten en cuenta lo siguiente:
- Comprueba que no has suspendido los procesos de escalamiento de tu grupo de escalamiento automático. Si se suspenden los procesos de escalamiento, reanuda los procesos.
- Nunca crees, edites ni elimines las alarmas asociadas a las políticas de escalamiento del seguimiento de objetivos. Cambiar estas alarmas creadas automáticamente puede provocar efectos no deseados. El umbral de estas alarmas se determina automáticamente en función del valor objetivo establecido en la política de escalamiento.
Comprobar si las acciones de Auto Scaling están permitidas para la alarma de CloudWatch
Para que una alarma de CloudWatch invoque una política de Auto Scaling, activa el parámetro ActionsEnabled en la configuración de la alarma. Comprueba que el parámetro ActionsEnabled esté establecido en true en la configuración de la alarma.
Nota: Si creas o actualizas la alarma mediante la consola de CloudWatch, el parámetro ActionsEnabled se establece en true de forma predeterminada.
Para comprobar y permitir las acciones de alarma mediante la AWS CLI, sigue estos pasos:
-
Comprueba la configuración con el comando describe-alarms.
aws cloudwatch describe-alarms --alarm-names "myalarm" --query 'MetricAlarms[].ActionsEnabled'
Nota: Sustituye myalarm por el ID de tu alarma.
-
Revisa el resultado. Si el parámetro ActionsEnabled no está establecido en true, activa las acciones de alarma con el comando enable-alarm-actions.
aws cloudwatch enable-alarm-actions --alarm-names myalarm
Nota: Si se muestran errores al ejecutar comandos de la AWS CLI, consulta Solución de problemas de AWS CLI. Además, asegúrate de utilizar la versión más reciente de la AWS CLI.
Para comprobar y activar las acciones de alarma con la API de CloudWatch, sigue estos pasos:
- Llama a la operación DescribeAlarms para comprobar la configuración actual.
- Si no se permiten acciones para la alarma, llama a la operación EnableAlarmActions para activar las acciones.
Comprobación de las políticas de escalamiento sencillo y escalamiento por pasos del grupo de escalamiento automático
Para comprobar las políticas de escalamiento de tu grupo en la consola de Amazon EC2, completa los pasos siguientes:
- Abre la consola de Amazon EC2.
- En el panel de navegación, en Auto Scaling, selecciona Grupos de escalamiento automático.
- En el panel de contenido, selecciona tu grupo de escalamiento automático.
- Elige la pestaña Escalamiento automático y, a continuación, toma nota del tipo de política.
Para comprobar las políticas de escalamiento con la AWS CLI, ejecuta el comando describe-policies con el parámetro --policy-types. Para comprobar las políticas de escalamiento con una API de AWS, llama a la operación DescribePolicies con el parámetro PolicyTypes. El resultado muestra cada tipo de política.
Si tienes una política de escalamiento sencillo en vigor, no se invocará ninguna otra política de escalamiento sencillo hasta que se cumplan las siguientes condiciones:
- La política de escalamiento sencillo en vigor está completa.
- El periodo de recuperación de la política de Auto Scaling ha transcurrido. Una política de escalamiento sencillo respeta el periodo de recuperación predeterminado o especificado de la política de Auto Scaling.
Nota: La ejecución de una política de escalamiento sencillo no bloquea por completo las políticas de escalamiento por pasos o de seguimiento de destino. Asegúrate de que no se apliquen políticas contradictorias al mismo tiempo.
Comprobación de si hay enlaces de ciclo de vida de Auto Scaling en tu política de Auto Scaling
Las actividades de escalamiento de una política de escalamiento sencillo se detienen cuando se ejecuta un enlace del ciclo de vida de Auto Scaling. Sin embargo, se sigue ejecutando una política de escalamiento por pasos si se está ejecutando un enlace de ciclo de vida.
Comprueba que todos los enlaces del ciclo de vida finalicen con un resultado CONTINUE o ABANDON una vez finalizado el periodo de tiempo de espera global o el periodo de tiempo de espera de latidos.
Para comprobar las acciones de enlace del ciclo de vida en la consola de Amazon EC2, sigue estos pasos:
- Abre la consola de Amazon EC2.
- En el panel de navegación, en Auto Scaling, selecciona Grupos de escalamiento automático.
- En el panel de contenido, selecciona tu grupo de escalamiento automático.
- Selecciona la pestaña Actividad y, a continuación, desplázate hasta la sección Historial de actividades.
- Revisa la actividad para ver si hay alguna acción de enlace de ciclo de vida en curso.
Para ver los pasos para completar un enlace de ciclo de vida, consulta Cómo completar una acción del ciclo de vida en un grupo de escalamiento automático.
Información relacionada
¿Cómo puedo solucionar los problemas de escalamiento con mi grupo de Amazon EC2 Auto Scaling?
Solución de problemas de Amazon EC2 Auto Scaling