O Elastic Observability monitora métricas de serviços da AWS em apenas alguns minutos? É isso mesmo?

blog-charts-packages.png

A transição para aplicações distribuídas está em pleno andamento, impulsionada principalmente pela nossa necessidade de estarmos “sempre conectados” como consumidores e empresas em ritmo acelerado. Essa necessidade está levando as implantações a ter requisitos mais complexos, além da capacidade de serem globalmente diversificadas e inovarem rapidamente.

A nuvem está se tornando a opção de implantação de fato para as aplicações atuais. Muitas implantações na nuvem optam por hospedar suas aplicações na AWS devido ao conjunto globalmente diversificado de regiões que ela cobre e à infinidade de serviços (para desenvolvimento e inovação mais rápidos) disponíveis, bem como para reduzir os custos operacionais e de capital. Na AWS, as equipes de desenvolvimento estão encontrando valor adicional na migração para o Kubernetes no Amazon EKS, testando as mais recentes opções sem servidor e aprimorando as aplicações tradicionais em camadas com serviços melhores.

O Elastic Observability oferece 30 integrações prontas para uso para serviços da AWS, e outras ainda serão lançadas.

Uma rápida revisão destacando algumas das integrações e funcionalidades pode ser encontrada em um post anterior:

Outros posts sobre as principais integrações de serviços da AWS no Elastic:

Uma lista completa de integrações da AWS pode ser encontrada na documentação online da Elastic:

Além das nossas integrações nativas da AWS, o Elastic Observability agrega não apenas logs, mas também métricas para serviços e aplicações da AWS executadas em serviços de computação da AWS (EC2, Lambda, EKS/ECS/Fargate). Todos esses dados podem ser analisados de forma visual e mais intuitiva usando as funcionalidades avançadas de machine learning da Elastic, que ajudam a detectar problemas de desempenho e revelar as causas raiz antes que os usuários finais sejam afetados.

Para obter mais detalhes sobre como o Elastic Observability fornece funcionalidades de monitoramento de performance de aplicação (APM) como mapas de serviço, tracing, dependências e correlações de métricas baseadas em ML:

É isso mesmo: a Elastic oferece ingestão, agregação e análise de métricas para serviços e aplicações da AWS em serviços de computação da AWS (EC2, Lambda, EKS/ECS/Fargate). A Elastic é mais do que logs: ela oferece uma solução unificada de observabilidade para ambientes da AWS.

Neste post, analisarei como o Elastic Observability pode monitorar métricas de uma aplicação simples da AWS em execução em serviços da AWS que incluem:

  • AWS EC2
  • AWS ELB
  • AWS RDS (AuroraDB)
  • Gateways NAT da AWS

Como você verá, uma vez instalada a integração, as métricas chegarão instantaneamente, e você poderá começar a analisá-las imediatamente.

Pré-requisitos e configuração

Se você planeja seguir este post, aqui estão alguns dos componentes e detalhes que usamos para configurar esta demonstração:

Visão geral da aplicação de três camadas

Antes de nos aprofundarmos na configuração do Elastic, vamos rever o que estamos monitorando. Ao seguir as instruções para aws-two-tier-web-architecture-workshop, você terá o seguinte implantado:

O que está implantado:

  • 1 VPC com 6 sub-redes
  • 2 AZs
  • 2 servidores web por AZ
  • 2 servidores de aplicação por AZ
  • 1 balanceador de carga de aplicação externo
  • 1 balanceador de carga de aplicação interno
  • 2 gateways NAT para gerenciar o tráfego para a camada de aplicação
  • 1 gateway de internet
  • 1 RDS Aurora DB com uma réplica de leitura

No final do post, também forneceremos um roteiro do Playwright a ser implementado para carregar esse app. Isso ajudará a impulsionar as métricas para “iluminar” os dashboards.

Para preparar tudo

Vamos examinar os detalhes de como obter a aplicação, a integração da AWS no Elastic e o que é ingerido.

Etapa 0. Carregar a aplicação de três camadas da AWS e obter suas credenciais

Siga as instruções listadas no app de três camadas da AWS e as instruções no link do workshop no git. O workshop está listado aqui.

Depois de instalar o app, obtenha as credenciais da AWS. Isso será necessário para a integração da AWS da Elastic.

Existem várias opções de credenciais:

  • Usar chaves de acesso diretamente
  • Usar credenciais de segurança temporárias
  • Usar um arquivo de credenciais compartilhado
  • Usar um nome de recurso da Amazon (ARN) de um perfil do IAM

Veja mais detalhes das especificidades relacionadas às credenciais e às permissões necessárias.

Etapa 1. Criar uma conta no Elastic Cloud

