Abílio Azevedo.

Monitoring, Logs, Tracking, Performance

Cover Image for Monitoring, Logs, Tracking, Performance
Abílio Azevedo
Abílio Azevedo

Tipos de Logs

Existem vários tipos comuns de logs que são importantes para engenheiros de software e administradores de sistemas:

  • Logs de Auditoria: Registram informações sobre atividades do usuário, mudanças de configuração, autenticação e autorização. Geralmente incluem informações como identificação do usuário, endereço IP, data/hora, ação realizada, status, etc.

  • Logs de Sistema: Registram mensagens e eventos do sistema operacional, serviços ou aplicações. Incluem informações sobre erros, falhas, execução de processos, uso de recursos, etc.

  • Logs de Depuração (Debug): Fornecem informações detalhadas e em nível técnico para depuração de erros e problemas. Costumam incluir variáveis, estados de execução de funções/métodos, queries, etc.

Emissão e Captura de Logs

As principais ferramentas e tecnologias para emissão e captura de logs incluem:

  • Bibliotecas de Logging: Fornecem APIs e recursos para que aplicações gerem e gravem logs de maneira padronizada (ex: log4j, log4net).

  • Agentes de Coleta de Logs: Instalados junto às aplicações para capturar logs e enviá-los a um servidor central (ex: Splunk Universal Forwarder, Logstash).

  • Syslog: Protocolo padrão para mensagens de log, permitindo envio em rede para servidores syslog (ex: rsyslog, syslog-ng).

  • Beats: Leves agentes de coleta de logs e métricas para o Elasticsearch (ex: Filebeat, Metricbeat).

Processamento e Análise de Logs

Uma vez coletados, os logs precisam ser processados e analisados. Algumas soluções incluem:

  • Splunk: Plataforma líder para indexação, análise e visualização de logs com recursos avançados de busca, alertas, painéis e integrações.

  • Elastic Stack: Conjunto de ferramentas open-source da Elastic para ingestão (Logstash), armazenamento (Elasticsearch), visualização (Kibana) e análise de logs.

  • Datadog: Serviço de monitoramento com capacidades de processamento e análise de logs em grande escala na nuvem.

  • Graylog: Solução open-source para gerenciamento centralizado de logs com busca em texto completo, análises, alertas e painéis.

  • Sentry.io: Plataforma de monitoramento de erros e desempenho de aplicações. Captura exceções, erros e problemas de desempenho em tempo real. Possui recursos avançados de agrupamento de erros, rastreamento de problemas, alertas e integrações com ferramentas de desenvolvimento. Se destaca por permitir uma rápida detecção e triagem de bugs de software, especialmente em ambientes de produção. É amplamente utilizado para aplicações web e mobile.

O que é APM?

  • APM (Application Performance Management/Monitoring) é um conjunto de ferramentas para monitorar e gerenciar o desempenho e disponibilidade de aplicações.

  • Fornece visibilidade sobre como as aplicações se comportam em produção.

  • Permite que equipes identifiquem e resolvam problemas de desempenho.

Principais componentes:

  • Monitoramento: coleta métricas como tempos de resposta e taxas de erro.

  • Análise: identifica padrões e tendências nos dados coletados.

  • Diagnóstico: determina as causas raiz dos problemas de desempenho.

Diferenças para ferramentas tradicionais:

  • Foco na experiência do usuário final e no desempenho geral da aplicação.

  • Análises no nível da função e distribuição de uso de recursos no código.

  • Insights específicos para melhoria de código e desempenho.

Benefícios do APM:

  • Melhor visibilidade em tempo real do desempenho.

  • Detecção e resolução mais rápida de problemas.

  • Otimização do desempenho e eficiência da aplicação.

APM para Node.js:

  • Ajuda a identificar gargalos de I/O assíncrono e vazamentos de memória.

  • Fornece insights para melhor gerenciamento de concorrência e escalabilidade.

  • N|Solid da NodeSource é especializado para Node.js: mais eficiente, foco em segurança, métricas específicas.

Caso de Uso - Melhorando a latência entre serviços

Problema

Pelo monitoramento do Datadog identificamos que no endpoint /test temos dois requests:

  • Um para o app1
  • Outro para o app2 Ambos com uma latência considerável.

DatadogWithoutServiceDiscovery

O que é AWS Service Discovery?

A AWS Service Discovery é um serviço da AWS que permite que aplicações localizem e se conectem automaticamente a outros serviços em tempo de execução, sem a necessidade de conhecer a localização física desses serviços. Isso é particularmente útil em ambientes de microsserviços, onde novos serviços são constantemente adicionados, removidos ou movidos.

Como o Service Discovery melhora a latência?

Sem o Service Discovery, quando uma aplicação precisa se comunicar com outra, ela geralmente precisa passar pelo API Gateway, que atua como um ponto de entrada centralizado. Isso pode adicionar latência à comunicação, especialmente se os serviços estiverem em diferentes regiões ou redes.

Com o Service Discovery, as aplicações podem se conectar diretamente umas às outras, sem precisar passar pelo API Gateway. Isso reduz a quantidade de "saltos" na rede, diminuindo a latência entre os serviços.

Além disso, o Service Discovery permite que as aplicações encontrem dinamicamente os endereços e portas dos serviços com os quais precisam se comunicar, eliminando a necessidade de configuração manual ou de usar um serviço de DNS externo.

Como funciona o Service Discovery na AWS?

O Service Discovery na AWS é fornecido pelo serviço AWS Cloud Map. O Cloud Map permite que você registre seus serviços e os torne descobríveis por outras aplicações.

Quando uma aplicação precisa se comunicar com outro serviço, ela consulta o Cloud Map para obter as informações necessárias, como o endereço IP e a porta do serviço de destino. Isso é feito de forma transparente para a aplicação, que simplesmente usa o nome do serviço em sua URL.

O Cloud Map também pode fornecer recursos adicionais, como health checks e failover automático, para garantir a disponibilidade e a resiliência dos serviços.

Solução

O que fizemos foi através do AWS Cloud Map foi conectar ambos os serviços diretamente na mesma rede e com isso tivemos um melhor resultado.

DatadogWithServiceDiscovery

Configure o Service Discovery seguindo esse artigo.

No Cloud Map pegue o nome do seu serviço: Cloud Map

No Route53 pegue o nome do registro do tipo A: Screenshot 2024-04-09 at 19.32.28

Precisamos também da porta do container que você pode obter por meio da task definition do container: Container Task Definition

Ponto agora é só substituir a base url na aplicação por: http://{register-name}:{containerPort}

Saiba mais aqui.


More posts

Cover Image for System P - Ticket Management - Bugs

System P - Ticket Management - Bugs

Unlock the power of prioritization for your Scrum team with the System P framework. Learn how to efficiently evaluate and rank your product backlog items based on business value, risk, and effort to deliver maximum impact. Discover the 5 priority levels - from critical P0 issues to informational P4 items - and master the art of smart backlog management. Optimize your Agile workflow and drive greater success with this guide to effective Scrum prioritization."

Abílio Azevedo
Abílio Azevedo
Cover Image for Outliers - The Story of Success

Outliers - The Story of Success

Extraordinary success beyond talent and hard work. The 10,000-hour rule, birth date, cultural background, and opportunities shape success. Case studies from sports, business, and music. Life circumstances profoundly impact outcomes.

Abílio Azevedo
Abílio Azevedo

NewsLetter

I will send the content posted here. No Spam =)