Informes y monitorización de estado mejorados - AWS Elastic Beanstalk

Informes y monitorización de estado mejorados

Los informes de estado mejorados son una característica que puede habilitar en su entorno para permitir que AWS Elastic Beanstalk recopile información adicional acerca de los recursos de su entorno. Elastic Beanstalk analiza la información recopilada para proporcionar una imagen más completa del estado general del entorno y ayuda a identificar los problemas que pueden causar que su aplicación deje de estar disponible.

Además de cambiar el funcionamiento de la codificación por colores del estado, los informes de estado mejorados añaden un descriptor de estado que proporciona un indicador de la gravedad de los problemas detectados cuando un entorno tiene el color amarillo o rojo. Cuando haya más información disponible sobre el estado actual, puede elegir el botón Causes para ver información detallada sobre el estado en la página Health.


      La página de información general del entorno Elastic Beanstalk de la consola de Elastic Beanstalk muestra un estado de estado mejorado

Para proporcionar información detallada sobre el estado de las instancias de Amazon EC2 que se ejecutan en su entorno, Elastic Beanstalk incluye un agente de estado en la Imagen de Amazon Machine (AMI) para cada versión de plataforma que admite la funcionalidad de informes de estado avanzados. El agente de estado monitoriza los registros del servidor web y las métricas del sistema y envía esta información al servicio de Elastic Beanstalk. Elastic Beanstalk analiza estas métricas y los datos de Elastic Load Balancing y Amazon EC2 Auto Scaling para proporcionar una visión general del estado del entorno.

Además de recopilar y presentar información sobre los recursos de su entorno, Elastic Beanstalk monitoriza los recursos de su entorno en relación con varias condiciones de error y proporciona notificaciones que le ayudan a evitar los errores y resolver los problemas de configuración. Entre los factores que influyen en el estado del entorno se incluyen los resultados de cada solicitud servida por la aplicación, las métricas del sistema operativo de las instancias y el estado de la implementación más reciente.

Puede ver el estado en tiempo real mediante la página de información del entorno de la consola de Elastic Beanstalk o el comando eb health de la interfaz de línea de comandos de Elastic Beanstalk (CLI de EB). Para registrar y realizar un seguimiento del estado del entorno y de las instancias a lo largo del tiempo, puede configurar el entorno para publicar la información recopilada por Elastic Beanstalk para los informes de estado avanzados en Amazon CloudWatch como métricas personalizadas. CloudWatch cobra por las métricas personalizadas que se aplican a todas las métricas distintas de EnvironmentHealth, que es gratuita.

Los informes de estado mejorados requieren una versión de la plataforma versión 2 o posterior. Para monitorizar los recursos y publicar las métricas, su entorno debe tener un perfil de instancia y un rol de servicio. La plataforma de Multicontainer Docker no incluye un servidor web de forma predeterminada, pero puede utilizarse con informes de estado avanzados si configura el servidor web para que proporcione los registros en el formato adecuado.

Notas sobre la plataforma de Windows
  • Esta característica no está disponible en las versiones de la plataforma de Windows Server anteriores a la versión 2 (v2).

  • Al habilitar los informes de estado avanzados en un entorno de Windows Server, no cambie la configuración de registros de IIS. Para que la monitorización de estado avanzados funcione correctamente, el registro IIS debe estar configurado con el formato W3C y los destinos de evento de registro ETW event only (Solo evento ETW) o Both log file and ETW event (Tanto archivo de registro como evento ETW).

    Además, no deshabilitar o detener el servicio de Windows agente de servicio de Elastic Beanstalk en cualquiera de las instancias de su entorno. Para recopilar y notificar información de estado avanzados en una instancia, este servicio debe estar habilitado y en ejecución.

El estado mejorado requiere que el entorno tenga un perfil de instancia. El perfil de instancia debe tener roles que proporcionen permisos para que las instancias de entorno puedan recopilar información sobre el estado mejorado y enviar notificaciones. La primera vez que cree un entorno con una versión de la plataforma v2 en la consola de Elastic Beanstalk, Elastic Beanstalk le pedirá que cree los roles necesarios y habilite los informes de estado mejorados de forma predeterminada. Siga leyendo para obtener más información acerca de cómo funcionan los informes de estado mejorados o consulte Activación de los informes de estado avanzados de Elastic Beanstalk para empezar a utilizarlos inmediatamente.

