As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Monitorar
O monitoramento é o processo de coletar métricas diferentes, como CPU e memória, e armazená-las em um banco de dados de séries temporais, como o Amazon Managed Service for Prometheus. O sistema de monitoramento pode ser baseado em push ou baseado em pull. Em sistemas baseados em push, a fonte envia métricas periodicamente para o banco de dados de séries temporais. Em sistemas baseados em pull, o raspador coleta métricas de várias fontes e as armazena no banco de dados de séries temporais. Os desenvolvedores podem analisar as métricas, filtrá-las e traçá-las ao longo do tempo para visualizar o desempenho. A implementação bem-sucedida do monitoramento pode ser dividida em duas grandes áreas: aplicação e infraestrutura.
Para desenvolvedores de aplicativos, as seguintes métricas são essenciais:
-
Latência — O tempo gasto para receber uma resposta
-
Taxa de transferência de solicitações — O número total de solicitações processadas por segundo
-
Taxa de erro da solicitação — O número total de erros
Capture a utilização de recursos, a saturação e as contagens de erros de cada recurso (como o contêiner do aplicativo, o banco de dados) envolvido na transação comercial. Por exemplo, ao monitorar o uso da CPU, você pode monitorar a utilização média da CPU, a carga média e a carga máxima durante a execução do teste de desempenho. Quando um recurso atinge a saturação durante o teste de estresse, mas pode não atingir a saturação durante uma execução de desempenho por um curto período de tempo.
Metrics
Os aplicativos podem usar atuadores diferentes, como atuadores de mola, para monitorar suas aplicações. Essas bibliotecas de nível de produção geralmente expõem um endpoint REST para monitorar informações sobre os aplicativos em execução. As bibliotecas podem monitorar a infraestrutura subjacente, as plataformas de aplicativos e outros recursos. Se alguma das métricas padrão não atender aos requisitos, o desenvolvedor deverá implementar métricas personalizadas. Métricas personalizadas podem ajudar a rastrear indicadores-chave de desempenho (KPIs) de negócios que não podem ser rastreados por meio de dados de implementações padrão. Por exemplo, talvez você queira monitorar uma operação comercial, como a latência de integração de API de terceiros ou o número total de transações concluídas.
Cardinalidade
Cardinalidade se refere ao número de séries temporais exclusivas de uma métrica. As métricas são rotuladas para fornecer informações adicionais. Por exemplo, um aplicativo baseado em REST que rastreia a contagem de solicitações de uma API específica indica uma cardinalidade de 1. Se você adicionar um rótulo de usuário para identificar a contagem de solicitações por usuário, a cardinalidade aumentará proporcionalmente ao número de usuários. Ao adicionar rótulos que criam cardinalidade, você pode dividir e dividir as métricas por vários grupos. É importante usar os rótulos certos para o caso de uso correto, pois a cardinalidade aumenta o número de séries de métricas no banco de dados de séries temporais de monitoramento de back-end.
Resolução
Em uma configuração de monitoramento típica, o aplicativo de monitoramento é configurado para extrair as métricas do aplicativo periodicamente. A periodicidade da raspagem define a granularidade dos dados de monitoramento. As métricas coletadas em intervalos mais curtos tendem a fornecer uma visão mais precisa do desempenho porque há mais pontos de dados disponíveis. No entanto, a carga no banco de dados de séries temporais aumenta à medida que mais entradas são armazenadas. Normalmente, uma granularidade de 60 segundos é a resolução padrão e 1 segundo é a alta resolução.
DevOps equipe
Os desenvolvedores de aplicativos geralmente pedem aos DevOps engenheiros que configurem um ambiente de monitoramento para visualizar as métricas da infraestrutura e dos aplicativos. O DevOps engenheiro deve configurar um ambiente que seja escalável e ofereça suporte às ferramentas de visualização de dados usadas pelo desenvolvedor do aplicativo. Isso envolve coletar dados de monitoramento de diferentes fontes e enviá-los para um banco de dados central de séries temporais, como o Amazon Managed Service for Prometheus.
Backend de monitoramento
Um serviço de back-end de monitoramento oferece suporte à coleta, armazenamento, consulta e visualização de dados métricos. Normalmente, é um banco de dados de séries temporais, como o Amazon Managed Service for InfluxData Prometheus ou o InfluxDB. Usando um mecanismo de descoberta de serviços, o coletor de monitoramento pode coletar métricas de diferentes fontes e armazená-las. Durante o teste de desempenho, é importante armazenar os dados das métricas para que possam ser pesquisados posteriormente. Recomendamos salvar pelo menos 15 dias de dados para métricas. No entanto, armazenar as métricas por um período mais longo não agrega benefícios significativos e gera custos de armazenamento desnecessários. Como o teste de desempenho pode gerar um grande volume de métricas, é importante que a infraestrutura de métricas seja dimensionada e, ao mesmo tempo, forneça um desempenho rápido de consultas. O serviço de back-end de monitoramento fornece uma linguagem de consulta que pode ser usada para visualizar os dados de métricas.
Visualização
Forneça ferramentas de visualização que possam exibir os dados do aplicativo para fornecer insights significativos. O DevOps engenheiro e o desenvolvedor do aplicativo devem aprender a linguagem de consulta para o back-end de monitoramento e trabalhar em conjunto para gerar um modelo de painel que possa ser reutilizado. Nos painéis, inclua latência e erros, além de exibir a utilização e a saturação dos recursos na infraestrutura e nos recursos do aplicativo.
Automatizando a infraestrutura de monitoramento
Assim como o registro em log, é importante automatizar a instalação e a operação da infraestrutura de monitoramento para que você possa acomodar os diferentes requisitos de diferentes aplicativos. Use ferramentas de IaC para provisionar o back-end da infraestrutura de monitoramento. Em seguida, você pode provisionar a infraestrutura de monitoramento como um serviço compartilhado ou como uma implantação independente sob medida para um aplicativo específico.
Use pipelines de CD para automatizar o seguinte:
-
Implante a infraestrutura de monitoramento sob demanda e desmonte-a quando não for necessária.
-
Atualize a configuração de monitoramento para filtrar ou agregar métricas.
-
Implante painéis de aplicativos.
Ferramentas de monitoramento
O Amazon Managed Service for Prometheus é um serviço de monitoramento compatível com o Prometheus
A Amazon CloudWatch fornece monitoramento completo em. AWS CloudWatch oferece suporte a soluções AWS nativas e de código aberto para que você possa entender o que está acontecendo em sua pilha de tecnologia a qualquer momento.
AWS As ferramentas nativas incluem o seguinte:
A Amazon CloudWatch oferece recursos específicos que abordam casos de uso específicos, como monitoramento de contêineres por meio CloudWatch do Container Insights. Esses recursos são integrados para CloudWatch que você possa configurar registros, coleta de métricas e monitoramento.
Para seus aplicativos e microsserviços em contêineres, use o Container Insights para coletar, agregar e resumir métricas e registros. O Container Insights está disponível para as plataformas Amazon Elastic Container Service (Amazon ECS), Amazon Elastic Kubernetes Service (Amazon EKS) e Kubernetes na Amazon Elastic Compute Cloud (Amazon EC2). O Container Insights coleta dados como eventos de registro de desempenho no formato métrico incorporado. Essas entradas de eventos de registro de desempenho usam um esquema JSON estruturado que oferece suporte à ingestão e armazenamento de dados de alta cardinalidade em grande escala.
Para obter informações sobre a implementação do Container Insights com o Amazon EKS, consulte a postagem do blog Apresentando o Amazon CloudWatch Container Insights para o Amazon EKS Fargate usando o AWS
Distro