JSON ロギングと Datadog

ログにJSONを使用する理由

現在 JSON ログを使用していない場合は、おそらくプレーンテキスト ログと正規表現に依存してログの意味を理解しているでしょう。最初はうまくいくかもしれませんが、システムが拡大するにつれて、壊れ始め、構造が失われ、どんどん悪化していきます。JSON ロギングが標準です。現代のアプリケーションでは、構造化され、簡単に解析できるログを持つことはもはやオプションではありません。柔軟性を維持しながら、サービス間で一定レベルの一貫性を実現します。

Datadog が JSON ログ記録を推奨するのには理由があります。ログが有効な JSON として出力されると、Datadog のプリプロセッサは自動的にログを解析し、オーバーヘッドを削減して一貫したフィールド抽出を保証するいくつかの予約済み属性にマッピングします。これらの予約済み属性は最も関連性の高いフィールドを提供するため、他のシステムとの統合、ログのフィルタリング、効率的な検索、アラートの設定が容易になり、追加の構成は必要ありません。重要な予約済み属性には、ホスト、サービス、ステータス、トレース ID、スパン ID などがあり、これらは監視とトラブルシューティングに不可欠です。

設定方法

私の経験では、JSON ログを最適に構成する方法に関するリソースは豊富にありました。私が使用した主な参考資料は、Datadog のドキュメントです: https://docs.datadoghq.com/logs/log_collection/java/?tab=logback. Datadog は私たちが使用した主な観測ツールであり、問題が発生した場合にトラブルシューティングが容易になるため、これが最適だと判断しました。

Datadog のドキュメントをガイドとして使用し、まず logback-spring.xml 構成ファイルを作成しました。ここでほとんどの作業が行われます。最初は、さまざまな JSON エンコーダーを試して、役立つと思われるフィールドを追加しました。最終的に、私はシンプルさの威力に気づきました。つまり、クリーンで最小限の構成であれば、保守が容易になり、壊れる可能性も低くなります。

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

必要な Logback 依存関係を追加し、このコードを logback-spring.xml ファイルに追加した後、最後の主要なステップは、アプリケーション YAML でアクティブな Spring プロファイルとして 'json-logs' を設定することです。これにより、JSON ログが環境全体で有効になり、すべてのサービスで一貫して機能するようになります。

これらの手順を正しく実行すると、ログを追跡して結果を確認できるはずです。これらは次のようなキー値ログにあるはずです。

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

この時点で、Datadog のログは構造化され、トレース ID を持つログに対してトレース相関が機能し、より詳細で一貫性のある属性が表示されるはずです。

よくある間違いとアドバイス

適切な設定を行うと、Datadog での JSON ログ記録の信頼性が高まり、保守がはるかに容易になります。従来の前提を排除し、構成をシンプルに保つことで、構造化されたログ、一貫性のあるフィールド、トレースの相関関係、フィルタリングとアラートの容易さを実現できます。JSON ロギングは単なるベストプラクティスではなく、最新のアプリケーションの可観測性を向上させるために不可欠です。

著者について

チェイス・ホランダー
Arbory Digital の AEM 開発者

AEM の経験を持つ Agile 認定プロフェッショナル、開発者、コンサルタント

LinkedinでChaseに連絡する

聞いてみてどうでしたか?自分に合ったものについてご質問がありますか?ぜひご相談ください!お問い合わせ

関連記事

category
AEM Technical Help
tags
number of rows
1