Monitoramento e relatório de integridade aprimorada - AWS Elastic Beanstalk

Monitoramento e relatório de integridade aprimorada

Os relatórios de integridade aprimorada são um recurso que pode ser habilitado no ambiente para permitir que o AWS Elastic Beanstalk obtenha informações adicionais sobre os recursos no ambiente. O Elastic Beanstalk analisa as informações reunidas para fornecer uma visão melhor da integridade geral do ambiente e ajudar na identificação de problemas que podem fazer com que a aplicação se torne indisponível.

Além das alterações na forma como as cores de integridade funcionam, a integridade aprimorada adiciona um descritor de status que fornece um indicador da gravidade dos problemas observados quando um ambiente está amarelo ou vermelho. Quando mais informações sobre o status atual estiverem disponíveis, você poderá escolher o botão Causes para ver informações detalhadas de integridade na página de integridade.


      A página de visão geral do ambiente do Elastic Beanstalk do console do Elastic Beanstalk mostrando um status de integridade aprimorado

Para fornecer informações de integridade detalhadas sobre as instâncias do Amazon EC2 em execução no ambiente, o Elastic Beanstalk inclui um agente de integridade na Imagem de máquina da Amazon (AMI) para cada versão de plataforma compatível com a integridade aprimorada. O agente de integridade monitora os logs de servidor da Web e as métricas do sistema, e os transmite para o serviço do Elastic Beanstalk. O Elastic Beanstalk analisa essas métricas e dados do Elastic Load Balancing e do Auto Scaling do Amazon EC2 para fornecer uma visão geral da integridade de um ambiente.

Além de coletar e apresentar informações sobre os recursos de ambiente, o Elastic Beanstalk monitora os recursos no ambiente em busca de várias condições de erro e fornece notificações para ajudar você a evitar falhas e resolver problemas de configuração. Os fatores que influenciam a integridade do seu ambiente incluem os resultados de cada solicitação atendida pelo seu aplicativo, as métricas do sistema operacional de suas instâncias e o status da implantação mais recente.

É possível visualizar o status de integridade em tempo real usando a página visão geral do ambiente do console do Elastic Beanstalk ou o comando eb health na Interface de Linhas de Comando do Elastic Beanstalk (CLI do EB). Para registrar e controlar a integridade de ambientes e instâncias ao longo do tempo, é possível configurar seu ambiente para publicar as informações obtidas pelo Elastic Beanstalk para os relatórios de integridade aprimorada no Amazon CloudWatch como métricas personalizadas. As cobranças do CloudWatch pelas métricas personalizadas se aplicam a todas as métricas exceto a EnvironmentHealth, que é gratuita.

Os relatórios de integridade aprimorada exigem uma versão 2 ou mais recente da versão de plataforma. Para monitorar os recursos e publicar as métricas, o ambiente deve ter um perfil de instância e uma função de serviço. A plataforma do Docker de vários contêineres não inclui um servidor web por padrão, mas poderá ser usada com relatórios de integridade aprimorada se você configurar o servidor web para fornecer logs no formato apropriado.

Notas da plataforma Windows
  • Esse recurso não está disponível em versões da plataforma Windows Server anteriores à versão 2 (v2).

  • Ao habilitar os relatórios de integridade aprimorada em um ambiente do Windows Server, não altere a configuração de log do IIS. Para o monitoramento de integridade aprimorada funcionar corretamente, o registro do IIS deve ser configurado com o formato W3C e os destinos de evento de log ETW event only (Evento ETW somente) ou Both log file and ETW event (Arquivo de log e evento ETW).

    Além disso, não desabilite nem interrompa o serviço do Windows do agente de integridade do Elastic Beanstalk em nenhuma das instâncias do ambiente. Para coletar e relatar informações de integridade aprimorada em uma instância, esse serviço deve estar habilitado e em execução.

