Registro JSON e Datadog

Por que você deve usar JSON para registro de logs

Se você não está usando o registro de logs em JSON hoje, provavelmente está dependendo de logs em texto simples e expressões regulares para interpretá-los. Isso pode funcionar no início, mas começará a falhar, perderá a estrutura e piorará cada vez mais à medida que os sistemas crescerem. O registro em JSON é o padrão. Em aplicações modernas, ter registros estruturados e facilmente analisáveis deixou de ser opcional. Isso proporciona um nível de consistência entre os serviços, ao mesmo tempo que oferece flexibilidade.

A Datadog recomenda o registro em JSON por um motivo. Quando os registros são emitidos como JSON válido, o pré-processador do Datadog analisa automaticamente os registros e os mapeia para uma série de atributos reservados que reduzem a sobrecarga e garantem a extração consistente dos campos. Nenhuma configuração adicional é necessária, pois esses atributos reservados fornecem os campos mais relevantes, facilitando a integração com outros sistemas, a filtragem de logs, a busca eficiente e a configuração de alertas. Os atributos reservados cruciais incluem host, serviço, status, ID de rastreamento, ID do span e outros, que são essenciais para observabilidade e solução de problemas.

Como configurar

Na minha experiência, havia uma abundância de recursos sobre a melhor forma de configurar o registro de logs em JSON. A principal referência que usei foi a documentação do Datadog: https://docs.datadoghq.com/logs/log_collection/java/?tab=logback. Achei melhor porque o Datadog era a principal ferramenta de observabilidade que usávamos e eles seriam capazes de solucionar problemas mais facilmente se algum problema ocorresse.

Usando a documentação do Datadog como guia, comecei criando o arquivo de configuração logback-spring.xml . É aqui que a maior parte do trabalho acontece. Inicialmente, experimentei vários codificadores JSON e adicionei campos que achei que poderiam ser úteis. Com o tempo, percebi o poder da simplicidade: uma configuração limpa e minimalista é mais fácil de manter e menos propensa a apresentar problemas.

<springProfile name="json-logs">

        <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
            <encoder class="net.logstash.logback.encoder.LogstashEncoder" />
        </appender>

        <root level="INFO">
            <appender-ref ref="CONSOLE"/>
        </root>

Após adicionar as dependências necessárias do Logback e inserir este código no meu arquivo logback-spring.xml, o último passo importante é definir 'json-logs' como o perfil Spring ativo no meu arquivo YAML da aplicação. Isso garante que o registro em JSON esteja habilitado em todo o seu ambiente e funcione de forma consistente em todos os serviços.

Se esses passos foram seguidos corretamente, você poderá acompanhar os registros (logs) e ver os resultados. Eles devem estar em um registro de chave-valor semelhante a este:

{"@timestamp":"2025-1-13T13:02:27.512333-02:00","@version":"1","message":"Tomcat initialized with port 8080(http)",
"logger_name":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","thread_name":"main","level":"INFO",
"level_value":20000,"appName":"json-logs"}  

Neste ponto, seus registros no Datadog devem estar estruturados, a correlação de rastreamento deve funcionar para registros com IDs de rastreamento e você deve ver atributos mais detalhados e consistentes.

Erros comuns e conselhos

Com a configuração correta, o registro em JSON no Datadog torna-se confiável e muito mais fácil de manter. Ao eliminar pressupostos antigos e manter sua configuração simples, você obtém logs estruturados, campos consistentes, correlação de rastreamento e filtragem e alertas mais fáceis. O registro em JSON não é apenas uma boa prática; é essencial para melhorar a observabilidade em aplicações modernas.

Sobre o autor

Chase Hollander
Desenvolvedor AEM na Arbory Digital

Profissional certificado em metodologias ágeis, desenvolvedor e consultor com experiência em AEM.

Entre em contato com Chase no LinkedIn.

Gostou do que ouviu? Tem dúvidas sobre o que é certo para você? Adoraríamos conversar! Entre em contato conosco.

Artigos relacionados

category
AEM Technical Help
tags
number of rows
1