Las plataformas Amazon Linux 2 necesitan perfiles de instancia, por lo que pueden admitir el estado mejorado sin reservas. Cuando se crea un entorno que utiliza una plataforma Amazon Linux 2, Elastic Beanstalk siempre habilita el estado mejorado. Esto es así independientemente del modo en que cree el entorno: con la consola de Elastic Beanstalk, la CLI de EB, la CLI de AWS o la API.

El agente de estado de Elastic Beanstalk

El agente de estado de Elastic Beanstalk es un proceso daemon (o un servicio, en entornos Windows) que se ejecuta en cada instancia de Amazon EC2 de su entorno para monitorear las métricas de estado del sistema operativo y la aplicación y registrar los problemas en Elastic Beanstalk. El agente de estado se incluye en todas las versiones de la plataforma Linux a partir de la versión 2.0 de cada plataforma.

El agente de estado registra métricas similares a las que Amazon EC2 Auto Scaling y Elastic Load Balancing publican en CloudWatch como parte de los informes de estado básicos, incluida la carga de CPU, códigos HTTP y latencia. El agente de estado, sin embargo, registra las métricas directamente en Elastic Beanstalk, con mayor detalle y más a menudo que los informes de estado básicos.

Para los informes de estado básicos, estas métricas se publican cada cinco minutos y se pueden monitorear con gráficos en la consola de administración del entorno. Gracias al estado mejorado, el agente de estado de Elastic Beanstalk notifica las métricas a Elastic Beanstalk cada 10 segundos. Elastic Beanstalk utiliza las métricas proporcionadas por el agente de estado para determinar el estado de cada instancia del entorno y, en combinación con otros factores, determinar el estado general del entorno.

El estado general del entorno se puede consultar en tiempo real en la página de información del entorno de la consola de Elastic Beanstalk, y Elastic Beanstalk lo publica en CloudWatch cada 60 segundos. Puede ver métricas detalladas registradas por el agente de estado en tiempo real con el comando eb health de la CLI de EB.

Abonando una cantidad adicional, puede publicar las métricas de nivel de instancia y entorno en CloudWatch cada 60 segundos. Las métricas publicadas en CloudWatch se pueden utilizar posteriormente para crear gráficos de monitorización en la consola de administración del entorno.

Los informes de estado mejorados solo se cobran si elige publicar métricas de estado mejoradas en CloudWatch. Cuando se utilizan los informes de estado mejorados, puede publicar igualmente las métricas de estado básicas de forma gratuita, aunque no decida publicar métricas de estado mejoradas.

Consulte Métricas de la instancia para obtener más información sobre las métricas registradas por el agente de estado. Para obtener más información sobre la publicación de métricas de estado mejoradas en CloudWatch, consulte Publicación de métricas personalizadas de un entorno en Amazon CloudWatch.

Factores que determinan el estado de las instancias y del entorno

Además de las comprobaciones del sistema de informes de estado básicos, incluida Comprobaciones de estado de la Elastic Load Balancing y la monitorización de recursos, los informes de estado avanzados de Elastic Beanstalk recopilan datos adicionales sobre el estado de las instancias del entorno. Esto incluye las métricas del sistema operativo, los registros del servidor y el estado de las operaciones del entorno en curso, como las implementaciones y las actualizaciones. El servicio de informes de estado de Elastic Beanstalk combina la información de todos los orígenes disponibles y la analiza para determinar el estado general del entorno.

Operaciones y comandos

Cuando realiza una operación en su entorno, como implementar una nueva versión de una aplicación, Elastic Beanstalk realiza varios cambios que afectan al estado del entorno.

Por ejemplo, cuando implementa una nueva versión de una aplicación en un entorno que ejecuta varias instancias, es posible que vea mensajes similares a los siguientes cuando monitorice el estado del entorno con la CLI de EB.