A integridade aprimorada requer que o ambiente tenha um perfil de instância. O perfil de instância deve ter funções que forneçam permissões para que as instâncias do ambiente coletem e relatem informações sobre a integridade aprimorada. Ao criar pela primeira vez um ambiente com uma versão de plataforma v2 no console do Elastic Beanstalk, o Elastic Beanstalk solicita que as funções necessárias sejam criadas e habilita os relatórios de integridade avançada por padrão. Continue lendo para obter detalhes sobre como os relatórios de integridade aprimorada funcionam ou consulte Habilitar relatórios de integridade aprimorada do Elastic Beanstalk para começar a usá-los imediatamente.

As plataformas do Amazon Linux 2 exigem perfis de instância, para que possam dar suporte incondicional à integridade aprimorada. Quando é criado um ambiente usando uma plataforma do Amazon Linux 2, o Elastic Beanstalk sempre habilita a integridade aprimorada. Isso se aplica independentemente de como você cria o ambiente: usando o console do Elastic Beanstalk, a CLI do EB, a CLI da AWS ou a API.

Agente de integridade do Elastic Beanstalk

O agente de integridade do Elastic Beanstalk é um processo daemon (ou serviço, em ambientes do Windows) que é executado em cada instância do Amazon EC2 no ambiente, monitorando as métricas de integridade em nível de sistema operacional e aplicação e relatando os problemas para o Elastic Beanstalk. O agente de integridade está incluído em todas as versões da plataforma, a partir da versão 2.0 de cada plataforma.

O agente de saúde relata métricas semelhantes às publicadas no CloudWatch pelo Auto Scaling do Amazon EC2 e Elastic Load Balancing como parte dos relatórios básicos de integridade, incluindo carga de CPU, códigos HTTP e latência. O agente de integridade, no entanto, relata diretamente ao Elastic Beanstalk, com maior granularidade e frequência do que os relatórios de integridade básica.

Para a integridade básica, essas métricas são publicados a cada cinco minutos e podem ser monitoradas com gráficos no console de gerenciamento do ambiente. Com a integridade aprimorada, o agente de integridade do Elastic Beanstalk relata métricas para o Elastic Beanstalk a cada 10 segundos. O Elastic Beanstalk usa as métricas fornecidas pelo agente de integridade para determinar o status de integridade de cada instância no ambiente e, combinadas com outros fatores, para determinar a integridade geral do ambiente.

A integridade geral do ambiente pode ser visualizada em tempo real na página de visão geral do ambiente do console do Elastic Beanstalk e é publicada no CloudWatch pelo Elastic Beanstalk a cada 60 segundos. É possível visualizar as métricas detalhadas relatadas pelo agente de integridade em tempo real com o comando eb health na CLI do EB.

Mediante um custo adicional, você pode optar por publicar métricas individuais em nível de instância e ambiente no CloudWatch a cada 60 segundos. As métricas publicadas no CloudWatch podem ser usadas para criar gráficos de monitoramento no console de gerenciamento de ambiente.

Os relatórios de integridade aprimorada gerarão cobrança apenas se você optar por publicar métricas de integridade aprimorada no CloudWatch. Quando você usa a integridade aprimorada, ainda tem as métricas de integridade básica publicadas gratuitamente, mesmo se optar por não publicar as métricas de integridade aprimorada.

Consulte Métricas de instância para obter detalhes sobre as métricas relatadas pelo agente de integridade. Para obter detalhes sobre a publicação de métricas de integridade aprimorada no CloudWatch, consulte Publicar métricas personalizadas do Amazon CloudWatch para um ambiente.

Fatores que determinam a integridade de instâncias e ambientes

Além das verificações do sistema de relatórios de integridade básica, incluindo o Verificações de integridade do Elastic Load Balancing e o monitoramento de recursos, os relatórios de integridade aprimorada do Elastic Beanstalk coletam dados adicionais sobre o estado das instâncias no ambiente. Isso inclui métricas de sistema operacional, logs de servidor e o estado de operações contínuas de ambiente, como implantações e atualizações. O serviço de relatório de integridade do Elastic Beanstalk combina informações de todas as origens disponíveis e as analisa para determinar a integridade geral do ambiente.

