Quarkus and Datadog. Observabilidade Máxima!

Luiz PaisLuiz Pais
4 min read

Itens apresentados:


1. Introdução à Observabilidade

  • O que é Observabilidade?
    Capacidade de inferir o estado interno de um sistema complexo com base em sua saída externa (logs, métricas, traces).

  • Por que é essencial hoje?
    Em ambientes distribuídos, com microsserviços, containers e nuvem, a visibilidade é crucial para detectar falhas rapidamente, reduzir o tempo de resolução (MTTR) e garantir a confiabilidade.

  • Evolução
    De monitoramento passivo (apenas métricas de sistema) para observabilidade ativa (entendimento profundo da aplicação).


2. Três Pilares da Observabilidade: Logs, Métricas e Traces

  • Logs
    Registros estruturados e cronológicos de eventos, úteis para auditoria e troubleshooting.

  • Métricas
    Valores numéricos agregados ao longo do tempo (ex: requisições por segundo, tempo de resposta).

  • Traces
    Rastreiam o caminho de uma requisição ao longo dos serviços, útil para encontrar gargalos e entender o fluxo distribuído.

“Os três pilares juntos respondem: O que aconteceu? Quando? Onde? E por quê?”


3. Desafios Comuns em Ambientes Distribuídos e Microsserviços

  • Complexidade aumentada: múltiplos serviços, múltiplos times

  • Dificuldade de rastrear falhas ponta a ponta

  • Logs fragmentados e métricas isoladas

  • Alta cardinalidade de labels/tags

  • Corrupção de contexto entre chamadas assíncronas

  • Ferramentas desconectadas que não se comunicam bem


4. Por que Quarkus?

  • Startup time rápido
    Ideal para escalabilidade instantânea e testes rápidos com menos overhead.

  • Baixo uso de memória
    Excelente para ambientes serverless e containers com poucos recursos.

  • Suporte nativo a Micrometer e OpenTelemetry
    Coleta e exporta métricas e traces sem necessidade de instrumentação pesada.

  • Configuração simplificada
    application.properties centraliza e simplifica ajustes.

  • Extensões para observabilidade
    Prometheus, Jaeger, Zipkin, Datadog — basta adicionar a dependência.

  • Exposição automática de métricas
    /q/metrics com MicroProfile Metrics.

  • Spans automáticos + propagação de contexto
    Observabilidade real sem esforço adicional.

  • Ferramentas de produtividade
    Hot reload, Dev UI, testes em tempo real: ciclo de feedback ágil.


5. Por que Datadog para Observabilidade?

  • Plataforma unificada
    Centraliza logs, métricas, traces, dashboards e alertas em um único lugar.

  • Auto discovery de serviços e dependências
    APM detecta automaticamente os serviços e suas interações.

  • Mapas de serviço e análise de dependência
    Visualização clara da arquitetura distribuída.

  • Correlação em um clique
    Clique no trace → veja logs + métricas daquele exato momento.

  • Agentes leves e SDKs prontos
    Fácil integração em qualquer stack, incluindo Java/Quarkus.

  • Integração nativa com nuvem e containers
    AWS, GCP, Azure, Kubernetes, Docker → plug and play.

  • Dashboards customizáveis
    Cada squad visualiza apenas o que importa para si.

  • Análise de performance
    Endpoints mais lentos, gargalos, filas → fácil de identificar.

  • SLOs e Error Budgets embutidos
    Suporte nativo a práticas de SRE.

  • Detecção de anomalias com IA
    Machine Learning detecta desvios sem precisar de regras manuais.


6. Integração Quarkus + Datadog

  • Micrometer → Datadog
    Exportação simples de métricas com dependência e configuração mínima.

  • Uso de labels e tags
    Serviços, versões, ambientes → observabilidade granular.

  • MDC e contexto distribuído nos logs
    Trace ID, User ID, span → logs ricos e rastreáveis.

  • Logs estruturados (JSON)
    Envio via Datadog Agent com parsing automático.

  • Traces automáticos com OpenTelemetry
    Sem necessidade de código adicional para rastrear requisições.

  • Observabilidade ponta a ponta
    Visibilidade completa da aplicação ao infra, com baixo esforço de instrumentação.


7. Boas Práticas e Casos de Uso

  • Definição de SLOs reais
    Baseados em dados concretos de latência e disponibilidade.

  • Alertas inteligentes
    Métricas do Quarkus → thresholds dinâmicos → menor ruído.

  • Dashboards por squad ou contexto
    Ex: latência de endpoints mantidos por determinada equipe.

  • Logs orientados a contexto
    Inclua trace ID, span ID, user ID → logs com valor real.

  • Análise de regressão no CI/CD
    Compare performance por commit/deploy com o Datadog.

  • Debug em produção sem dor
    Trace detalhado + logs correlacionados = resolução rápida.


8. Conclusão

  • Ganhos claros:

    • Menor MTTR

    • Melhor performance

    • Facilidade de debugging

    • Transparência entre squads

  • Quarkus + Datadog = match perfeito para DevOps e SRE

    • Produtividade de um lado

    • Inteligência operacional do outro

  • Observabilidade não é opcional

    • “Não dá pra gerenciar o que não se pode observar”

Prática:

Projetos utilizados:

Github:

luizpais/encurtator: Encurtador de Urls Simples ou de Campanhas

luizpais/campainer:CRUD de Campanhas

Checklist do pontos mais importantes:

  1. Criar uma conta trial no site do Datadog.

  2. Configurar a geração de logs no padrão json, incluindo a dependência no arquivo pom.xml:

             <dependency>
                 <groupId>io.quarkus</groupId>
                 <artifactId>quarkus-logging-json</artifactId>
             </dependency>
    
  3. Configurar o padrão de escrita e rotação do log no arquivo application.properties

     quarkus.log.file.enable=true
     quarkus.log.file.path=encurtator.log
     quarkus.log.file.format=%d{yyyy-MM-dd HH:mm:ss} %-5p [%c] (%t) %s%e%n
     quarkus.log.file.rotation.max-file-size=10M
     quarkus.log.file.rotation.max-backup-index=5
     quarkus.log.level=INFO
    
  4. Subir as aplicações com as variáveis de ambiente DD_ENV, DD_VERSION, DD_SERVICE, DD_LOGS_INJECTION: true.

    1. encurtador:

      1. DD_ENV=dev, DD_VERSION=1.0.0, DD_SERVICE=encurtador, DD_LOGS_INJECTION= true.
    2. campainer:

      1. DD_ENV=dev, DD_VERSION=0.1.0, DD_SERVICE=campainer, DD_LOGS_INJECTION= true.
  5. Baixar o arquivo jar de trace java: https://github.com/DataDog/dd-trace-java/releases/download/v1.52.0/dd-java-agent.jar

    1. Subir seu serviço java assim:
      java -javaagent=/path/dd-java-agent.jar -jar “application.jar” onde path deve ser o caminho do jar do agente.

Isto feito vc deve começar a visualizar seus traces no Datadog!

##

0
Subscribe to my newsletter

Read articles from Luiz Pais directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Luiz Pais
Luiz Pais

I work in IT for over 30 years. I love what I do and greatly enjoy interacting with other professionals, learning, helping, and making our field more accessible. I'm a proud nerd. Currently, I work with Java and its ecosystem. I have experience with the .Net platform, on which I worked for over 13 years.