id status cause Overall Info Command is executing on 3 out of 5 instances i-bb65c145 Pending 91 % of CPU is in use. 24 % in I/O wait Performing application deployment (running for 31 seconds) i-ba65c144 Pending Performing initialization (running for 12 seconds) i-f6a2d525 Ok Application deployment completed 23 seconds ago and took 26 seconds i-e8a2d53b Pending 94 % of CPU is in use. 52 % in I/O wait Performing application deployment (running for 33 seconds) i-e81cca40 Ok

En este ejemplo, el estado general del entorno es Ok y la causa de este estado es que el comando está ejecutando 3 de 5 instancias. Tres de las instancias del entorno tienen el estado Pending, lo que indica que una operación está en curso.

Cuando se completa una operación, Elastic Beanstalk registra información adicional sobre la operación. En el ejemplo, Elastic Beanstalk muestra la siguiente información sobre una instancia que ya se ha actualizado con la nueva versión de la aplicación:

i-f6a2d525 Ok Application deployment completed 23 seconds ago and took 26 seconds

La información de estado de la instancia incluye también detalles sobre la implementación más reciente en cada instancia del entorno. Cada instancia registra un ID y un estado de implementación. El ID de implementación es un entero que aumenta en uno cada vez que implementa una nueva versión de la aplicación o cambia las opciones de configuración de una instancia como las variables de entorno. Puede utilizar la información de implementación para identificar las instancias que ejecutan la versión incorrecta de la aplicación después de una implementación continua que ha producido un error.

En la columna de causa, Elastic Beanstalk incluye mensajes informativos sobre las operaciones realizadas correctamente y otros estados correctos de varias comprobaciones de estado, pero esta información no se conserva de forma indefinida. Las causas de los estados del entorno incorrectos se mantienen hasta que el entorno vuelve a tener un estado correcto.

Tiempo de espera del comando

Elastic Beanstalk aplica un tiempo de espera del comando desde el momento en que comienza una operación para permitir la transición de una instancia a un estado correcto. Este tiempo de espera se establece en la configuración de la actualización e implementación del entorno (en el espacio de nombres aws: elasticbeanstalk:) y su valor predeterminado es de 10 minutos.

Durante las actualizaciones continuas, Elastic Beanstalk aplica un tiempo de espera distinto a cada lote de la operación. Este tiempo de espera se establece como parte de la configuración de las actualizaciones continuas del entorno (en el espacio de nombres aws: autoscaling: updatepolicy: rollingupdate). Si todas las instancias del lote están en buen estado cuando se agota el tiempo de espera del comando, la operación continúa con el siguiente lote. De lo contrario, la operación produce un error.

nota

Si la aplicación no supera las comprobaciones de estado con el estado OK pero está estable en otro nivel, puede definir la opción HealthCheckSuccessThreshold en el espacio de nombres aws:elasticbeanstalk:command namespace para cambiar el nivel en el que Elastic Beanstalk considera que una instancia está en buen estado.

Para que un entorno de servidor web se considere que está en buen estado, cada instancia del entorno o lote debe superar 12 comprobaciones de estado consecutivas en el transcurso de dos minutos. Para el entorno de una capa de trabajo, cada instancia debe superar 18 comprobaciones de estado. Antes de que se agote el tiempo de espera del comando, Elastic Beanstalk no rebaja el estado del entorno cuando no se superan las comprobaciones de estado. Si las instancias del entorno estén en buen estado durante el tiempo de espera del comando, la operación se realizará correctamente.

Solicitudes HTTP

Cuando no hay ninguna operación en curso en un entorno, la fuente principal de información sobre el estado de las instancias y del entorno son los logs del servidor web de cada instancia. Para determinar el estado de una instancia y el estado general del entorno, Elastic Beanstalk considera el número de solicitudes, el resultado de cada solicitud y la velocidad a la que se resolvió cada solicitud.

En las plataformas basadas en Linux, Elastic Beanstalk lee y analiza los logs del servidor web para obtener información sobre las solicitudes HTTP. En la plataforma Windows Server, Elastic Beanstalk recibe esta información directamente del servidor web de IIS.

