JSON Logging & Datadog

Pourquoi utiliser le JSON pour la journalisation

Si vous n’utilisez pas la journalisation JSON aujourd’hui, vous comptez probablement sur les journaux en clair et les regex pour les comprendre. Cela peut fonctionner au début, mais cela commencera à se décomposer, à perdre sa structure, et à empirer à mesure que les systèmes grandissent. La journalisation JSON est la norme. Dans les applications modernes, disposer de journaux structurés et facilement analysables n’est plus optionnel. Cela offre un certain niveau de cohérence entre les services tout en conservant de la flexibilité.

Datadog recommande la journalisation JSON pour une raison. Lorsque les journaux sont émis en JSON valide, le préprocesseur de Datadog analyse automatiquement vos journaux et les associe à un certain nombre d’attributs réservés qui réduisent la surcharge et garantissent une extraction cohérente des champs. Aucune configuration supplémentaire n’est nécessaire car ces attributs réservés fournissent les champs les plus pertinents, facilitant l’intégration avec d’autres systèmes, le filtrage des journaux, la recherche efficace et la mise en place des alertes. Les attributs réservés cruciaux incluent l’hôte, le service, le statut, l’id de trace, l’id span, et d’autres, essentiels pour l’observabilité et le dépannage.

Comment l’installer

D’après mon expérience, il y avait une abondance de ressources pour mieux configurer la journalisation JSON. La principale référence que j’ai utilisée était la documentation de Datadog : https://docs.datadoghq.com/logs/log_collection/java/?tab=logback. j’ai trouvé que c’était le mieux car Datadog était l’outil principal d’observabilité que nous utilisions et ils pouvaient dépanner plus facilement si des problèmes survenaient.

En utilisant la documentation Datadog comme guide, j’ai commencé par créer le fichier de configuration logback-spring.xml . C’est là que se fait la majeure partie du travail. Au début, j’ai expérimenté divers encodeurs JSON et ajouté des champs que je pensais utiles. Finalement, j’ai compris le pouvoir de la simplicité : une configuration propre et minimaliste est plus facile à entretenir et moins susceptible de se casser.

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

Après avoir ajouté les dépendances de connexion requises et ajouté ce code à mon fichier logback-spring.xml, la dernière étape majeure consiste à définir 'json-logs' comme profil Spring actif dans le YAML de votre application. Cela garantit que la journalisation JSON est activée dans tout votre environnement et fonctionne de manière cohérente sur tous les services.

Si ces étapes ont été suivies correctement, vous devriez pouvoir suivre vos journaux et voir les résultats. Ils devraient être dans un journal clé-valeur similaire à celui-ci :

{"@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"}  

À ce stade, vos journaux dans Datadog devraient être structurés, la corrélation de traces devrait fonctionner pour les journaux avec des identifiants de trace, et vous devriez voir des attributs plus détaillés et cohérents.

Erreurs courantes et conseils

Avec la bonne configuration, la connexion JSON dans Datadog devient fiable et beaucoup plus facile à maintenir. En supprimant les hypothèses héritées et en gardant votre configuration simple, vous obtenez des journaux structurés, des champs cohérents, une corrélation de traces, ainsi qu’un filtrage et une alerte plus faciles. La journalisation JSON n’est pas seulement une bonne pratique ; Il est essentiel pour améliorer l’observabilité dans les applications modernes.

À propos de l’auteur

Chase Hollander
Développeur AEM chez Arbory Digital

Professionnel certifié Agile, développeur et consultant avec une expérience en AEM

Contactez Chase sur LinkedIn

Tu as aimé ce que tu as entendu ? Vous avez des questions sur ce qui vous convient ? Nous serions ravis de discuter ! Contactez-nous

Articles connexes

category
AEM Technical Help
tags
number of rows
1