Siga as instruções para começar a usar o Elastic Cloud.

Etapa 2. Instalar a integração da AWS da Elastic

Navegue até a integração da AWS na Elastic.

Selecione a integração Add AWS.

É aqui que você adicionará suas credenciais, e elas serão armazenadas como uma política no Elastic. Essa política será usada como parte da instalação do agente na próxima etapa.

Como você pode ver, a integração geral da AWS da Elastic coletará uma quantidade significativa de dados de 30 serviços da AWS. Se não quiser instalar essa integração geral da AWS da Elastic, você poderá selecionar integrações individuais para instalar.

Etapa 3. Instalar o Elastic Agent com a integração da AWS

Agora que você criou uma política de integração, navegue até a seção Fleet em Management (Gerenciamento) no Elastic.

Selecione o nome da política que você criou na última etapa.

Siga a etapa 3 nas instruções da janela Add agent (Adicionar agente). Isso exigirá que você:

1. Abra uma instância do EC2

  • t2.medium é o mínimo
  • Linux — você escolhe qual
  • Certifique-se de permitir a reserva aberta na instância do EC2 ao iniciá-la

2. Faça login na instância e execute os comandos na guia Linux Tar (veja um exemplo abaixo)

curl -L -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.5.0-linux-x86_64.tar.gz
tar xzvf elastic-agent-8.5.0-linux-x86_64.tar.gz
cd elastic-agent-8.5.0-linux-x86_64
sudo ./elastic-agent install --url=https://37845638732625692c8ee914d88951dd96.fleet.us-central1.gcp.cloud.es.io:443 --enrollment-token=jkhfglkuwyvrquevuytqoeiyri

Etapa 4. Executar o tráfego na aplicação

Aqui está um roteiro simples que você também pode executar usando o Playwright para adicionar tráfego ao site da aplicação de três camadas da AWS:

import { test, expect } from '@playwright/test';

test('homepage for AWS Threetierapp', async ({ page }) => {
  await page.goto('http://web-tier-external-lb-1897463036.us-west-1.elb.amazonaws.com/#/db');

   await page.fill('#transactions > tbody > tr > td:nth-child(2) > input', (Math.random()*100).toString())
  await page.fill('#transactions > tbody > tr > td:nth-child(3) > input', (Math.random()*100).toString())
  await page.waitForTimeout(1000)
  await page.click('#transactions > tbody > tr:nth-child(2) > td:nth-child(1) > input[type=button]')
  await page.waitForTimeout(4000)

});

Esse roteiro iniciará três navegadores, mas você pode limitar essa carga a um navegador no arquivo playwright.config.ts.

Para este exercício, executamos esse tráfego por aproximadamente cinco horas com intervalo de cinco minutos durante o teste do site.

Etapa 5. Acessar os dashboards da AWS

Agora que seu Elastic Agent está em execução, você pode acessar os dashboards da AWS relacionados para visualizar o que está sendo ingerido.

Para procurar os dashboards de integração da AWS, basta procurá-los na barra de busca do Elastic. Os relevantes para este post são:

  • [Metrics AWS] EC2 Overview
  • [Metrics AWS] ELB Overview
  • [Metrics AWS] RDS Overview
  • [Metrics AWS] NAT Gateway

Vamos ver o que surge!

Todos esses dashboards estão prontos para uso e, para todas as imagens a seguir, restringimos as visualizações apenas aos itens relevantes do nosso app.

Em todos os dashboards, limitamos o período de execução do gerador de tráfego.

Dashboard de visão geral do EC2 do Elastic Observability
Dashboard de visão geral do EC2 do Elastic Observability

Depois de filtrarmos nossas quatro instâncias do EC2 (dois servidores web e dois servidores de aplicação), podemos ver o seguinte:

1. Todas as quatro instâncias estão funcionando sem falhas nas verificações de status.

2. Vemos a utilização média da CPU ao longo do período, e nada parece anormal.

3. Vemos os bytes da rede entrando e saindo, agregando-se ao longo do tempo à medida que o banco de dados é carregado com linhas.

Embora este exercício mostre uma pequena parte das métricas que podem ser visualizadas, há mais disponíveis no AWS EC2. As métricas listadas na documentação da AWS estão todas disponíveis, incluindo as dimensões para ajudar a restringir a busca de instâncias específicas etc.

Dashboard de visão geral do ELB do Elastic Observability
Dashboard de visão geral do ELB do Elastic Observability

Para o dashboard do ELB, filtramos nossos dois balanceadores de carga (balanceador de carga da web externo e balanceador de carga de aplicação interno).

Com o dashboard pronto para uso, você pode ver métricas específicas do ELB da aplicação. Uma boa parte das métricas específicas do ELB da aplicação listadas na documentação da AWS estão disponíveis para adicionar gráficos.