Puede que su entorno no tenga un servidor web activo. Por ejemplo, la plataforma Docker Multicontainer no incluye un servidor web. Otras plataformas incluyen un servidor web y su aplicación podría deshabilitarlo. En estos casos, el entorno requiere configuración adicional para proporcionar al agente de estado de Elastic Beanstalk los registros en el formato que se necesita para transmitir la información de estado al servicio Elastic Beanstalk. Consulte Formato de los registros de estado avanzados para obtener más información.

Métricas del sistema operativo

Elastic Beanstalk monitoriza las métricas del sistema operativo registradas por el agente de estado para identificar las instancias que se quedan sin recursos del sistema de forma sistemática.

Consulte Métricas de la instancia para obtener más información sobre las métricas registradas por el agente de estado.

Personalización de reglas de comprobación de estado

Los informes de estado avanzados de Elastic Beanstalk se basan en un conjunto de reglas para determinar el estado de su entorno. Algunas de estas reglas podrían no ser adecuadas para su aplicación específica. Un caso común es una aplicación que devuelve errores frecuentes HTTP 4xx por diseño. Elastic Beanstalk, que utiliza uno de sus reglas predeterminadas, llega a la conclusión de que algo va mal, y cambia su estado de entorno de OK a Warning, Degraded o Severe, en función del porcentaje de errores. Para gestionar este caso correctamente, Elastic Beanstalk le permite configurar esta regla y hacer caso omiso de los errores HTTP 4xx de la aplicación. Para obtener más información, consulte Configuración de las reglas de informes de estado avanzados de un entorno.

Roles de estado mejorados

Los informes de estado mejorados requieren dos roles: un rol de servicio para Elastic Beanstalk y un perfil de instancia para el entorno. El rol de servicio permite a Elastic Beanstalk interactuar con otros servicios de AWS en su nombre para recopilar información sobre los recursos de su entorno. El perfil de instancia permite que las instancias del entorno escriban registros en Amazon S3 y comuniquen información de estado mejorada al servicio de Elastic Beanstalk.

Cuando se crea un entorno de Elastic Beanstalk mediante la consola de Elastic Beanstalk o la CLI de EB, Elastic Beanstalk crea un rol de servicio predeterminado y se asocian las políticas administradas necesarias a un perfil de instancia predeterminado para el entorno.

Si utiliza la API, el SDK o la CLI de AWS para crear entornos, debe crear estos roles con antelación y especificarlos durante la creación del entorno para usar los informes de estado mejorados. Para obtener instrucciones sobre cómo crear los roles adecuados para sus entornos, consulte Roles de servicio, perfiles de instancia y políticas de usuario.

Se recomienda utilizar políticas administradas para el perfil de instancia y el rol de servicio. Las políticas administradas son políticas de AWS Identity and Access Management (IAM) directivas que mantiene Elastic Beanstalk. El uso de políticas administradas garantiza que el entorno tenga todos los permisos necesarios para funcionar correctamente.

Para el perfil de instancia, puede utilizar la política administrada AWSElasticBeanstalkWebTier o AWSElasticBeanstalkWorkerTier, para un entorno de nivel de servidor web o de nivel de trabajo respectivamente. Para obtener más información acerca de estas dos políticas de perfil de instancia administrada, consulte Administración de perfiles de instancias (Elastic Beanstalk).

Autorización de estado mejorada

Las políticas administradas por el perfil de instancia de Elastic Beanstalk contienen permisos para la acción elasticbeanstalk:PutInstanceStatistics. Esta acción no forma parte de la API de Elastic Beanstalk. Forma parte de una API diferente que las instancias de entorno utilizan internamente para comunicar información de estado mejorada al servicio Elastic Beanstalk. No se llama directamente a esta API.