Operações e comandos

Quando você executa uma operação no ambiente, como a implantação de uma nova versão de uma aplicação, o Elastic Beanstalk faz várias alterações que afetam o status de integridade do ambiente.

Por exemplo, quando você implanta uma nova versão de um aplicativo em um ambiente que está executando várias instâncias, você pode ver mensagens semelhantes à seguinte ao monitorar a integridade do ambiente com a CLI do 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

Neste exemplo, o status geral do ambiente é Ok e a causa desse status é que o comando está sendo executado em 3 de 5 instâncias. Três das instâncias no ambiente têm o status Pendente, indicando que há uma operação em andamento.

Quando uma operação é concluída, o Elastic Beanstalk relata as informações adicionais sobre ela. Por exemplo, o Elastic Beanstalk exibe as informações a seguir sobre uma instância que já foi atualizada com a nova versão da aplicação:

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

As informações de integridade da instância também incluem detalhes sobre a implantação mais recente a cada instância em seu ambiente. Cada instância relata um ID de implantação e o status. O ID de implantação é um número inteiro que aumenta em um a cada vez que você implanta uma nova versão do aplicativo ou altera as definições das opções de configuração na instância, como as variáveis de ambiente. Você pode usar as informações de implantação para identificar as instâncias que estão executando a versão incorreta de seu aplicativo após uma falha de implantação contínua.

Na coluna de causa, o Elastic Beanstalk inclui mensagens informativas sobre operações bem-sucedidas e outros estados de integridade em várias verificações de integridade, mas elas não são mantidas indefinidamente. As causas para status de não integridade no ambiente são mantidas até o ambiente retornar a um status de integridade.

Tempo de espera do comando

O Elastic Beanstalk aplica um tempo de espera do comando a partir do momento que uma operação começa para permitir que uma instância faça a transição para um estado de integridade. Esse tempo de espera do comando é definido na configuração de implantação e atualização do ambiente (no namespace aws: elasticbeanstalk:command) e o padrão é 10 minutos.

Durante atualizações contínuas, o Elastic Beanstalk aplica um tempo de espera separado para cada lote na operação. Esse tempo de espera é definido como parte da configuração de atualização contínua do ambiente (no namespace aws:autoscaling:updatepolicy:rollingupdate). Se todas as instâncias no lote estiverem íntegras dentro do tempo de espera do comando, a operação prosseguirá para o próximo lote. Se não, a operação falha.

nota

Caso a aplicação não passe nas verificações de integridade com um status OK, mas esteja estável em outro nível, você poderá definir a opção HealthCheckSuccessThreshold no aws:elasticbeanstalk:command namespace para alterar o nível no qual o Elastic Beanstalk considera uma instância como íntegra.

Para que um ambiente de servidor web seja considerado íntegro, cada instância no ambiente ou no lote deve passar por 12 verificações de integridade consecutivas ao longo de dois minutos. Para um ambiente do nível de operador, cada instância deve passar por 18 verificações de integridade. Antes de o comando atingir o tempo limite, o Elastic Beanstalk não reduz o status de integridade de um ambiente quando a verificação de integridade falha. Se as instâncias no ambiente se tornarem íntegras dentro do tempo limite do comando, a operação será bem-sucedida.

Solicitações HTTP

Quando nenhuma operação está em andamento em um ambiente, a origem principal de informações sobre a integridade do ambiente e da instância são os logs do servidor web de cada instância. Para determinar a integridade de uma instância e a integridade geral do ambiente, o Elastic Beanstalk considera o número de solicitações, o resultado de cada uma e a velocidade com que cada solicitação foi resolvida.

Em plataformas Linux, o Elastic Beanstalk lê e analisa logs do servidor Web para obter informações sobre solicitações HTTP. Na plataforma Windows Server, o Elastic Beanstalk recebe essas informações diretamente do servidor Web do IIS.

