O blog da AWS
Apresentando o Amazon CloudWatch Internet Monitor
O Internet Monitor une o caminho de rede da Internet entre seus usuários e sua aplicação, criando uma pilha completa do CloudWatch:
- Experiência do usuário — CloudWatch Synthetics e CloudWatch Real User Monitoring (RUM)
- Saúde na Internet — Internet Monitor
- Integridade da pilha de aplicação — CloudWatch ServiceLens e AWS X-Ray
- Integridade dos recursos — CloudWatch Metrics e CloudWatch Logs
Componentes do Internet Monitor
Antes de mostrarmos como o Internet Monitor funciona, vamos definir alguns componentes e conceitos principais.
- Monitor: Um monitor é o contêiner para sua configuração que define os recursos a serem monitorados.
- Evento de saúde: quando o Internet Monitor detecta uma degradação significativa do desempenho em seu tráfego, ele cria um evento de saúde. Cada evento de saúde inclui informações sobre os locais de clientes e provedores de rede (ISPs) afetados.
- Pontuações de desempenho e disponibilidade (pontuações de integridade): uma estimativa estatística da porcentagem de tráfego para sua aplicação que não está sofrendo uma queda no desempenho ou na disponibilidade, respectivamente. Essas pontuações também estão disponíveis como métricas do CloudWatch.
- CloudWatch Logs: para locais e provedores de rede específicos para seus clientes, o Internet Monitor publica medições no CloudWatch Logs que incluem pontuações de desempenho e disponibilidade, bytes transferidos e tempo de ida e volta (RTT).
Como funciona
O Internet Monitor aproveita os dados que a AWS já está coletando, entre as diferentes regiões e locais de borda (edge locations) da AWS e as redes a partir das quais seus clientes acessam seus endpoints da sua aplicação. Esses dados de conectividade são usados internamente pela AWS para detectar proativamente problemas de conectividade na Internet e, em seguida, tomar medidas para melhorar as experiências do cliente.
Para cada região da AWS, sabemos quais partes da Internet se comunicam com a região, para que possamos monitorá-las ativamente. Usamos sondas de rede e de protocolo de alto nível, de entrada e saída. Com essas medidas de desempenho e disponibilidade como base, calculamos as pontuações de saúde para aumentar a conscientização para você quando há problemas significativos para seus usuários finais em diferentes localizações geográficas. Quando você cria um monitor, o Internet Monitor cria um perfil de tráfego com base em seus recursos, descrevendo a localização dos usuários e a porcentagem de tráfego de cada um. Seu perfil de tráfego é então sobreposto ao perfil de desempenho básico da AWS, a partir do qual calculamos as pontuações de desempenho e disponibilidade que mostram quedas estimadas em relação à linha de base.
O Internet Monitor também fornece insights e recomendações para melhorar o tempo até o primeiro byte (TTFB), exibindo métricas de desempenho para usar diferentes serviços da AWS ou redirecionar seu tráfego. Isso pode ajudar você a entender como a experiência de seus usuários pode ser melhorada usando o Amazon CloudFront ou redirecionando seu tráfego de carga de trabalho para diferentes regiões da AWS.
Alertas sobre eventos de saúde
Depois de criar um monitor, você tem várias opções de como ser alertado sobre eventos de saúde do Internet Monitor. A escolha pode depender, por exemplo, de seus requisitos de filtragem, tipos de logs históricos e ações para quando o alarme for acionado. As opções de alerta de eventos de saúde incluem:
- Alarmes do CloudWatch, com base nas métricas de eventos do Internet Monitor para pontuações de desempenho e disponibilidade
- Alarmes do CloudWatch, com base em uma métrica gerada usando um filtro de métrica no CloudWatch Logs
- Regras do Amazon EventBridge, para filtrar os eventos de saúde gerados pelo Internet Monitor
Um alarme do CloudWatch é útil quando você precisa de métricas adicionais para rastrear as métricas da experiência do usuário em um nível mais granular no painel da sua aplicação. Você também pode optar por usar alarmes se precisar de alertas quando seus usuários vivenciarem um impacto que não resulte na criação de um evento de saúde no Internet Monitor. O EventBridge permite que você crie respostas automatizadas orientadas por eventos para eventos gerados pelo Internet Monitor.
Pré-requisitos
Nas seções a seguir, presumimos que você esteja familiarizado com os serviços de rede fundamentais da AWS, como VPCs e distribuições do CloudFront. Também presumimos que você esteja familiarizado com a configuração de diretórios do WorkSpaces. Não nos concentraremos em definir cada serviço, mas descreveremos as etapas necessárias para usá-los com o Internet Monitor. Você pode encontrar informações detalhadas sobre os recursos da AWS nos guias correspondentes para desenvolvedores e usuários.
Configuração do Internet Monitor
Vamos considerar um caso de uso em que você tem uma aplicação web hospedada no Amazon Elastic Compute Cloud (EC2) para seus clientes e diretórios Amazon WorkSpaces voltados para a Internet para os membros da sua equipe remota. Você precisa monitorar a experiência do usuário final globalmente, por meio desses recursos voltados para o público. Um número crítico de seus usuários finais está localizado na América do Norte, então você deseja monitorar a experiência deles de acessar a aplicação separadamente de outros usuários geográficos.
Você pode começar a usar o Internet Monitor simplesmente criando um monitor e adicionando seus recursos e, em seguida, configurar os alarmes do CloudWatch para notificá-lo sobre eventos de saúde.
Monitorando uma aplicação web hospedada no EC2
Etapa 1: criar um monitor no CloudWatch Internet Monitor
Para criar um monitor, no console do CloudWatch, na página Internet Monitor, escolha Criar monitor. Insira um nome para seu monitor e escolha Adicionar recursos. Em nosso exemplo, adicionaremos uma VPC, porque temos uma aplicação web hospedado no EC2. Na página de recursos, selecione a VPC e escolha Adicionar. Escolha Avançar, revise a configuração e escolha Criar monitor. O monitor leva alguns minutos para ficar ativo.
Figura 1 — Criando um monitor no console do Internet Monitor
Dependendo de suas cargas de trabalho e de suas necessidades de monitoramento, talvez seja necessário criar um monitor separado no Internet Monitor para diferentes grupos de recursos. No nosso caso, criaremos um monitor separado para os diretórios do WorkSpaces.
Etapa 2: exemplo de configuração de alertas
Para alertas, usaremos o Amazon EventBridge. Considerando nossos exemplos de requisitos de aplicação e base de usuários, definiremos um limite para a pontuação de disponibilidade de 50% e um limite para a pontuação de desempenho de 50% e especificaremos que o tráfego total afetado seja de pelo menos 1% do tráfego. Nossa regra do EventBridge criará um log e enviará uma notificação para uma fila do SNS para eventos que correspondam aos critérios acima. (Os valores aqui servem apenas como exemplo. Você deve definir limites em níveis que façam sentido para suas aplicações e negócios.)
Para configurar um filtro de eventos, no AWS Management Console, navegue até o Amazon EventBridge. Escolha Criar regra do EventBridge e, em seguida, insira um nome e uma descrição relevantes. Use o barramento de eventos padrão para a regra e, para a origem do evento, selecione Outro. Ignore a configuração do evento de amostra e, em seguida, para o método de criação, escolha Padrão personalizado. Inserimos o seguinte, por exemplo:
Em seguida, configuraremos dois targets para nossos eventos: um novo tópico do Amazon Simple Notification Service (SNS) e um grupo de logs do CloudWatch, para analisar nossos logs ao longo do tempo e para fins de geração de relatórios. Quando houver um evento de saúde do Internet Monitor que corresponda às nossas regras, receberemos o evento em nossa fila do SNS e no grupo de logs do CloudWatch.
Figura 2 — Configurando os targets da regra do EventBridge
Monitoramento de recursos de diretórios do Amazon WorkSpaces
Etapa 1: criar um monitor para diretórios do WorkSpaces
Seguiremos as mesmas etapas que concluímos anteriormente e criaremos um monitor para nosso recurso de diretórios do WorkSpaces. Você pode optar por agrupar recursos em um único monitor, para alguns tipos de recursos, se eles tiverem requisitos de monitoramento semelhantes. No entanto, os diretórios do WorkSpaces não podem ser adicionados ao mesmo monitor que os VPCs no Internet Monitor, então criaremos um novo monitor.
Etapa 2: exemplo de configuração de alertas
Uma métrica essencial para clientes que usam os diretórios do WorkSpaces é o tempo de ida e volta (RTT). O RTT afeta a experiência de desempenho de um usuário final quando é superior a 100 ms. Para nosso caso de uso, criaremos uma métrica personalizada para visualizar o RTT somente para usuários finais norte-americanos. As etapas para isso são as seguintes:
a) Filtre os logs de eventos do Internet Monitor com base na localização do cliente.
b) Crie um filtro de métrica personalizada do CloudWatch para logs de eventos do Internet Monitor.
c) Configure um alarme com base na métrica personalizada.
Vamos analisar o fluxo de configuração com mais detalhes.
a) Filtrar logs de eventos do Internet Monitor com base na localização do cliente
No console do CloudWatch Logs, você pode visualizar os dados de log do Internet Monitor no formato JSON no namespace /aws/internet-monitor/<seu-monitor><granularidade>. Em nosso exemplo, com nossos clientes da América do Norte, a granularidade em nível de país é muito útil. Os fluxos de logs internos contêm os eventos de medição individuais. Cada evento contém informações geográficas e de rede para localizações de clientes, estatísticas de tráfego, pontuações de disponibilidade e pontuações de desempenho. Essas são as mesmas informações agregadas e exibidas no console do Internet Monitor.
Figura 3 — Exemplo de log de eventos do Internet Monitor no formato JSON
Para filtrar os logs do Internet Monitor, usaremos o campo clientLocation.countryCode com a seguinte configuração: {$.clientLocation.countrycode=US || $.clientLocation.countrycode=CA}. Isso nos permite visualizar os eventos de logs de locais de clientes nos EUA ou no Canadá.
Figura 4 — Fluxo de log do Internet Monitor filtrado para mostrar somente eventos com uma localização de cliente na América do Norte
b) Crie um filtro de métrica do CloudWatch para logs de eventos do Internet Monitor
Depois que os logs são filtrados com base na localização do cliente, escolhemos Criar filtro de métrica e configuramos o nome e o namespace da métrica do filtro para agrupar métricas personalizadas relacionadas. Neste exemplo, estamos gerando uma métrica com base no valor RTT do percentil 90 (p90), InternetHealth.Performance.RoundTriptime.p90. A sensibilidade p90 da métrica nos permite alertar sobre anomalias que seriam perdidas se usássemos a média e evita gatilhos muito frequentes.
Figura 5 — Criação de um filtro de métrica com base nos eventos de log do Internet Monitor usando o console do CloudWatch Logs
Você pode usar p50, p90 ou p95 em sua configuração, dependendo de seus requisitos. Para obter mais detalhes sobre os percentis de medição, consulte o Guia do usuário do CloudWatch. NorthAmericanRTT, nosso novo filtro métrico, estará disponível logo após o processamento do primeiro evento de log correspondente.
c) Configurar um alarme com base na métrica personalizada
Para criar um alarme com base em nossa nova métrica, usaremos o console CloudWatch Alarms e selecionaremos a métrica recém-criada para nosso monitor. Escolhemos 100ms como condição limite para o RTT, como exemplo. Você também pode criar um alarme que usa a detecção de anomalias em vez de um limite estático, para uma análise mais precisa da experiência do usuário. Para obter detalhes sobre a detecção de anomalias, consulte o Guia do usuário do CloudWatch.
Depois de configurarmos as condições do limite de alarme, selecionamos o tópico do SNS para o qual enviar alertas e, em seguida, criamos o alarme, conforme mostrado na figura a seguir.
Figura 6 — Especificando uma métrica do Internet Monitor e configurando o limite no console do CloudWatch Alarms
Analisando um evento do Internet Monitor
Agora imagine que você recebeu um alerta de que o desempenho ou a disponibilidade caíram abaixo de um dos limites que você configurou. Para começar a investigar, clique na guia Visão geral do console do Internet Monitor do seu monitor. A guia Visão geral exibe as pontuações de disponibilidade e desempenho de seus recursos monitorados, bem como eventos de saúde ativos relacionados.
Figura 7 — Aba de visão geral do console do Internet Monitor com pontuações de saúde e mapa indicando eventos de saúde em Taiwan e na Austrália
Neste exemplo, você pode ver que há eventos de saúde afetando os usuários em Taiwan e na Austrália. Para saber mais sobre os eventos de saúde, você pode baixar detalhes no formato CSV ou JSON. Escolha Ações e, em seguida, selecione o formato desejado. O arquivo inclui todos os eventos de saúde do período que você escolheu, que você pode filtrar para incluir somente aqueles nos quais está interessado. Ao analisar um único evento, você pode ver que os detalhes do evento contêm informações como localização do cliente, nome do provedor de serviços de rede, ASN, porcentagem de tráfego afetado e muito mais. Veja a seguir um exemplo de um evento no formato JSON:
Aqui, 15,22% dos clientes no local foram afetados, o que representava 8,66% de todos os clientes que usavam a aplicação na época.
Para se aprofundar na experiência do usuário, navegue até a guia Explorador histórico para visualizar mais métricas de desempenho, filtradas por regiões geográficas ou provedores de rede e por período de tempo.
Figura 8 — Aba do Internet Monitor Explorador histórico mostrando gráficos de tráfego da Internet filtrados para a Austrália
Usando o Internet Monitor para otimizar a entrega de aplicações
Para eventos como o que estamos explorando aqui, que parece ser causado por problemas no provedor de rede do cliente, você tem algumas ações possíveis que podem ser tomadas no curto prazo:
- Se sua aplicação já for atendida por várias regiões, talvez você consiga transferir o tráfego afetado para recursos em uma região diferente da AWS, acessível por um caminho de Internet diferente.
- Entre em contato com o provedor de rede para ver se ele está ciente do problema e trabalhando em uma solução. Isso pode não ser uma opção para fornecedores fora de sua área imediata.
- Atualize sua própria página de status ou mídia social para informar aos usuários que os problemas que eles estão enfrentando em um local se devem ao desempenho da Internet nessa área.
- Prepare seu suporte ao cliente para responder às perguntas dos clientes afetados.
Uma possível abordagem de longo prazo pode ser melhorar a entrega de aplicações para seus usuários finais, usando um serviço como o Amazon CloudFront, por exemplo, para minimizar o caminho da Internet que o tráfego de seus clientes está percorrendo. Todo o tráfego do ponto de presença AWS mais próximo de seus usuários e de seus recursos ou endpoints de origem em uma região da AWS é transportado pela rede global da AWS.
Você pode usar a guia Insights sobre o tráfego para explorar maneiras de melhorar o desempenho da sua aplicação em diferentes locais, classificadas por disponibilidade e pontuações de desempenho ou por tempo até o primeiro byte (TTFB). Você também pode usar filtros geográficos ou de provedores de rede para aprofundar os dados de uma área específica.
Em Sugestões para otimização de tráfego, o Internet Monitor também fornece previsões das melhorias estimadas do TTFB se você passar a usar recursos do EC2 ou do CloudFront ou direcionar seu tráfego por outras regiões da AWS ou locais de borda (edge locations), para suas principais combinações de locais de clientes e provedores de rede. Experimente opções diferentes para ver o que gera os melhores resultados para cada combinação.
Figura 9 — Aba Internet Monitor Insights sobre o tráfego mostrando tráfego total por gráfico de localização do cliente e sugestões de otimização de tráfego
Limpeza do ambiente
Quando terminar de explorar os recursos do Internet Monitor, certifique-se de limpar seu ambiente de teste e excluir os recursos que você criou. Comece excluindo seu monitor e, em seguida, quaisquer outros recursos que você criou, incluindo: regras do EventBridge, regras do CloudWatch Logs, alarmes, métricas, grupos de logs e tópicos do SNS.
Coisas para saber
- Se você tiver um grupo de aplicações em uma única região da AWS com uma base de usuários semelhante, crie um único monitor para monitorar a experiência agregada do usuário em todo o grupo.
- Um único monitor no Internet Monitor pode monitorar recursos em várias regiões.
- Se você adicionar VPCs e distribuições do CloudFront, não poderá adicionar diretórios do WorkSpaces ao mesmo monitor.
- O Internet Monitor está sujeito às cobranças regulares do CloudWatch por métricas, logs e quaisquer painéis, alarmes ou insights criados. Os detalhes estão disponíveis na página de preços do CloudWatch.
- O suporte do AWS CloudFormation para o Internet Monitor estará disponível em breve.
- Atualmente, o Internet Monitor está disponível em 20 regiões da AWS.
Conclusão
Nesta postagem do blog, apresentamos o Amazon CloudWatch Internet Monitor, um novo serviço que fornece visibilidade sobre o desempenho de suas aplicações voltados para a Internet, usando os dados de conectividade que a AWS captura de sua rede global. O Internet Monitor ajuda você a tomar decisões mais bem informadas, usando fatores que afetam a experiência de seus usuários finais que, de outra forma, você não conheceria, para que você possa otimizar sua estratégia de implantação de carga de trabalho. Para saber mais sobre o Internet Monitor, acesse a documentação.
Este artigo foi traduzido do Blog da AWS em Inglês.