De forma predeterminada, la autorización para la acción elasticbeanstalk:PutInstanceStatistics no está habilitada. Por lo tanto, no es necesario permitirlo para los recursos de la aplicación y entorno en su perfil de instancia, como hace la política administrada. Para aumentar la seguridad de su entorno y evitar la suplantación de datos de estado en su nombre, le recomendamos que establezca la opción EnhancedHealthAuthEnabled en el espacio de nombres aws:elasticbeanstalk:healthreporting:system en true. Puede configurar esta opción utilizando una configuración de opción en un archivo de configuración.

Si habilita la autorización para elasticbeanstalk:PutInstanceStatistics mediante la opción EnhancedHealthAuthEnabled y usa políticas administradas para su perfil de instancia, no tiene que hacer nadas más: nuestras políticas administradas cubren la autorización necesaria. Si utiliza un perfil de instancia personalizado en lugar de una política administrada, el entorno podría mostrar el estado Sin datos. Esto ocurre porque las instancias no están autorizadas para la acción que comunica datos de estado mejorados al servicio. Para autorizar la acción, incluya la siguiente instrucción en su perfil de instancia.

{ "Sid": "ElasticBeanstalkHealthAccess", "Action": [ "elasticbeanstalk:PutInstanceStatistics" ], "Effect": "Allow", "Resource": [ "arn:aws:elasticbeanstalk:*:*:application/*", "arn:aws:elasticbeanstalk:*:*:environment/*" ] }

Eventos de estado mejorados

El sistema de informes de estado mejorados genera eventos cuando un entorno cambia de un estado a otro. El siguiente ejemplo muestra los eventos generados por un entorno que pasa por los estados Info, OK y Severe.


        La página de información general del entorno Elastic Beanstalk de la consola de Elastic Beanstalk que muestra los eventos recientes de estado mejorado

Cuando el entorno pasa a un estado peor, el evento de estado avanzado incluye un mensaje que indica la causa de la transición.

No todos los cambios de estado en el nivel de instancia provocan que Elastic Beanstalk emita un evento. Para evitar falsas alarmas, Elastic Beanstalk solo genera un evento relacionado con el estado si el problema persiste en varias comprobaciones.

La información de estado del entorno en tiempo real, incluido el estado, el color y la causa, está disponible en la página de información del entorno de la consola de Elastic Beanstalk y en la CLI de EB. Si asocia la CLI de EB a su entorno y ejecuta el comando eb health, también puede consultar el estado en tiempo real de cada una de las instancias de su entorno.

Comportamiento de los informes de estado mejorados durante las actualizaciones, implementaciones y escalado

Si se habilitan los informes de estado avanzados, el comportamiento del entorno durante las actualizaciones de configuración y las implementaciones puede resultar afectado. Elastic Beanstalk no completará un lote de actualizaciones hasta que todas las instancias superen las comprobaciones de estado de forma coherente. Además, ya que los informes de estado avanzados aplican un listón más alto para considerar que están en buen estado y monitorizan otros factores, las instancias que superen la comprobación de estado ELB de los informes de estado básicos no superarán necesariamente la comprobación de estado de los informes de estado avanzados. Consulte los temas sobre las actualizaciones de configuración continuas y las implementaciones continuas para obtener más información acerca de cómo las comprobaciones de estado afectan al proceso de actualización.

Los informes de estado mejorados también pueden poner de manifiesto la necesidad de definir una URL de comprobación de estado correcta para Elastic Load Balancing. Cuando su entorno se amplía para satisfacer la demanda, las nuevas instancias comienzan a recibir solicitudes en cuanto superan suficientes comprobaciones de estado de ELB. Si no se configura una URL de comprobación de estado, este plazo de tiempo puede ser de tan solo 20 segundos una vez que la instancia es capaz de aceptar una conexión TCP.

Si la aplicación no ha terminado de iniciarse en el momento en que el balanceador de carga considera que tiene un estado lo suficientemente bueno como para recibir tráfico, verá un flujo de solicitudes fallidas, y su entorno empezará a no superar las comprobaciones de estado. Una URL de comprobación de estado que encuentre una ruta a la que sirve su aplicación puede evitar este problema. Las comprobaciones de estado de ELB no se superarán hasta que una solicitud GET a la URL de comprobación de estado devuelva un código de estado 200.