O ambiente pode não ter um servidor web ativo. Por exemplo, a plataforma do Docker de vários contêineres não inclui um servidor web. Outras plataformas incluem um servidor web e o aplicativo pode desabilitá-lo. Nesses casos, o ambiente exige configuração adicional para fornecer ao agente de integridade do Elastic Beanstalk os logs no formato necessário para que as informações de integridade sejam retransmitidas ao serviço do Elastic Beanstalk. Para obter mais detalhes, consulte Formato de log de integridade aprimorado.

Métricas do sistema operacional

O Elastic Beanstalk monitora as métricas do sistema operacional relatadas pelo agente de integridade para identificar as instâncias que são consistentemente baixas em recursos do sistema.

Consulte Métricas de instância para obter detalhes sobre as métricas relatadas pelo agente de integridade.

Personalização de regra de verificação de integridade

Os relatórios de integridade aprimorada do Elastic Beanstalk dependem de um conjunto de regras para determinar a integridade do ambiente. Algumas dessas regras podem não ser adequadas para o seu aplicativo. Um caso comum é um aplicativo que retorna erros HTTP 4xx frequentes por padrão. O Elastic Beanstalk, usando uma de suas regras padrão, conclui que algo está errado e altera o status de integridade do ambiente de OK para Warning (Aviso), Degraded (Reduzido) ou Severe (Grave), de acordo com a taxa de erros. Para lidar com esse caso corretamente, o Elastic Beanstalk permite configurar essa regra e ignorar erros de HTTP 4xx da aplicação Para obter mais detalhes, consulte Configurar as regras de integridade aperfeiçoada de um ambiente.

Funções de integridade aperfeiçoada

Os relatórios de integridade aperfeiçoada requerem duas funções: uma função de serviço para o Elastic Beanstalk e um perfil de instância para o ambiente. A função de serviço permite que o Elastic Beanstalk interaja com outros serviços da AWS em seu nome para coletar informações sobre os recursos no ambiente. O perfil de instância permite que as instâncias no ambiente gravem logs no Amazon S3 e comuniquem informações de integridade aprimoradas ao serviço do Elastic Beanstalk.

Quando você cria um ambiente do Elastic Beanstalk usando o console do Elastic Beanstalk ou a CLI do EB, o Elastic Beanstalk cria uma função de serviço padrão e anexa as políticas gerenciadas necessárias a um perfil de instância padrão para o ambiente.

Se você usar a API, um SDK ou a CLI da AWS para criar ambientes, deverá criar essas funções antecipadamente e especificá-las durante a criação do ambiente para usar integridade aprimorada. Para obter instruções sobre a criação de funções adequadas para seus ambientes, consulte Funções de serviço, perfis de instância e políticas de usuário.

Recomendamos que você use políticas gerenciadas para o perfil de instância e a função de serviço. As políticas gerenciadas são políticas do AWS Identity and Access Management (IAM) mantidas pelo Elastic Beanstalk. O uso de políticas gerenciadas garante que o ambiente tenha todas as permissões necessárias para funcionar corretamente.

Para o perfil de instância, você pode usar a política gerenciada AWSElasticBeanstalkWebTier ou AWSElasticBeanstalkWorkerTier, para um ambiente de nível de servidor Web ou de nível de operador, respectivamente. Para obter detalhes sobre essas duas políticas gerenciadas de perfil de instância, consulte Gerenciar perfis de instância do Elastic Beanstalk.

Autorização de integridade aprimorada

As políticas gerenciadas do perfil de instância do Elastic Beanstalk contêm permissão para a ação elasticbeanstalk:PutInstanceStatistics. Essa ação não faz parte da API do Elastic Beanstalk. Ela faz parte de uma API diferente que as instâncias de ambiente usam internamente para transmitir informações de integridade aprimoradas para o serviço do Elastic Beanstalk. Você não chama essa API diretamente.

