Verificações de status da aplicação
As verificações de status do aplicativo ajudam você a monitorar o desempenho e a integridade de seus aplicativos em execução no Amazon EC2. Com as verificações de status do aplicativo, você pode detectar e responder às deficiências de integridade do aplicativo monitorando seus aplicativos por meio de caminhos e portas configuráveis. Por exemplo, você pode usar as verificações de status do aplicativo para confirmar se o servidor web está escutando na porta esperada e aceitando novas conexões.
As verificações de status do aplicativo monitoram as respostas HTTP e HTTPS de seus aplicativos em caminhos e portas configuráveis. Elas são executadas a cada 60 segundos e se integram ao Amazon EC2 Auto Scaling, para que você possa automatizar a substituição de instâncias cujos aplicativos estão danificados.
Como funcionam as verificações de status do aplicativo
As verificações de status do aplicativo enviam solicitações HTTP ou HTTPS para um endpoint que escuta em uma porta de rede na sua instância a cada 60 segundos. AWS compara o código de resposta com o correspondente de código de status que você configurou. A verificação é marcada como comprometida após várias solicitações consecutivas com falha e íntegra novamente após várias solicitações consecutivas bem-sucedidas. Ambas as contagens são padronizadas para 2 e são configuráveis. Para obter mais informações, consulte Limites de avaliação.
nota
As verificações de status do aplicativo enviam a solicitação de verificação de integridade por HTTP/2.
A verificação do protocolo HTTPS não valida o certificado do servidor.
Durante a reinicialização, as verificações de status do aplicativo relatam uma falha até que a instância fique disponível novamente porque o aplicativo não pode responder às solicitações de verificação de integridade enquanto o sistema operacional está sendo reiniciado.
Arquitetura de rede
As verificações de status do aplicativo são originárias do serviço de verificações de status do aplicativo Amazon EC2. Para alcançar suas instâncias, AWS cria uma interface de rede elástica gerenciada (ENI) em sua VPC. AWS cria uma ENI por combinação de sub-rede de origem e grupo de segurança que tem instâncias associadas. AWS cria a ENI gerenciada quando uma verificação de status do aplicativo exige essa combinação pela primeira vez e a remove quando nenhuma verificação de status do aplicativo restante a exige. A ENI gerenciada não conta no limite de ENI da instância, mas conta na cota de interfaces de rede por região da sua conta, que é aplicada por zona de disponibilidade. Para obter mais informações, consulte as Amazon VPC cotas.
Por padrão, o Amazon EC2 oculta essas interfaces de rede gerenciadas do console e das operações de lista de APIs para contas que não tinham recursos gerenciados antes que essa configuração se tornasse disponível. Para alterar sua visibilidade, consulte Configurações de visibilidade de recursos gerenciados.
AWS cria uma interface de rede gerenciada para cada combinação de sub-rede de origem e grupo de segurança entre as instâncias associadas. O número de interfaces gerenciadas cresce com o número de combinações distintas de sub-redes e grupos de segurança que suas instâncias monitoradas usam. A consolidação de instâncias monitoradas em menos combinações de sub-redes e grupos de segurança reduz o número de interfaces gerenciadas. Por exemplo, 200 instâncias espalhadas por 2 sub-redes que usam um único grupo de segurança produzem 2 interfaces gerenciadas. As mesmas 200 instâncias usando 3 grupos de segurança nessas 2 sub-redes produzem até 6 interfaces gerenciadas. Cada interface corresponde a uma combinação de sub-rede e grupo de segurança.
As verificações de status da aplicação chegam às suas instâncias a partir de um ponto de acesso privado dentro da sua VPC. O escopo descreve a origem da verificação, não uma propriedade do endereço IP da sua instância. AWS cria a ENI gerenciada em uma sub-rede dentro da sua VPC e alcança a instância pelo caminho da rede privada.
Com caminhos de rede gerenciados pelo AWS, o tráfego de verificação de integridade se origina de instâncias gerenciadas do Amazon EC2 AWS na mesma zona de disponibilidade da instância de destino (ou na zona de disponibilidade principal para destinos da zona local). O tráfego viaja pela rede interna do AWS e não passa pela internet pública. Para obter mais informações, consulte Amazon VPC FAQs
Com caminhos de rede gerenciados pelo cliente, você escolhe as sub-redes de origem para poder executar verificações em uma zona de disponibilidade diferente da de destino. Para obter mais informações, consulte Monitoramento entre zonas de disponibilidade.
AWS caminhos de rede gerenciados e gerenciados pelo cliente
As verificações de status do aplicativo oferecem suporte a dois modos de integração que determinam quem seleciona as sub-redes de origem e os grupos de segurança para a ENI de verificação de integridade e as sub-redes e grupos de segurança de destino para as instâncias de destino.
- AWS caminhos de rede gerenciados
-
AWS seleciona as sub-redes de origem e os grupos de segurança para a ENI de verificação de integridade e as sub-redes e grupos de segurança de destino para as instâncias de destino.
- Caminhos de rede gerenciados pelo cliente
-
Você especifica as sub-redes de origem e os grupos de segurança para a ENI de verificação de integridade e as sub-redes e grupos de segurança de destino para as instâncias de destino.
Use caminhos de rede gerenciados pelo cliente quando precisar controlar de quais sub-redes e grupos de segurança se origina o tráfego de verificação de integridade, como quando sua VPC tem segmentação de rede rígida, regras de firewall ou requisitos de conformidade que restringem quais fontes podem alcançar os endpoints do seu aplicativo.
Você escolhe o modo incluindo ou omitindo o parâmetro --health-check-paths no comando create. Se você omitir o parâmetro --health-check-paths, AWS seleciona sub-redes e grupos de segurança de origem e destino (caminhos de rede gerenciados pelo AWS). Se você incluir o parâmetro --health-check-paths, você os gerencia (caminhos de rede gerenciados pelo cliente).
Versão de IP
Cada verificação de status do aplicativo é associada a uma única versão de IP (IPv4 ou IPv6). Para monitorar uma instância em IPv4 e IPv6, crie duas verificações de status de aplicativo separadas e associe ambas à instância.
As verificações chegam à instância de dentro da VPC para IPv4 e IPv6.
Verificar os valores de status
Cada verificação individual informa um dos seguintes status:
-
passed: a verificação foi concluída com êxito -
failed: ocorreu falha na verificação. A resposta inclui o código de status HTTP retornado pela aplicação. Para obter orientações de interpretação e remediação, consulte Solução de problemas. -
initializing: a verificação ainda não concluiu sua primeira avaliação -
insufficient-data: a verificação não recebeu dados suficientes para determinar um resultado -
not-applicable: a verificação não está associada à instância
O status geral do aplicativo relatado para a instância agrega todos os resultados de verificação individuais. O status geral tem um dos valores a seguir:
-
ok: todas as verificações aprovadas -
impaired: uma ou mais verificações falharam -
initializing: uma ou mais verificações ainda não concluíram sua primeira avaliação -
insufficient-data: uma ou mais verificações relatam dados insuficientes -
not-applicable: todas as verificações de status do aplicativo associadas são excluídas da agregação -
suppressed: a avaliação da verificação do status do aplicativo é suprimida para a instância
Agregação
Você pode marcar cada verificação de status do aplicativo como incluída ou excluída do status geral da instância. Por padrão, uma verificação é included.
included-
A verificação contribui para o status geral da instância e o Amazon EC2 Auto Scaling a usa.
excluded-
A verificação relata seu status individual, mas não contribui para o status geral da instância, e o Amazon EC2 Auto Scaling não a usa. Use essa configuração para validar uma nova verificação na produção sem afetar o status geral ou acionar substituições do Amazon EC2 Auto Scaling. Esse é o fluxo de trabalho recomendado ao adicionar uma verificação a uma carga de trabalho de produção existente; consulte Testando uma nova verificação do status do aplicativo.
Comece a usar as verificações de status do aplicativo
Pré-requisitos
Antes de criar uma verificação de status do aplicativo, certifique-se de ter o seguinte:
-
Uma VPC com as instâncias que você deseja monitorar.
-
Um endpoint de aplicativo em cada instância que pode responder às solicitações HTTP ou HTTPS na porta e no caminho HTTP que você configurará.
-
Um grupo de segurança em cada instância de destino que permite tráfego de entrada na porta de verificação do grupo de segurança de origem usado pela verificação de status do aplicativo. Consulte Segurança e permissões.
Etapa 1: Configurar seu aplicativo de do
Configure o endpoint do aplicativo para responder às solicitações HTTP ou HTTPS na porta e no caminho HTTP que você especificará ao criar a verificação. Retorne um código de resposta incluído no seu comparador de códigos de status para indicar que o aplicativo está íntegro.
Certifique-se de que o grupo de segurança da instância de destino permita tráfego de entrada na porta de verificação do grupo de segurança de origem usado pela verificação de status do aplicativo. Para caminhos de rede gerenciados, AWS fornece o grupo de segurança de origem na criação da verificação. Para caminhos de rede gerenciados pelo cliente, você especifica o grupo de segurança de origem ao criar a verificação.
Etapa 2: criar uma definição de verificação
Use a AWS CLI para criar uma verificação de status do aplicativo.
Etapa 3: Associar a verificação às instâncias
Associe a verificação às instâncias que você deseja monitorar, por ID da instância ou por tag.
As operações de associação e dissociação retornam resultados de sucesso e falha por instância. Se algumas instâncias não puderem ser associadas (por exemplo, porque a verificação já está associada), essas instâncias aparecerão nos resultados malsucedidos com um motivo.
Etapa 4: visualizar os resultados
Visualize o status de integridade da aplicação por instância.
Opções de configuração
As verificações de status do aplicativo aceitam vários parâmetros de configuração. Esta seção explica os parâmetros em que o comportamento não é evidente a partir do nome do parâmetro. Para obter a lista completa de parâmetros e regras de validação, consulte CreateApplicationStatusCheck e AssociateApplicationStatusCheck na Amazon EC2 API Reference.
Limites de avaliação
FailureThreshold-
O número de solicitações consecutivas com falha antes que a verificação seja marcada como prejudicada. Padrão: 2.
SuccessThreshold-
O número de solicitações consecutivas bem-sucedidas antes de a verificação ser marcada como íntegra novamente. Padrão: 2.
Timeout-
O número de segundos a aguardar por uma resposta antes de a solicitação ser registrada como com falha. Imposta como um tempo limite forçado; se seu aplicativo não responder dentro dessa janela, a solicitação será registrada como uma falha, independentemente da eventual resposta. Padrão: 6 Intervalo válido: de 1 a 90.
Período de carência de inicialização
InitializationGracePeriodSeconds-
O número de segundos a aguardar após uma instância ser iniciada antes de AWS começar a avaliar a verificação. Use esse parâmetro para dar tempo aos aplicativos para começar a escutar antes do início das verificações. Se o período de carência for muito curto, o Amazon EC2 Auto Scaling poderá substituir novas instâncias antes que a aplicação esteja pronta. Padrão: 300 Intervalo válido: de 1 a 600.
Escopo IP
IpScope-
As verificações de status do aplicativo usam o escopo
private; a verificação é executada de dentro da sua VPC. Para IPv4, isso corresponde ao endereço IP privado da instância. Para IPv6, AWS não classifica o endereço como público ou privado; a verificação aceita qualquer endereço IPv6 e o avalia de dentro da sua VPC.
Índice de dispositivos
DeviceIndex-
O índice do dispositivo de rede na sua instância que AWS avalia para a verificação de integridade. Altere isso quando o dispositivo de rede principal da sua instância não for aquele que você deseja verificar. Padrão: 0.
A agregação, a versão IP e os caminhos de verificação de integridade (sub-redes de origem e destino e grupos de segurança) são abordados em suas próprias seções anteriores nesta página.
Configurações padrão
Com caminhos de rede AWS gerenciados, as verificações de status do aplicativo usam os seguintes padrões.
| Configuração | Padrão |
|---|---|
Intervalo de verificação |
60 segundos (fixo; não configurável) |
Limite de falha |
2 falhas consecutivas |
Limite de sucesso |
2 sucessos consecutivos |
Tempo limite |
6 segundos |
Correspondência de códigos de status |
200 |
Caminho HTTP |
/ |
Versão de IP |
ipv4 |
Escopo IP |
privado |
Índice de dispositivos |
0 |
Período de carência de inicialização |
300 segundos |
Agregação |
Incluído |
Sub-redes de origem e grupos de segurança |
Gerenciado pela AWS |
Integração do Amazon EC2 Auto Scaling
O Amazon EC2 Auto Scaling encerra e substitui automaticamente as instâncias cujos relatórios gerais de status do aplicativo reportam impaired, desde que a verificação esteja incluída na agregação. Nenhuma configuração de grupo do Auto Scaling é necessária além de associar a verificação de status do aplicativo às instâncias do grupo.
O Amazon EC2 Auto Scaling usa o status geral da instância, não o status de verificação individual. As verificações marcadas excluded não conduzem ações do Amazon EC2 Auto Scaling. As verificações no estado suppressed não conduzem ações do Amazon EC2 Auto Scaling.
Use o parâmetro InitializationGracePeriodSeconds na verificação para permitir que novas instâncias iniciem antes que as verificações de status do aplicativo comecem. Se o período de carência for muito curto, novas instâncias poderão ser encerradas e substituídas pelo Amazon EC2 Auto Scaling antes que seu aplicativo esteja pronto para atender ao tráfego.
A InitializationGracePeriodSeconds da verificação define quanto tempo depois de uma instância ser iniciada antes que a verificação comece a avaliar o aplicativo. Configure-o para cobrir o tempo de inicialização do seu aplicativo, para que a verificação não relate impaired enquanto o aplicativo ainda estiver sendo inicializado. O período de carência da verificação de integridade do grupo do Auto Scaling é separado. Ele define quanto tempo após uma instância entrar em serviço antes que o Amazon EC2 Auto Scaling a encerre devido a uma falha na verificação de integridade.
Para obter mais informações sobre as verificações de integridade realizadas pelo Amazon EC2 Auto Scaling, consulte Verificações de integridade para instâncias em um grupo do Auto Scaling e Utilize verificações de status de aplicações com um grupo do Auto Scaling no Guia do usuário do Amazon EC2 Auto Scaling.
Lidando com implantação, aplicação de patches no local e substituições
Implantações, patches no local e outras operações de manutenção podem interromper ou reiniciar temporariamente seu aplicativo. Durante esse período, as verificações de status do aplicativo relatam uma falha porque o aplicativo não pode responder às solicitações de verificação de integridade. Se suas instâncias estiverem em um grupo do Auto Scaling com verificações de status do aplicativo incluídas na agregação, o Amazon EC2 Auto Scaling poderá encerrar e substituir essas instâncias, mesmo que a interrupção seja esperada.
Opção A: suprimir a verificação
Use a supressão para janelas de manutenção limitadas, nas quais você sabe a duração. A supressão é imposta no nível da instância. Você especifica uma duração ou a omite para suprimir a verificação até desativar a supressão.
Enquanto suprimido, o status geral do aplicativo para a instância é relatado como suppressed. O Amazon EC2 Auto Scaling não atua em instâncias suppressed.
Opção B: excluir a verificação da agregação
Se você quiser que a verificação continue avaliando e relatando seu status individual, mas não afete o status geral nem acione ações do Amazon EC2 Auto Scaling, defina a configuração de agregação da verificação como excluded. Isso é útil para cenários de longa duração, como lançar uma nova versão de verificação ou validar uma alteração sem correr o risco de substituí-la, e para casos em que você deseja que a telemetria continue sem impacto operacional.
Para obter mais informações, consulte Agregação.
Opção C: Desassociar a verificação
Use a dissociação para remoção por mais tempo ou por tempo indeterminado.
aws ec2 disassociate-application-status-check \ --application-status-check-id asc-1234567890abcdef0 \ --instance-ids i-0123456789abcdef0
Se você associou por tag, remova a tag da instância para desassociar. Após a dissociação, o status geral do aplicativo para a instância é relatado como not-applicable.
Orientação de implantação
As implantações são o cenário de manutenção mais comum que requer supressão. Use a supressão quando sua ferramenta de implantação tiver um gancho de pré-implantação e um gancho de pós-implantação para que você possa suprimir a verificação antes do início da implantação e desabilitar a supressão após a conclusão da implantação.
O padrão geral é:
-
No gancho de pré-implantação, chame enable-application-status-check-suppression para a instância, com uma duração que cubra a janela de implantação esperada.
-
Execute a implantação.
-
No gancho de pós-implantação, chame disable-application-status-check-suppression para a instância.
Se sua ferramenta de implantação não tiver ganchos, conduza a supressão a partir do pipeline de CI/CD que invoca a implantação.
Testando uma nova verificação do status do aplicativo
Você pode validar uma nova verificação do status do aplicativo na produção antes que ela comece a contribuir para o monitoramento em nível de instância. Defina a configuração de agregação como excluded quando você criar a verificação e confirme se ela reporta o status esperado e os códigos de resposta HTTP. Quando estiver pronto, altere a configuração para included para que a verificação contribua para o status geral da instância e se integre ao Amazon EC2 Auto Scaling.
-
Crie a verificação com a configuração de agregação definida como
excluded.aws ec2 create-application-status-check \ --protocol https \ --port 443 \ --path "/health" \ --status-code-matcher "200" \ --aggregation excluded -
Associe a verificação a uma instância de teste ou a um subconjunto da sua frota de produção.
-
Aguarde pelo menos dois intervalos de verificação (aproximadamente dois minutos) para permitir que a verificação conclua uma avaliação inicial.
-
Use describe-application-status para verificar se a verificação está relatando o status esperado e o código de resposta HTTP.
aws ec2 describe-application-status \ --instance-ids i-0123456789abcdef0 -
Se a verificação for relatada conforme o esperado, atualize a configuração de agregação para
includedpara fazer com que a verificação contribua para o status geral da instância e conduza as ações do Amazon EC2 Auto Scaling.aws ec2 modify-application-status-check \ --application-status-check-id asc-1234567890abcdef0 \ --aggregation included
Rede avançada
As verificações de status do aplicativo se originam de uma ENI gerenciada na sub-rede de origem e no grupo de segurança que você especifica (ou que AWS seleciona para você). Para cargas de trabalho que exigem maior disponibilidade do que a fornecida por uma configuração de fonte única ou para cargas de trabalho executadas em Zonas Locais ou Outposts, considere os padrões a seguir.
Monitoramento entre zonas de disponibilidade
Para redundância de Zona de Disponibilidade, é possível executar verificações de integridade em mais de uma Zona de Disponibilidade. Com caminhos de rede gerenciados pelo cliente, você define caminhos de verificação de integridade cujas origens estão em duas zonas de disponibilidade diferentes que alcançam as mesmas instâncias de destino, usando o parâmetro --health-check-paths. O monitoramento de duas zonas de disponibilidade mantém os relatórios de integridade de suas instâncias contínuos, mesmo que uma zona de disponibilidade fique indisponível.
O exemplo a seguir cria uma verificação com dois caminhos de verificação de integridade cujas origens estão em zonas de disponibilidade diferentes, ambas alcançando as mesmas instâncias 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 Locais
Para instâncias executadas em Zonas AWS Locais, a interface de rede elástica gerenciada (ENI) reside na AWS região principal, não na Zona Local. O tráfego de verificação de integridade entre a região principal e suas instâncias de Zona Local atravessa o link de serviço da Zona Local, o que pode gerar cobranças adicionais de transferência de dados.
Práticas recomendadas
-
Projete seu endpoint de integridade para refletir a integridade do aplicativo em execução nessa instância. Quando seu endpoint retorna a integridade com base no próprio aplicativo, o Amazon EC2 Auto Scaling substitui somente as instâncias que estão realmente comprometidas. Se a resposta do endpoint também depender de um recurso compartilhado, como um banco de dados ou um serviço downstream, um problema com esse recurso pode fazer a verificação falhar em várias instâncias ao mesmo tempo. Isso pode acionar uma substituição em toda a frota. Para obter orientação sobre como criar endpoints de verificação de integridade, consulte Implementação de verificações de integridade
na Amazon Builders' Library. -
Proteja-se contra falhas correlacionadas. Uma verificação incluída impulsiona a substituição do Amazon EC2 Auto Scaling. Uma verificação que falha em várias instâncias ao mesmo tempo pode desencadear uma onda de substituições. Defina uma política de manutenção de instâncias no seu grupo do Auto Scaling para limitar quantas instâncias são substituídas ao mesmo tempo. Para obter mais informações, consulte Política de manutenção de instância no Guia do usuário do Amazon EC2 Auto Scaling.
-
Alarme na contagem de instâncias prejudicadas. Crie um alarme do Amazon CloudWatch na métrica
StatusCheckFailed_Applicationem toda a sua frota. Um aumento repentino em muitas instâncias indica uma dependência compartilhada, em vez de falhas de instâncias individuais, e dá tempo para responder antes que as substituições ocorram em cascata. Para obter mais informações, consulte Monitorar verificações de status do aplicativo. -
Permaneça dentro da cota da sua interface de rede. As verificações de status do aplicativo criam interfaces de rede gerenciadas que são contabilizadas na cota de interfaces de rede por região. AWS impõe essa cota por zona de disponibilidade. Monitore seu uso para que uma frota crescente não atinja a cota. Se isso acontecer, AWS não poderá criar novas interfaces. Para obter orientações relacionadas ao alarme de cota, consulte Cotas.
-
Trate as permissões de verificação de status como controladas por alterações. As ações do IAM que criam, modificam, excluem, associam, desassociam e suprimem as verificações de status do aplicativo podem afetar a disponibilidade da instância. Essas ações determinam o que impulsiona a substituição do Amazon EC2 Auto Scaling. Trate ações como
ec2:CreateApplicationStatusCheck,ec2:AssociateApplicationStatusCheck,ec2:ModifyApplicationStatusCheck, eec2:EnableApplicationStatusCheckSuppressioncomo controladas por mudanças, em vez de concedê-las como parte do acesso geral ao Amazon EC2. Para obter a lista completa de ações, consulte a Referência da API do Amazon EC2.
Solução de problemas
Quando uma verificação de status de um aplicativo indicar que está danificado, mas você espera que seu aplicativo esteja íntegro, verifique cada um dos seguintes itens:
-
Acessibilidade de instâncias. Confirme se as verificações de status da instância e do sistema são
ok. -
Regra de entrada do grupo de segurança. O grupo de segurança da instância de destino deve permitir tráfego de entrada na porta de verificação do grupo de segurança de origem usado pela verificação de status do aplicativo. Para caminhos de rede AWS gerenciados, AWS fornece o grupo de segurança de origem; para caminhos de rede gerenciados pelo cliente, use o grupo de segurança que você especificou como origem.
-
Firewall do host. Qualquer firewall em nível de host (iptables, Firewall do Windows, firewall de host de terceiros) na instância deve permitir tráfego de entrada na porta de verificação.
-
Endpoint do aplicativo. O aplicativo deve estar escutando na porta e no caminho que você configurou. Confirme com uma solicitação local da instância (
curl http://localhost:PORT/PATH). -
Incompatibilidade de protocolos. Se a verificação estiver configurada como HTTPS, mas o endpoint servir somente HTTP (ou vice-versa), todas as chamadas falharão.
-
Correspondência de código de status. Confirme se o código de resposta real do seu aplicativo está incluído na correspondência de código de status que você configurou.
-
Caminho de rede. Se você configurou caminhos de rede gerenciados pelo cliente, confirme se a sub-rede de origem e o grupo de segurança têm conectividade com a sub-rede de destino. Use o VPC Reachability Analyzer para rastrear o caminho da rede.
-
Cota de ENI disponível. AWS cria uma interface de rede elástica gerenciada (ENI) em sua conta para cada combinação de sub-rede de origem e grupo de segurança. Confirme se sua conta não atingiu a cota de interfaces de rede por região, que é aplicada por zona de disponibilidade. Se sua conta atingiu essa cota, AWS não é possível criar a ENI gerenciada e a verificação não pode ser executada. Para obter mais informações, consulte as Amazon VPC cotas.
Códigos de motivo
A resposta describe-application-status inclui um motivo para cada verificação. O motivo contém o código de status HTTP retornado pelo seu aplicativo (como um número), junto com o protocolo usado para a verificação. Uma verificação é marcada passed se o código de status retornado está incluído no seu comparador de códigos de status e failed caso contrário.
O motivo também inclui um código de motivo e, para resultados em nível de HTTP, o protocolo e o código de status HTTP retornado. O motivo contém os seguintes campos:
Code-
O código do motivo para o resultado da verificação do status do aplicativo. Um dos seguintes valores:
-
ResponseCodeMatched: o código de status HTTP retornado pela verificação de integridade correspondeu ao configuradoStatusCodeMatcher. -
ResponseCodeMismatch: o código de status HTTP retornado pela verificação de integridade não correspondeu ao configuradoStatusCodeMatcher. -
ConnectionTimeout: a conexão com o destino atingiu o tempo limite. -
ResponseTimeout: a verificação de integridade atingiu o tempo limite enquanto aguardava uma resposta do alvo. -
ConnectionRefused: o alvo recusou a conexão de verificação de integridade. -
ConnectionReset: a conexão de verificação de integridade foi redefinida antes do recebimento de uma resposta.
Para
ResponseCodeMatchedeResponseCodeMismatch, o campoStatusCodecontém o código de status HTTP retornado e o campoProtocolcontém o protocolo usado para a verificação de integridade. Para erros de conexão, comoConnectionTimeout,ResponseTimeout,ConnectionRefusedeConnectionReset, os camposStatusCodeeProtocolnão estão presentes. -
Protocol-
O protocolo usado para a verificação de integridade. Um de
HTTPouHTTPS. StatusCode-
O código de status HTTP retornado pela verificação de integridade.
Use o código de status HTTP retornado para identificar por que uma verificação falhou. Alguns exemplos comuns:
| Código de status HTTP | Significado típico | Correção comum |
|---|---|---|
|
O aplicativo retornou uma resposta bem-sucedida. |
Nenhum. Normalmente, esse é um status íntegro. |
|
O aplicativo retornou um redirecionamento. As chamadas de verificação de integridade não seguem redirecionamentos. |
Aponte o caminho da verificação de integridade para o destino do redirecionamento ou adicione o código de redirecionamento ao seu comparador de códigos de status se você o considerar íntegro. |
|
O aplicativo exige autenticação ou acesso negado ao caminho de verificação de integridade. |
Configure o caminho da verificação de integridade para não ser autenticado ou realize verificações de integridade em um caminho que não exija credenciais. |
|
O caminho de verificação de integridade configurado não foi encontrado no aplicativo. |
Confirme se o caminho corresponde a uma rota que seu aplicativo serve. |
|
O aplicativo retornou um erro interno do servidor. |
Investigue os registros do aplicativo na instância. |
|
O aplicativo está acessível, mas relata problemas de upstream ou de capacidade. |
Investigue a integridade, as dependências e a capacidade do aplicativo. Se o aplicativo retornar esses códigos durante a inicialização, aumente |
Para ver a estrutura completa de ApplicationStatusReason, consulte ApplicationStatusReason na Amazon EC2 API Reference.
Equívocos comuns
-
O grupo de segurança não permite tráfego de entrada da fonte de verificação de integridade na porta de verificação.
-
O aplicativo está vinculado a
127.0.0.1e não está escutando na interface de rede. -
O caminho da verificação de integridade retorna um redirecionamento (301, 302) em vez de uma resposta bem-sucedida, e o comparador do código de status não inclui o código de redirecionamento.
-
A verificação está configurada para HTTPS, mas o aplicativo serve apenas HTTP, ou vice-versa.
-
O aplicativo leva mais tempo para iniciar do que o valor de
InitializationGracePeriodSeconds, e o Amazon EC2 Auto Scaling substitui a instância antes que ela esteja pronta.
Monitorar verificações de status do aplicativo
Você pode monitorar as verificações de status do aplicativo de três formas:
-
Amazon CloudWatch. A métrica
StatusCheckFailed_Applicationreflete o status geral do aplicativo para a instância e pode gerar alarmes. A métrica é agregada por instância em todas as verificações associadas cuja configuração de agregação éincluded. O CloudWatch também publica uma métrica por verificação para cada verificação associada, chamadaStatusCheckFailed_Application_.application-status-check-id -
describe-instance-status. Retorna o status geral do aplicativo junto com outras informações de status da sua instância.
-
describe-application-status. Retorna resultados detalhados por instância, incluindo o status individual de cada verificação associada e o código de status HTTP retornado pela aplicação.
Use a métrica do CloudWatch para automação baseada em alarmes. Use describe-instance-status quando você já o consulta para saber o status da instância. Use describe-application-status para obter visibilidade detalhada por verificação.
Segurança e permissões
AWS cria e gerencia as interfaces de rede usadas para verificações de status do aplicativo por meio de uma função vinculada ao serviço. Nenhuma configuração do IAM é necessária para que o serviço crie essas ENIs. O perfil vinculado ao serviço usa a política gerenciada EC2ApplicationStatusChecksServiceRolePolicy da AWS.
Para criar, associar, descrever, excluir e suprimir você mesmo as verificações de status do aplicativo, seu usuário ou função do IAM precisa das permissões correspondentes do Amazon EC2. Consulte a Referência da API do Amazon EC2 para obter a lista completa de ações.
O grupo de segurança da instância deve permitir tráfego de entrada do grupo de segurança de origem da verificação de integridade na porta que você configurou. Com caminhos de rede AWS gerenciados, AWS fornece o grupo de segurança de origem; com caminhos de rede gerenciados pelo cliente, use o grupo de segurança que você especificou como origem.
Preços
As verificações de status do aplicativo são faturadas nos seguintes componentes:
-
Uma cobrança por hora de USD 0,01 para cada interface de rede elástica gerenciada (ENI), por zona de disponibilidade.
-
Os preços padrão do Amazon CloudWatch se aplicam às métricas de verificação do status do aplicativo.
Cotas
As verificações do status do aplicativo estão sujeitas às cotas de serviço do AWS. Para os nomes das cotas, valores padrão e descrições, consulte Endpoints e cotas do Amazon EC2 na AWSReferência geral.
Além das cotas de serviço do AWS que afetam as interfaces de rede gerenciadas, as verificações de status do aplicativo têm as seguintes cotas de serviço. Você pode visualizar seu uso e solicitar aumentos no console do Service Quotas.
Nessas cotas, um destino é uma única instância monitorada por uma verificação de integridade. Se mais de uma verificação de integridade monitorar uma instância, cada emparelhamento de instância e verificação de integridade contará como um destino separado. Uma associação é uma regra de tag única ou um único ID de instância que você associa a uma verificação de integridade. Cada regra ou ID de instância conta como uma associação, independentemente de quantas instâncias ela resolve.
| Quota | Padrão | Ajustável |
|---|---|---|
Verificações de integridade por conta |
50 |
Sim, automaticamente |
Associações por verificação de integridade |
50 |
Sim, automaticamente |
Associações por conta |
200 |
Sim, automaticamente |
Destinos por conta |
5.000 |
Sim, a pedido |
A maioria dos aumentos de cota é aprovada automaticamente. Um aumento nos destinos por conta exige uma solicitação e aprovação manual.
Importante
Se o número de destinos em sua conta exceder a cota de destinos por conta, os destinos acima do limite não serão monitorados e não relatarão o status do aplicativo. Para evitar lacunas no monitoramento, mantenha a contagem de destinos dentro da cota ou solicite um aumento.
Recomendamos que você crie um alarme do Amazon CloudWatch sobre o uso da cota de verificações de status do aplicativo para que você seja notificado antes de atingir uma cota. O Service Quotas publica métricas de uso no namespace AWS/Usage no CloudWatch, que você pode usar para criar o alarme.