Comprobaciones de estado de la aplicación
Las comprobaciones de estado de las aplicaciones permiten supervisar el rendimiento y el estado de las aplicaciones que se ejecutan en Amazon EC2. Con las comprobaciones de estado de las aplicaciones, puede detectar los problemas de estado y responder a ellos mediante la supervisión de las aplicaciones a través de rutas y puertos configurables. Por ejemplo, puede utilizar las comprobaciones de estado de las aplicaciones para confirmar que el servidor web escucha en el puerto esperado y acepta nuevas conexiones.
Las comprobaciones de estado de las aplicaciones supervisan las respuestas HTTP y HTTPS de las aplicaciones en rutas y puertos configurables. Se ejecutan cada 60 segundos y se integran con Amazon EC2 Auto Scaling, de modo que puede automatizar la sustitución de instancias cuyas aplicaciones estén dañadas.
Contenido
Cómo funcionan las comprobaciones de estado de las aplicaciones
Comience a utilizar comprobaciones de estado de las aplicaciones
Gestión de la implementación, la aplicación de parches in situ y las sustituciones
Cómo probar una nueva comprobación de estado de la aplicación
Cómo supervisar las comprobaciones de estado de la aplicación
Cómo funcionan las comprobaciones de estado de las aplicaciones
Las comprobaciones de estado de las aplicaciones envían solicitudes HTTP o HTTPS a un punto de conexión que escucha en un puerto de red de la instancia cada 60 segundos. AWS compara el código de respuesta con el comparador de códigos de estado que configuró. La comprobación se marca como defectuosa después de varias solicitudes fallidas consecutivas y vuelve a estar en buen estado luego de varias solicitudes correctas consecutivas. Ambos recuentos son 2 de forma predeterminada y son configurables. Para obtener más información, consulte Umbrales de evaluación.
nota
Las comprobaciones de estado de la aplicación envían la solicitud de comprobación de estado a través de HTTP/2.
La comprobación del protocolo HTTPS no valida el certificado del servidor.
Durante un reinicio, las comprobaciones de estado de las aplicaciones indican un error hasta que la instancia vuelva a estar disponible, ya que la aplicación no puede responder a las solicitudes de comprobación de estado mientras el sistema operativo se está reiniciando.
Arquitectura de redes
Las comprobaciones de estado de las aplicaciones se originan en el servicio de comprobaciones de estado de las aplicaciones de Amazon EC2. Para llegar a sus instancias, AWS crea una interfaz de red elástica (ENI) administrada en su VPC. AWS crea una ENI por combinación de subred de origen y grupo de seguridad que tenga instancias asociadas. AWS crea la ENI administrada cuando una comprobación de estado de una aplicación requiere por primera vez esa combinación y la elimina cuando no hay ninguna otra comprobación de estado de la aplicación que la requiera. La ENI administrada no se tiene en cuenta para el límite de ENI de la instancia, pero sí para la cuota de interfaces de red por región de su cuenta, que se aplica por zona de disponibilidad. Para obtener más información, consulte Cuotas de VPC de Amazon.
Por defecto, Amazon EC2 oculta estas interfaces de red administradas de la consola y las operaciones de la lista de API para las cuentas que no tenían recursos administrados antes de que esta configuración estuviera disponible. Para cambiar su visibilidad, consulte Configuración de visibilidad de recursos administrada.
AWS crea una interfaz de red administrada para cada combinación de subred de origen y grupo de seguridad de las instancias asociadas. La cantidad de interfaces administradas aumenta con la cantidad de combinaciones distintas de subredes y grupos de seguridad que utilizan las instancias supervisadas. La consolidación de las instancias supervisadas en menos combinaciones de subredes y grupos de seguridad reduce la cantidad de interfaces administradas. Por ejemplo, 200 instancias distribuidas en 2 subredes que utilizan un único grupo de seguridad producen 2 interfaces administradas. Las mismas 200 instancias que utilizan 3 grupos de seguridad en esas 2 subredes producen hasta 6 interfaces administradas. Cada interfaz corresponde a una combinación de subred y grupo de seguridad.
Las comprobaciones de estado de las aplicaciones llegan a sus instancias desde un punto de observación privado dentro de su VPC. El alcance describe el origen de la comprobación, no una propiedad de la dirección IP de la instancia. AWS crea la ENI administrada en una subred de la VPC y llega a la instancia a través de la ruta de red privada.
Con las rutas de red administradas de AWS, el tráfico de comprobación de estado se origina en las instancias de Amazon EC2 administradas de AWS en la misma zona de disponibilidad que la instancia de destino (o en la zona de disponibilidad principal para los destinos de la zona local). El tráfico pasa por la red interna de AWS y no pasa por la red pública de Internet. Para obtener más información, consulte Preguntas frecuentes sobre Amazon VPC
Con las rutas de red administradas por el cliente, usted elige las subredes de origen para realizar comprobaciones desde una zona de disponibilidad distinta de la de destino. Para obtener más información, consulte Supervisión entre zonas de disponibilidad.
Rutas de red administradas de AWS y administradas por el cliente
Las comprobaciones de estado de las aplicaciones admiten dos modos de incorporación que determinan quién selecciona las subredes y los grupos de seguridad de origen para la ENI de comprobación de estado, y las subredes y los grupos de seguridad de destino para las instancias de destino.
- Rutas de red administradas de AWS
-
AWS selecciona las subredes y los grupos de seguridad de origen para la ENI de comprobación de estado, y las subredes y los grupos de seguridad de destino para las instancias de destino.
- Rutas de red administradas por el cliente
-
Debe especificar las subredes y los grupos de seguridad de origen para la ENI de comprobación de estado, y las subredes y los grupos de seguridad de destino para las instancias de destino.
Utilice rutas de red administradas por el cliente cuando necesite controlar de qué subredes y grupos de seguridad se origina el tráfico de comprobación de estado, por ejemplo, cuando su VPC tiene una segmentación de red estricta, reglas de firewall o requisitos de cumplimiento que restringen las fuentes que pueden llegar a los puntos de conexión de la aplicación.
Para elegir el modo, debe incluir u omitir el parámetro --health-check-paths en el comando de creación. Si omite el parámetro --health-check-paths, AWS selecciona las subredes de origen y destino y los grupos de seguridad (rutas de red administradas de AWS). Si incluye el parámetro --health-check-paths, los administra usted (rutas de red administradas por el cliente).
Versión de IP
Cada comprobación de estado de la aplicación está asociada a una única versión IP (IPv4 o IPv6). Para supervisar una instancia a través de IPv4 e IPv6, cree dos comprobaciones de estado de la aplicación independientes y asócielas a la instancia.
Las comprobaciones de IPv4 e IPv6 llegan a la instancia desde la VPC.
Valores de estado de comprobación
Cada comprobación individual notifica uno de los siguientes estados:
-
passed: la comprobación se completó correctamente -
failed: la comprobación no se ha superado La respuesta incluye el código de estado HTTP devuelto por la aplicación. Para obtener una guía de interpretación y corrección, consulte Solución de problemas. -
initializing: la comprobación aún no ha completado su primera evaluación -
insufficient-data: la comprobación no recibió datos suficientes para determinar un resultado -
not-applicable: la comprobación no está asociada a la instancia
El estado general de la aplicación registrado para la instancia agrega todos los resultados de las comprobaciones individuales. El estado general es uno de los siguientes:
-
ok: se aprobaron todas las comprobaciones -
impaired: una o más comprobaciones fallaron -
initializing: una o más comprobaciones aún no han completado su primera evaluación -
insufficient-data: una o más comprobaciones indican datos insuficientes -
not-applicable: se excluyen de la agregación todas las comprobaciones de estado de las aplicaciones asociadas -
suppressed: la evaluación de la comprobación de estado de la aplicación está suprimida para la instancia
Agregación
Puede marcar cada comprobación de estado de la aplicación como incluida o excluida del estado general de la instancia. Por defecto, una comprobación está included.
included-
La comprobación contribuye al estado general de la instancia y Amazon EC2 Auto Scaling la utiliza.
excluded-
La comprobación informa de su estado individual, pero no contribuye al estado general de la instancia, y Amazon EC2 Auto Scaling no la utiliza. Utilice esta configuración para validar una nueva comprobación en producción sin afectar el estado general ni provocar sustituciones de Amazon EC2 Auto Scaling. Este es el flujo de trabajo recomendado cuando se agrega una comprobación a una carga de trabajo de producción existente; consulte Cómo probar una nueva comprobación de estado de la aplicación.
Comience a utilizar comprobaciones de estado de las aplicaciones
Requisitos previos
Antes de crear una comprobación del estado de la aplicación, asegúrese de que dispone de lo siguiente:
-
Una VPC con las instancias que desea supervisar.
-
Un punto de conexión de aplicación en cada instancia que pueda responder a las solicitudes HTTP o HTTPS en el puerto y la ruta HTTP que vaya a configurar.
-
Un grupo de seguridad en cada instancia de destino que permita el tráfico entrante en el puerto de comprobación desde el grupo de seguridad de origen utilizado para la comprobación de estado de la aplicación. Consulte Seguridad y permisos.
Paso 1: Configurar la aplicación de de
Configure el punto de conexión de la aplicación para que responda a las solicitudes HTTP o HTTPS en el puerto y la ruta HTTP que usted especifique al crear la comprobación. Devuelva un código de respuesta incluido en el comparador de códigos de estado para indicar que la aplicación está en buen estado.
Asegúrese de que el grupo de seguridad de la instancia de destino permita el tráfico entrante en el puerto de comprobación procedente del grupo de seguridad de origen utilizado para la comprobación de estado de la aplicación. En las rutas de red administradas, AWS proporciona el grupo de seguridad de origen al crear la comprobación. Y en las rutas de red administradas por el cliente, usted debe especificar el grupo de seguridad de origen al crear la comprobación.
Paso 2: Crear una definición de comprobación
Utilice la AWS CLI para crear una comprobación de estado de la aplicación.
Paso 3: Asociar la comprobación a las instancias
Asocie la comprobación a las instancias que desea monitorizar, ya sea por ID de instancia o por etiqueta.
Las operaciones de asociación y desvinculación devuelven los resultados de éxito y error por instancia. Si algunas instancias no se pueden asociar (por ejemplo, porque la comprobación ya está asociada), esas instancias aparecen en los resultados fallidos con un motivo.
Paso 4: visualización de los resultados
Consulte el estado de la aplicación por instancia.
Opciones de configuración
Las comprobaciones de estado de las aplicaciones aceptan varios parámetros de configuración. En esta sección se explican los parámetros cuyo comportamiento no es evidente a partir del nombre del parámetro. Para ver la lista completa de parámetros y reglas de validación, consulte CreateApplicationStatusCheck y AssociateApplicationStatusCheck en la Referencia de la API de Amazon EC2.
Umbrales de evaluación
FailureThreshold-
El número de solicitudes fallidas consecutivas antes de que la comprobación se marque como defectuosa. Valor predeterminado: 2.
SuccessThreshold-
El número de solicitudes consecutivas correctas antes de que la comprobación vuelva a marcarse en buen estado. Valor predeterminado: 2.
Timeout-
La cantidad de segundos que se debe esperar una respuesta antes de que la solicitud se registre como no superada. Se aplica como tiempo de espera forzado; si la aplicación no responde dentro de este período, la solicitud se registra como un error independientemente de la respuesta final. Predeterminado: 6. Rango válido: de 1 a 30.
Período de gracia de inicio
InitializationGracePeriodSeconds-
La cantidad de segundos que se debe esperar después de que se inicie una instancia antes de que AWS empiece a evaluar la comprobación. Utilice este parámetro para que las aplicaciones tengan tiempo de empezar a escuchar antes de que comiencen las comprobaciones. Si el período de gracia es demasiado corto, Amazon EC2 Auto Scaling podría reemplazar las nuevas instancias antes de que su aplicación esté lista. Valor predeterminado: 300. Rango válido: de 1 a 600.
Alcance de IP
IpScope-
Las comprobaciones de estado de las aplicaciones utilizan el ámbito
private; la comprobación se lleva a cabo desde la VPC. En el caso de IPv4, esto corresponde a la dirección IP privada de la instancia. En el caso de IPv6, AWS no clasifica la dirección como pública o privada; la comprobación acepta cualquier dirección IPv6 y la evalúa desde la VPC.
Índice de dispositivos
DeviceIndex-
El índice del dispositivo de red de la instancia que AWS evalúa para la comprobación de estado. Cámbielo cuando el dispositivo de red principal de la instancia no sea el que desea comprobar. Valor predeterminado: 0.
Las rutas de agregación, versión de IP y comprobación de estado (subredes de origen y destino y grupos de seguridad) se tratan en sus propias secciones anteriores de esta página.
Configuración predeterminada
En el caso de las rutas de red administradas de AWS, las comprobaciones de estado de las aplicaciones utilizan los siguientes valores predeterminados.
| Opción | Predeterminado |
|---|---|
Intervalo de comprobación |
60 segundos (fijo; no configurable) |
Failure threshold |
2 errores consecutivos |
Umbral de éxito |
2 éxitos consecutivos |
Tiempo de espera |
6 segundos |
Comparador de códigos de estado |
200 |
Ruta HTTP |
/ |
Versión de IP |
ipv4 |
Alcance de IP |
privada |
Índice de dispositivos |
0 |
Periodo de gracia de inicialización |
300 segundos |
Agregación |
incluido |
Subredes de origen y grupos de seguridad |
Administrada por AWS |
Integración de Amazon EC2 Auto Scaling
Amazon EC2 Auto Scaling finaliza y reemplaza automáticamente las instancias cuyo estado general de la aplicación indica impaired, siempre que la comprobación se incluya en la agregación. No se requiere ninguna configuración de grupo de escalado automático más allá de asociar la comprobación de estado de la aplicación con las instancias del grupo.
Amazon EC2 Auto Scaling utiliza el estado general de la instancia, no el estado de comprobación individual. Las comprobaciones marcadas como excluded no impulsan las acciones de Amazon EC2 Auto Scaling. Las comprobaciones en estado suppressed no impulsan las acciones de Amazon EC2 Auto Scaling.
Utilice el parámetro InitializationGracePeriodSeconds de la comprobación para permitir que las nuevas instancias se inicien antes de que comiencen las comprobaciones de estado de las aplicaciones. Si el periodo de gracia es demasiado corto, es posible que las instancias nuevas sean terminadas y reemplazadas por Amazon EC2 Auto Scaling antes de que su aplicación esté lista para atender el tráfico.
La comprobación InitializationGracePeriodSeconds establece el tiempo transcurrido desde el lanzamiento de una instancia hasta que la comprobación comience a evaluar la aplicación. Configúrela para que cubra el tiempo de inicio de la aplicación, de modo que la comprobación no muestre impaired mientras la aplicación aún se esté iniciando. El periodo de gracia de la comprobación de estado del grupo de escalado automático es independiente. Establece cuánto tiempo transcurrirá desde que una instancia entre en servicio hasta que Amazon EC2 Auto Scaling la termine debido a una comprobación de estado fallida.
Para obtener más información acerca de cómo Amazon EC2 Auto Scaling utiliza las comprobaciones de estado, consulte Health checks for instances in an Auto Scaling group y Use application status checks with an Auto Scaling group en la Guía del usuario de Amazon EC2 Auto Scaling.
Gestión de la implementación, la aplicación de parches in situ y las sustituciones
Las implementaciones, los parches in situ y otras operaciones de mantenimiento pueden detener o reiniciar temporalmente la aplicación. Durante ese tiempo, las comprobaciones de estado de la aplicación indican un error, ya que la aplicación no puede responder a las solicitudes de comprobación de estado. Si sus instancias están en un grupo de escalado automático con comprobaciones de estado de las aplicaciones incluidas en la agregación, Amazon EC2 Auto Scaling podría terminar y reemplazar estas instancias aunque se espere la interrupción.
Opción A: suprimir la comprobación
Utilice la supresión para periodos de mantenimiento delimitados cuya duración conozca. La supresión se aplica en el nivel de instancia. Debe especificar una duración u omitirla para suprimir la comprobación hasta que la desactive.
Si está suprimida, el estado general de la aplicación de la instancia muestra suppressed. Amazon EC2 Auto Scaling no actúa en las instancias suppressed.
Opción B: excluir la comprobación de la agregación
Si desea que la comprobación siga evaluando e informando sobre su estado individual, pero que no afecte al estado general ni desencadene acciones de Amazon EC2 Auto Scaling, defina la configuración de agregación de la comprobación en excluded. Esto resulta útil para situaciones de larga duración, como el lanzamiento de una nueva versión de la comprobación o la validación de un cambio sin correr el riesgo de ser reemplazado, y para los casos en los que desee que la telemetría continúe sin que ello afecte a las operaciones.
Para obtener más información, consulte Agregación.
Opción C: desvincular la comprobación
Utilice la desvinculación para una eliminación más prolongada o indefinida.
aws ec2 disassociate-application-status-check \ --application-status-check-id asc-1234567890abcdef0 \ --instance-ids i-0123456789abcdef0
Si la asoció por etiqueta, quite la etiqueta de la instancia para desvincularla. Tras la desvinculación, el estado general de la aplicación de la instancia mostrará not-applicable.
Guía de implementación
Las implementaciones son el escenario de mantenimiento más común que requiere supresión. Utilice la supresión cuando la herramienta de implementación tenga un enlace previo a la implementación y otro posterior, de modo que pueda suprimir la comprobación antes de que comience la implementación y deshabilitar la supresión una vez finalizada la implementación.
El procedimiento general es el siguiente:
-
En el enlace previo a la implementación, llame a enable-application-status-check-suppression para la instancia, con una duración que cubra el período de implementación esperado.
-
Realice la implementación.
-
En el enlace posterior a la implementación, llame a disable-application-status-check-suppression para la instancia.
Si su herramienta de implementación no tiene enlaces, gestione la supresión desde la canalización de CI/CD que invoca la implementación.
Cómo probar una nueva comprobación de estado de la aplicación
Puede validar una nueva comprobación de estado de la aplicación en producción antes de que comience a contribuir a la supervisión a nivel de instancia. Para ello, defina la configuración de agregación en excluded al crear la comprobación y luego confirme que muestra el estado esperado y los códigos de respuesta HTTP. Cuando tenga todo listo, cambie la configuración a included para que la comprobación contribuya al estado general de la instancia y se integre con Amazon EC2 Auto Scaling.
-
Cree la comprobación con la configuración de agregación establecida en
excluded.aws ec2 create-application-status-check \ --protocol https \ --port 443 \ --path "/health" \ --status-code-matcher "200" \ --aggregation excluded -
Asocie la comprobación a una instancia de prueba o a un subconjunto de su flota de producción.
-
Espere al menos dos intervalos de comprobación (aproximadamente dos minutos) para que la comprobación complete una evaluación inicial.
-
Utilice describe-application-status para comprobar que la comprobación indica el estado esperado y el código de respuesta HTTP.
aws ec2 describe-application-status \ --instance-ids i-0123456789abcdef0 -
Si la comprobación arroja los resultados esperados, actualice la configuración de agregación a
includedpara que la comprobación contribuya al estado general de la instancia e impulse las acciones de Amazon EC2 Auto Scaling.aws ec2 modify-application-status-check \ --application-status-check-id asc-1234567890abcdef0 \ --aggregation included
Redes avanzadas
Las comprobaciones de estado de las aplicaciones se originan en una ENI administrada en la subred de origen y el grupo de seguridad que especifique (o que AWS seleccione por usted). Para las cargas de trabajo que requieren una disponibilidad superior a la que ofrece una configuración de origen único, o para las cargas de trabajo que se ejecutan en zonas locales o Outposts, tenga en cuenta los siguientes procedimientos.
Supervisión entre zonas de disponibilidad
Para obtener redundancia entre las zonas de disponibilidad, puede ejecutar comprobaciones de estado desde varias de ellas. Con las rutas de red administradas por el cliente, puede definir las rutas de comprobación de estado cuyos orígenes se encuentran en dos zonas de disponibilidad diferentes que llegan a las mismas instancias de destino mediante el parámetro --health-check-paths. La supervisión desde dos zonas de disponibilidad mantiene los informes de estado de las instancias de forma continua incluso si una zona de disponibilidad deja de estar disponible.
En el siguiente ejemplo, se crea una comprobación con dos rutas de comprobación de estado cuyos orígenes se encuentran en distintas zonas de disponibilidad y ambas llegan a las mismas instancias de destino.
aws ec2 create-application-status-check \ --protocol https \ --port 443 \ --path "/health" \ --status-code-matcher "200" \ --health-check-paths '[{"Source":{"SubnetId":"subnet-source-az1","SecurityGroupId":"sg-healthcheck"},"Destinations":[{"SubnetId":"subnet-app-az1","SecurityGroupId":"sg-app"}]},{"Source":{"SubnetId":"subnet-source-az2","SecurityGroupId":"sg-healthcheck"},"Destinations":[{"SubnetId":"subnet-app-az2","SecurityGroupId":"sg-app"}]}]'
Zonas locales
En el caso de las instancias que se ejecutan en zonas locales de AWS, la interfaz de red elástica (ENI) administrada reside en la región principal de AWS, no en la zona local. El tráfico de comprobación de estado entre la región principal y las instancias de la zona local pasa por el enlace de servicio de la zona local, lo que puede generar cargos adicionales por transferencia de datos.
Prácticas recomendadas
-
Diseñe su punto de conexión de estado para que refleje el estado de la aplicación que se ejecuta en esa instancia. Cuando el punto de conexión devuelve el estado según la propia aplicación, Amazon EC2 Auto Scaling reemplaza solo las instancias que están realmente deterioradas. Si la respuesta del punto de conexión también depende de un recurso compartido, como una base de datos o un servicio descendente, un problema con ese recurso puede provocar un error en la comprobación en varias instancias a la vez. Esto puede provocar un reemplazo en toda la flota. Para obtener orientación sobre cómo redactar los puntos de conexión de la comprobación de estado, consulte Implementación de las comprobaciones de estado
en Amazon Builders' Library. -
Protéjase contra los errores correlacionados. Una comprobación incluida impulsa el reemplazo de Amazon EC2 Auto Scaling. Una comprobación que falla en varias instancias a la vez puede provocar una oleada de reemplazos. Establezca una política de mantenimiento de instancias en el grupo de escalado automático para limitar el número de instancias que se sustituyen simultáneamente. Para obtener más información, consulte Instance maintenance policy en la Guía del usuario de Amazon EC2 Auto Scaling.
-
Alarma basada en el recuento de instancias deterioradas. Cree una alarma de Amazon CloudWatch en la métrica
StatusCheckFailed_Applicationde toda su flota. Un aumento repentino en muchas instancias indica una dependencia compartida y no errores en las instancias individuales, y le da tiempo para responder antes de que se produzcan reemplazos en cascada. Para obtener más información, consulte Cómo supervisar las comprobaciones de estado de la aplicación. -
Manténgase dentro de su cuota de interfaces de red. Las comprobaciones de estado de las aplicaciones crean interfaces de red administradas que se contabilizan en la cuota de Interfaces de red por región. AWS aplica esta cuota por zona de disponibilidad. Supervise su uso para que una flota en crecimiento no alcance la cuota. Si la alcanza, AWS no podrá crear nuevas interfaces. Para obtener información relacionada con las alarmas de cuota, consulte Cuotas.
-
Trate los permisos de las comprobaciones de estado como sujetos a control de cambios. Las acciones de IAM que crean, modifican, eliminan, asocian, desvinculan y suprimen las comprobaciones de estado de las aplicaciones pueden afectar a la disponibilidad de las instancias. Estas acciones determinan qué impulsa el reemplazo de Amazon EC2 Auto Scaling. Trate acciones como
ec2:CreateApplicationStatusCheck,ec2:AssociateApplicationStatusCheck,ec2:ModifyApplicationStatusCheckyec2:EnableApplicationStatusCheckSuppressioncomo sujetas a control de cambios, en lugar de concederlas como parte del acceso general a Amazon EC2. Para ver la lista completa de las acciones, consulte la Referencia de la API de Amazon EC2.
Solución de problemas
Cuando una comprobación de estado de una aplicación indique que está deteriorada, pero usted espera que su aplicación esté en buen estado, verifique cada uno de los siguientes puntos:
-
Accesibilidad de la instancia. Confirme que las comprobaciones de estado de instancia y del sistema estén
ok. -
Regla de entrada del grupo de seguridad. El grupo de seguridad de la instancia de destino debe permitir el tráfico entrante en el puerto de comprobación procedente del grupo de seguridad de origen utilizado por la comprobación de estado de la aplicación. Para las rutas de red administradas de AWS, AWS proporciona el grupo de seguridad de origen; para las rutas de red administradas por el cliente, utilice el grupo de seguridad que especificó como origen.
-
Firewall del host. Cualquier firewall a nivel de host (iptables, Firewall de Windows, firewall de host de terceros) de la instancia debe permitir el tráfico entrante en el puerto de comprobación.
-
Punto de conexión de la aplicación. La aplicación debe estar escuchando en el puerto y la ruta que configuró. Confirme con una solicitud local de la instancia (
curl http://localhost:PORT/PATH). -
Incompatibilidad de protocolo. Si la comprobación está configurada para HTTPS pero el punto de conexión solo admite HTTP (o viceversa), todas las llamadas fallarán.
-
Comparador de códigos de estado. Confirme que el código de respuesta real de su aplicación esté incluido en el comparador de códigos de estado que configuró.
-
Ruta de red. Si configuró las rutas de red administradas por el cliente, confirme que la subred de origen y el grupo de seguridad tengan conectividad con la subred de destino. Utilice el Analizador de accesibilidad de VPC para rastrear la ruta de la red.
-
Cuota de ENI disponible. AWS crea una interfaz de red elástica (ENI) administrada en su cuenta para cada combinación de subred de origen y grupo de seguridad. Confirme que su cuenta no ha alcanzado su cuota de interfaces de red por región, que se aplica por zona de disponibilidad. Si su cuenta ha alcanzado esta cuota, AWS no podrá crear la ENI administrada y la comprobación no podrá ejecutarse. Para obtener más información, consulte Cuotas de VPC de Amazon.
Códigos de motivo
La respuesta de describe-application-status incluye un motivo para cada comprobación. El motivo contiene el código de estado HTTP devuelto por la aplicación (en forma de número), junto con el protocolo utilizado para la comprobación. Una comprobación se marca como passed si el código de estado devuelto está incluido en el comparador de códigos de estado, y como failed en caso contrario.
El motivo también incluye un código de motivo y, en el caso de los resultados a nivel HTTP, el protocolo y el código de estado HTTP devuelto. El motivo contiene los siguientes campos:
Code-
El código de motivo del resultado de la comprobación de estado de la aplicación. Uno de los valores siguientes:
-
ResponseCodeMatched: el código de estado HTTP devuelto por la comprobación de estado coincidió con elStatusCodeMatcherconfigurado. -
ResponseCodeMismatch: el código de estado HTTP devuelto por la comprobación de estado no coincidió con elStatusCodeMatcherconfigurado. -
ConnectionTimeout: se agotó el tiempo de espera de la conexión al destino. -
ResponseTimeout: se agotó el tiempo de espera de la comprobación de estado mientras se esperaba una respuesta del destino. -
ConnectionRefused: el destino rechazó la conexión de la comprobación de estado. -
ConnectionReset: la conexión de comprobación de estado se restableció antes de recibir una respuesta.
Para
ResponseCodeMatchedyResponseCodeMismatch, el campoStatusCodecontiene el código de estado HTTP devuelto y el campoProtocolcontiene el protocolo utilizado para la comprobación de estado. En el caso de errores de conexión, comoConnectionTimeout,ResponseTimeout,ConnectionRefusedyConnectionReset, los camposStatusCodeyProtocolno están presentes. -
Protocol-
El protocolo utilizado para la comprobación de estado. Uno de
HTTPoHTTPS. StatusCode-
El código de estado HTTP devuelto por la comprobación de estado.
Utilice el código de estado HTTP devuelto para identificar el motivo por el que se ha producido un error en una comprobación. Algunos ejemplos comunes:
| Código de estado HTTP | Significado típico | Corrección común |
|---|---|---|
|
La aplicación devolvió una respuesta correcta. |
Ninguna. Por lo general, se trata de un buen estado. |
|
La aplicación devolvió una redirección. Las llamadas de comprobación de estado no siguen los redireccionamientos. |
Sitúe la ruta de comprobación de estado en el destino de la redirección o agregue el código de redirección al comparador de códigos de estado si considera que funciona correctamente. |
|
La aplicación requiere autenticación o se le deniega el acceso a la ruta de comprobación de estado. |
Configure la ruta de comprobación de estado para que no esté autenticada o realice las comprobaciones de estado en una ruta que no requiera credenciales. |
|
La ruta de comprobación de estado configurada no se encontró en la aplicación. |
Compruebe que la ruta coincida con una de las rutas que gestiona su aplicación. |
|
La aplicación ha detectado un error interno del servidor. |
Investigue los registros de la aplicación en la instancia. |
|
Se puede acceder a la aplicación, pero informa de problemas de nivel superior o de capacidad. |
Investigue el estado, las dependencias y la capacidad de la aplicación. Si la aplicación devuelve estos códigos durante el inicio, aumente |
Para ver la estructura completa de ApplicationStatusReason, consulte ApplicationStatusReason en la Referencia de la API de Amazon EC2.
Errores comunes
-
El grupo de seguridad no permite el tráfico entrante desde el origen de la comprobación de estado en el puerto de comprobación.
-
La aplicación está enlazada a
127.0.0.1y no escucha en la interfaz de red. -
La ruta de comprobación de estado devuelve una redirección (301, 302) en lugar de una respuesta correcta, y el comparador de códigos de estado no incluye el código de redirección.
-
La comprobación está configurada para HTTPS, pero la aplicación solo admite HTTP, o viceversa.
-
La aplicación tarda más en iniciarse que el valor de
InitializationGracePeriodSecondsy Amazon EC2 Auto Scaling reemplaza la instancia antes de que esté lista.
Cómo supervisar las comprobaciones de estado de la aplicación
Puede supervisar las comprobaciones de estado de la aplicación de tres formas:
-
Amazon CloudWatch. La métrica
StatusCheckFailed_Applicationrefleja el estado general de la aplicación de la instancia y puede generar alarmas. La métrica se agrega por instancia en todas las comprobaciones asociadas cuya configuración de agregación esincluded. CloudWatch también publica una métrica por comprobación para cada comprobación asociada, denominadaStatusCheckFailed_Application_.application-status-check-id -
describe-instance-status. Muestra el estado general de la aplicación junto con el resto de la información de estado de la instancia.
-
describe-application-status. Devuelve resultados detallados por instancia, incluidos el estado individual de cada comprobación asociada y el código de estado HTTP devuelto por la aplicación.
Utilice la métrica de CloudWatch para la automatización basada en alarmas. Utilice describe-instance-status cuando ya la esté consultando para obtener el estado de la instancia. Utilice describe-application-status para obtener una visibilidad detallada por comprobación.
Seguridad y permisos
AWS crea y administra las interfaces de red utilizadas para las comprobaciones de estado de las aplicaciones mediante un rol vinculado al servicio. No se requiere ninguna configuración de IAM para que el servicio cree estas ENI. El rol vinculado al servicio utiliza la política administrada de AWS EC2ApplicationStatusChecksServiceRolePolicy .
Para crear, asociar, describir, eliminar y suprimir usted mismo las comprobaciones de estado de las aplicaciones, su usuario o rol de IAM necesita los permisos de Amazon EC2 correspondientes. Consulte la Referencia de la API de Amazon EC2 para ver la lista completa de acciones.
El grupo de seguridad de la instancia debe permitir el tráfico entrante desde el grupo de seguridad de origen de comprobación de estado en el puerto que ha configurado. En el caso de las rutas de red administradas de AWS, AWS proporciona el grupo de seguridad de origen; en el caso de las rutas de red administradas por el cliente, utilice el grupo de seguridad que especificó como origen.
Precios
Las comprobaciones de estado de las aplicaciones se facturan según los siguientes componentes:
-
Un cargo por hora de 0,01 USD por cada interfaz de red elástica (ENI) administrada, por zona de disponibilidad.
-
Los precios estándar de Amazon CloudWatch se aplican a las métricas de comprobación de estado de las aplicaciones.
Cuotas
Las comprobaciones de estado de las aplicaciones están sujetas a las cuotas de servicio de AWS. Para ver los nombres, los valores predeterminados y las descripciones de las cuotas, consulte Amazon EC2 endpoints and quotas en la Referencia general de AWS.
Además de las cuotas de servicio de AWS que afectan a las interfaces de red administradas, las comprobaciones de estado de las aplicaciones tienen las siguientes cuotas de servicio. Puede ver su uso y solicitar aumentos desde la consola de Service Quotas.
En estas cuotas, un destino es una instancia única que supervisa una comprobación de estado. Si más de una comprobación de estado supervisa una instancia, cada combinación de instancia y comprobación de estado cuenta como un destino independiente. Una asociación es una regla de etiqueta única o un ID de instancia único que se asocia a una comprobación de estado. Cada regla o ID de instancia cuenta como una asociación, independientemente del número de instancias en las que se resuelva.
| Cuota | Predeterminado | Ajustable |
|---|---|---|
Comprobaciones de estado por cuenta |
50 |
Sí, de forma automática |
Asociaciones por comprobación de estado |
50 |
Sí, de forma automática |
Asociaciones por cuenta |
200 |
Sí, de forma automática |
Destinos por cuenta |
5 000 |
Sí, a petición |
La mayoría de los aumentos de cuota se aprueban automáticamente. El aumento del número de destinos por cuenta requiere una solicitud y una aprobación manual.
importante
Si el número de destinos de su cuenta supera la cuota de destinos por cuenta, los destinos que superen el límite no se supervisan y no se notifica su estado en la aplicación. Para evitar lagunas en la supervisión, mantenga el recuento de destinos dentro de la cuota o solicite un aumento.
Recomendamos crear una alarma de Amazon CloudWatch sobre el uso de la cuota de comprobaciones de estado de su aplicación para que se le notifique antes de que alcance una cuota. Service Quotas publica las métricas de uso en el espacio de nombres AWS/Usage de CloudWatch, que puede utilizar para crear la alarma.