Para nossos dois balanceadores de carga, podemos ver o seguinte:

1. Ambos os hosts (instâncias do EC2 conectadas aos ELBs) estão íntegros.

2. As unidades de capacidade do balanceador de carga (quanto você está usando) e as contagens de solicitações aumentaram conforme o esperado durante o período de geração de tráfego.

3. Optamos por mostrar as contagens de 4XX e 2XX. Os 4XX ajudarão a identificar problemas com a aplicação ou a conectividade com os servidores de aplicação.

Dashboard de visão geral do RDS do Elastic Observability
Dashboard de visão geral do RDS do Elastic Observability

Para o AuroraDB, que é implantado no RDS, filtramos apenas as instâncias primárias e secundárias do Aurora no dashboard.

Assim como acontece com o EC2 e o ELB, a maioria das métricas de RDS do Cloudwatch também estão disponíveis para criar novos gráficos e tabelas. Neste dashboard, restringimos tudo para mostrar o seguinte:

1. Taxa de transferência de Insert e taxa de transferência de Select

2. Latência de gravação

3. Uso da CPU

4. Número geral de conexões durante o período

Dashboard de NAT da AWS do Elastic Observability
Dashboard de NAT da AWS do Elastic Observability

Filtramos para observar apenas nossas duas instâncias NAT que estão voltadas para os servidores de aplicação. Tal como acontece com os outros dashboards, há outras métricas disponíveis para construir gráficos e tabelas conforme necessário.

Para o dashboard de NAT, podemos ver o seguinte:

1. Os gateways NAT estão indo bem porque não há queda de pacotes

2. Um número esperado de conexões ativas do servidor web

3. Conjunto bastante normal de métricas para entrada e saída de bytes

Parabéns, você começou a monitorar métricas dos principais serviços da AWS para a sua aplicação!

O que monitorar na AWS a seguir?

Adicionar logs de serviços da AWS

Agora que as métricas estão sendo monitoradas, você também pode adicionar logging. Existem diversas opções para a ingestão de logs.

1. A integração da AWS no Elastic Agent tem configuração de logs. Lembre-se apenas de ativar o que você deseja receber. Vamos fazer a ingestão dos logs do Aurora do RDS. Na política do Elastic Agent, simplesmente ativamos Collect logs from CloudWatch (Coletar logs do CloudWatch) (veja abaixo). Em seguida, atualize o agente por meio da UI de gerenciamento do Fleet.

2. Você pode instalar o encaminhador de logs do Lambda. Essa opção extrairá logs de vários locais. Veja o diagrama da arquitetura abaixo.

Uma análise dessa opção também pode ser encontrada no post do blog a seguir.

Analisar seus dados com o Elastic Machine Learning

Depois que as métricas e os logs (ou um dos dois) estiverem no Elastic, comece a analisar seus dados com as funcionalidades de machine learning do Elastic. Uma ótima análise desses recursos pode ser encontrada nestes posts do blog:

E há muitos outros vídeos e posts no Blog da Elastic.

Conclusão: é fácil monitorar métricas de serviços da AWS com o Elastic Observability!

Espero que você tenha gostado de saber como o Elastic Observability pode ajudar a monitorar as métricas de serviços da AWS. Aqui está uma rápida recapitulação das lições e do que você aprendeu:

  • O Elastic Observability oferece suporte para a ingestão e a análise de métricas de serviço da AWS
  • É fácil configurar a ingestão a partir dos serviços da AWS por meio do Elastic Agent
  • O Elastic Observability tem vários dashboards de serviços da AWS prontos para uso que você pode usar para fazer uma análise preliminar das informações e depois modificá-las de acordo com suas necessidades
  • Mais de 30 serviços da AWS são compatíveis como parte da integração da AWS no Elastic Observability, com mais serviços sendo adicionados regularmente
  • Conforme observamos em posts relacionados, você pode analisar as métricas de serviços da AWS com as funcionalidades de machine learning da Elastic

Faça sua avaliação gratuita de 7 dias inscrevendo-se via AWS Marketplace e inicie uma implantação em questão de minutos em qualquer uma das regiões do Elastic Cloud na AWS no mundo inteiro. Sua compra da Elastic no AWS Marketplace será incluída em seu extrato de faturamento consolidado mensal e será contabilizada em seu compromisso de gastos com a AWS.

O lançamento e o tempo de amadurecimento de todos os recursos ou funcionalidades descritos neste post permanecem a exclusivo critério da Elastic. Os recursos ou funcionalidades não disponíveis atualmente poderão não ser entregues dentro do prazo previsto ou nem chegar a ser entregues.