Por padrão, a autorização para a ação elasticbeanstalk:PutInstanceStatistics não está habilitada. Portanto, não é necessário permiti-la para os recursos de aplicação e de ambiente no perfil de instância, como ocorre com a política gerenciada. Para aumentar a segurança do ambiente e ajudar a impedir a falsificação de dados de integridade em seu nome, recomendamos que você defina a opção EnhancedHealthAuthEnabled no namespace aws:elasticbeanstalk:healthreporting:system como true. É possível configurar essa opção usando uma configuração de opção em um arquivo de configuração.

Se você habilitar a autorização para elasticbeanstalk:PutInstanceStatistics usando a opção EnhancedHealthAuthEnabled e usar políticas gerenciadas para o perfil de instância, não há mais nada que você precise fazer; nossas políticas gerenciadas abrangem a autorização necessária. Se você usar um perfil de instância personalizado em vez de uma política gerenciada, o ambiente poderá mostrar o status de integridade No Data (Nenhum dado). Isso acontece porque as instâncias não estão autorizadas para a ação que comunica dados de integridade aprimorados ao serviço. Para autorizar a ação, inclua a instrução a seguir no perfil de instância.

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

Eventos de integridade aprimorada

O sistema de integridade aprimorada gera eventos quando um ambiente alterna entre estados. O exemplo a seguir mostra eventos gerados pela transição de um ambiente entre os estados Info (Informações), OK e Severe (Grave).


        A página de visão geral do ambiente do Elastic Beanstalk do console do Elastic Beanstalk mostrando eventos recentes de integridade aprimorada

Quando ocorre uma transição para um estado pior, o evento de integridade aprimorada inclui uma mensagem indicando a causa da transição.

Nem todas as alterações no status em um nível de instância fazem com que o Elastic Beanstalk gere um evento. Para evitar alarmes falsos, o Elastic Beanstalk gerará um evento relacionado à integridade somente se um problema persistir em várias verificações.

As informações de integridade em tempo real no nível do ambiente, incluindo status, cor e causa, estão disponíveis na página de visão geral do ambiente do console do Elastic Beanstalk e na CLI do EB. Ao anexar a CLI do EB ao ambiente e executar o comando eb health, você também poderá visualizar o status em tempo real de cada uma das instâncias no ambiente.

Comportamento dos relatórios de integridade aprimorada durante as atualizações, as implantações e a escalabilidade

Habilitar os relatórios de integridade aprimorada pode afetar como seu ambiente se comporta durante atualizações e implantações de configuração. O Elastic Beanstalk não concluirá um lote de atualizações até que todas as instâncias passem nas verificações de integridade de forma consistente. Além disso, como os relatórios de integridade aprimorada aplicam um critério mais rigoroso de integridade e monitoram mais fatores, as instâncias que passam na verificação de integridade do ELB dos relatórios de integridade básica não passarão necessariamente com os relatórios de integridade aprimorada. Consulte os tópicos sobre atualizações de configuração contínuas e implantações contínuas para obter detalhes sobre como as verificações de integridade afetam o processo de atualização.

Os relatórios de integridade aprimorada também podem destacar a necessidade de definir um URL de verificação de integridade adequado para o Elastic Load Balancing. Quando seu ambiente expandir para atender à demanda, novas instâncias começarão a atender solicitações assim que passarem por verificações de integridade do ELB suficientes. Se não for configurado um URL de verificação de integridade, isso poderá levar apenas 20 segundos após uma nova instância ser capaz de aceitar uma conexão TCP.

Se o seu aplicativo não tiver concluído a inicialização até o momento em que o load balancer o declarar íntegro o suficiente para receber tráfego, você verá um afluxo de solicitações falhadas e seu ambiente começará a não passar nas verificações de integridade. Um URL de verificação de integridade que atinge um caminho fornecido pelo aplicativo pode evitar esse problema. As verificações de integridade do ELB não passarão até que uma solicitação GET para o URL da verificação de integridade retorne um código de status 200.