Monitorando processos assíncronos de aplicações .net com o Datadog

Pedro Giovannini
#LocalizaLabs
Published in
6 min readJun 3, 2024

Os processos assíncronos são pontos chave de muitas aplicações modernas, proporcionando uma experiência de usuário mais fluida e melhorando o desempenho geral das aplicações. No entanto, monitorar esses processos pode ser um desafio devido ao nível de customização e às diferentes bibliotecas que podem ser utilizadas na implementação. O Datadog, uma popular plataforma de monitoramento e análise, fornece ferramentas e recursos que facilitam essa tarefa.

Por padrão, o Datadog cria a instrumentação automática de Web APIs, mas quando tratamos de ferramentas de streaming ou mensageria, precisamos criar essa instrumentação de forma manual.

Neste artigo, discutiremos como monitorar processos assíncronos, explorando como realizar a instrumentação manual, utilizar o Service Catalog e como criar Dashboards personalizados utilizando a instrumentação manual.

Criando a instrumentação manual

A API do Datadog é uma ferramenta poderosa para monitorar processos assíncronos. Ela permite que os desenvolvedores enviem métricas personalizadas, eventos e logs diretamente para o Datadog a partir de sua aplicação. Por exemplo, você pode usar a API para enviar um evento personalizado cada vez que um processo assíncrono inicia ou termina, permitindo que você acompanhe a frequência e a duração desses processos. A flexibilidade e a facilidade de uso da API a tornam uma parte crucial do monitoramento de processos assíncronos com o Datadog.

Para configurar o datadog na sua aplicação, precisamos instalar a biblioteca Datadog.Trace.

Instalando a biblioteca Datadog.Trace

Neste exemplo vamos criar uma aplicação fictícia que processa dois tipos de eventos: Atualização de Contratos e Movimentação de Veículos. Vamos criar os consumidores que irão processar esses eventos e vamos configurar a instrumentação do Datadog.

Nossos métodos terão a seguinte estrutura:

Monitoramento de consumidor de fila

Quando se inicia o processamento da mensagem, o primeiro passo é iniciar uma instância do tracer.

Criando uma instância do tracer do Datadog

Em seguida, configuramos o nome da operação. Para todos os consumidores de filas iremos definir a operação com o nome “ProcessosAssincronos”. Mais adiante veremos como os processos assíncronos estarão agrupados em uma mesma visão no Datadog. Configuramos também o recurso, que identificará qual é o tipo do evento que está sendo processado. No nosso exemplo usaremos “VeículoMovimentado” e “ContratoAtualizado”. Também setamos tags que podem facilitar a análise dos traces no Datadog.

Configurando tags

Depois de tudo configurado, sua aplicação pode executar o fluxo de negócio normalmente, e tudo o que ocorrer neste escopo estará associado ao trace que foi iniciado.

Outro passo importante é sinalizar para o tracer caso ocorra alguma exceção. Veremos adiante que assim podemos dar visibilidade nos dashboards e criar alertas personalizados com base nos traces que indicam erro.

Tratamento de exceções

Pronto! Com esses simples passos já podemos explorar vários recursos que o Datadog oferece para monitorarmos nossas aplicações.

Explorando o Service Catalog

O Catálogo de Serviços do Datadog é uma ferramenta que permite visualizar e explorar todos os serviços monitorados em sua aplicação. Ele fornece uma visão unificada de todas as métricas, logs e rastreamentos associados a cada serviço. Isso permite que os desenvolvedores identifiquem rapidamente quais serviços estão funcionando como esperado e quais podem estar causando problemas. Além disso, o Catálogo de Serviços também permite que os desenvolvedores vejam a correlação entre diferentes serviços, o que pode ser útil para identificar e resolver problemas complexos que podem envolver várias partes da aplicação.

Com a instrumentação manual conseguimos selecionar a operação “ProcessosAssincronos” que definimos no nosso exemplo. Nessa visão identificamos todos os consumidores de eventos da aplicação, no quadro Resources.

Acessando o monitoramento da aplicação no Service Catalog

Ao clicarmos em um recurso podemos ver todas as requisições (ou mensagens processadas) no período de tempo selecionado.

Visualização das requisições

Em seguida, ao clicarmos em uma requisição com erro, podemos ver todos os detalhes do processamento, como as tags, logs e o gráfico com as chamadas a serviços externos que eventualmente foram feitas no processamento da mensagem (no nosso caso, como é só um exemplo, não existem chamadas a serviços externos).

Detalhes do processamento

Nesta visão, ao clicar no ícone de uma engrenagem à esquerda das tags podemos ainda filtrar por todas as requisições que foram marcadas com a tag selecionada.

Criando dashboards personalizados

Os painéis em tempo real do Datadog são a peça final do quebra-cabeças quando se trata de monitorar processos assíncronos. Esses painéis permitem que você visualize suas métricas e eventos personalizados em tempo real, facilitando a identificação de tendências e anomalias. Você pode criar vários painéis para monitorar diferentes aspectos de seus processos assíncronos, e pode compartilhar esses painéis com sua equipe para manter todos informados. Painéis em tempo real são uma ferramenta poderosa para entender seus processos assíncronos e identificar rapidamente quaisquer problemas potenciais.

Vamos começar criando uma visão que nos informe a quantidade de vezes o consumidor ‘VeiculoMovimentado’ foi acionado. Para isso clicamos no botão ‘Add Widgets’ e escolhemos o componente ‘Query Value’. Então preenchemos as informações do gráfico, configurando a métrica conforme ilustrado abaixo:

Metrics
sum trace.ProcessosAssincronos.duration
from service:segurancafrota-eventbroker-netcore, env:tst, resource_name:veiculomovimentado

Configurando o widget Query Value

Agora clique em ‘Save’ e veja o novo componente no seu Dashboard! Depois de criarmos o primeiro componente, podemos aproveitá-lo para criar visões similares. Basta copiar e colar utilizando os atalhos ctrl+c, ctrl+v e então editar o componente copiado. (💡Dica: você também pode copiar componentes de outros Dashboards já existentes, colar no seu Dashboard e editar a configuração de acordo com a sua aplicação!!). Neste exemplo podemos aproveitar a visão de quantidade de requisições e criar também visões para quantidade de erros e tempo médio de execução.

Reaproveitando os widgets

Existem diversos outros widgets que podem ser utilizados nos Dashboards e a configuração é bastante intuitiva e similar ao que fizemos no nosso exemplo. Uma lista completa e instruções sobre como configurá-los pode ser encontrada na documentação oficial.

Configurando outros widgets

Conclusão

Monitorar processos assíncronos pode ser uma tarefa complexa, mas com as ferramentas adequadas, torna-se muito mais simples. A API do Datadog, as métricas personalizadas e os painéis em tempo real fornecem uma solução abrangente para rastrear e analisar processos assíncronos. Ao aproveitar esses recursos, os desenvolvedores podem ter uma compreensão mais profunda de seus processos assíncronos e garantir que suas aplicações estejam funcionando de forma ideal.

--

--