Registro JSON y Datadog

Por qué deberías usar JSON para el registro

Si hoy no usas registros JSON, probablemente dependes de los registros de texto plano y regex para entenderlos. Eso puede funcionar al principio, pero empezará a romperse, perderá estructura y empeorará cada vez más a medida que los sistemas crezcan. El registro JSON es el estándar. En aplicaciones modernas, tener registros estructurados y fácilmente analizables ya no es opcional. Proporciona un nivel de consistencia entre servicios sin perder la flexibilidad.

Datadog recomienda el registro JSON por una razón. Cuando los registros se emiten como JSON válido, el preprocesador de Datadog analiza automáticamente tus registros y los mapea a varios atributos reservados que reducen la sobrecarga y aseguran una extracción consistente de campos. No se necesita ninguna configuración adicional, ya que estos atributos reservados proporcionan los campos más relevantes, facilitan la integración con otros sistemas, filtrar registros, buscar de forma eficiente y configurar alertas. Los atributos reservados cruciales incluyen host, servicio, estado, trace id, span id y otros, que son esenciales para la observabilidad y la resolución de problemas.

Cómo configurarlo

En mi experiencia, había una abundancia de recursos sobre cómo configurar mejor el registro JSON. La referencia principal que utilicé fue la documentación de Datadog: https://docs.datadoghq.com/logs/log_collection/java/?tab=logback. me pareció mejor porque Datadog era la herramienta principal de observabilidad que usábamos y podrían solucionar problemas más fácilmente si surgía algún problema.

Usando la documentación de Datadog como guía, empecé creando el archivo de configuración logback-spring.xml . Aquí es donde ocurre la mayor parte del trabajo. Al principio, experimenté con varios codificadores JSON y añadí campos que pensé que podrían ser útiles. Finalmente, comprendí el poder de la simplicidad: una configuración limpia y minimalista es más fácil de mantener y menos probable que se rompa.

<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>

Después de añadir las dependencias requeridas de Logback y añadir este código a mi archivo logback-spring.xml, el último paso importante es establecer 'json-logs' como el perfil activo de Spring en el YAML de tu aplicación. Esto garantiza que el registro JSON esté habilitado en todo tu entorno y funcione de forma coherente en todos los servicios.

Si se siguieron correctamente estos pasos, deberías poder seguir tus registros y ver los resultados. Deberían estar en un registro clave-valor similar 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"}  

En este punto, tus registros en Datadog deberían estar estructurados, la correlación de trazas debería funcionar para registros con IDs de traza, y deberías ver atributos más detallados y consistentes.

Errores y consejos comunes

Con la configuración adecuada, el inicio de sesión en JSON en Datadog se vuelve fiable y mucho más fácil de mantener. Al eliminar supuestos heredados y mantener tu configuración simple, obtienes registros estructurados, campos consistentes, correlación de trazos y filtrado y alertas más sencillos. El registro JSON no es solo una buena práctica; es esencial para mejorar la observabilidad en aplicaciones modernas.

Sobre el autor

Chase Hollander
Desarrollador AEM en Arbory Digital

Profesional Ágil Certificado, desarrollador y consultor con experiencia en AEM

Contacta con Chase en LinkedIn

¿Te ha gustado lo que has oído? ¿Tienes preguntas sobre lo que es lo mejor para ti? ¡Nos encantaría hablar! Contáctenos

Artículos relacionados

category
AEM Technical Help
tags
number of rows
1