New Relic Logs in Context設定ガイド - APMとログの統合監視
New RelicのLogs in Context機能は、アプリケーションパフォーマンス監視(APM)データとログデータを自動的に関連付け、問題の根本原因分析を大幅に向上させる強力な機能です。この統合により、エンジニアはパフォーマンス問題やエラーが発生した際に、関連するログエントリを同じ画面で確認でき、トラブルシューティングの効率を劇的に改善できます。
Logs in Contextとは
Logs in Contextは、APMエージェントとログ管理システムを連携させ、トレースIDやスパンIDなどの分散トレーシング情報をログエントリに自動的に付与する機能です。この関連付けにより、特定のリクエストやトランザクションに関連するすべてのログを素早く特定できます。
機能の核となる価値
Logs in Contextが提供する主要な価値は4つの要素から構成されています。
自動的なデータ関連付けにより、トレースIDやスパンIDなどの分散トレーシング情報が、アプリケーションから出力されるすべてのログエントリに自動的に追加されます。開発者が手動でログにトレース情報を埋め込む必要がありません。
統合されたトラブルシューティング体験では、APMのトランザクション詳細画面から直接関連ログにアクセスできます。パフォーマンス問題やエラーが発生した際に、複数のツールを切り替える必要がなくなります。
完全なリクエストライフサイクルの可視化により、マイクロサービス環境での複雑なリクエストフローを、サービス間を跨いで追跡できます。各サービスで発生したログを時系列で確認し、問題の発生箇所を特定できます。
効率的なデバッグプロセスでは、エラーやパフォーマンス低下が発生した特定のリクエストに関連するログのみを表示できます。大量のログデータから関連する情報を手動で探す必要がありません。
APM Agentでの設定
各言語のAPM AgentでLogs in Contextを有効にする方法について説明します。
Java Agentの設定
Java環境では、New Relic Java Agentの設定ファイルまたは環境変数でLogs in Contextを有効にします。
# newrelic.yml
application_logging:
enabled: true
forwarding:
enabled: true
local_decorating:
enabled: true
この設定により、Javaアプリケーションのログにトレース情報が自動的に追加され、New Relicに転送されます。
その他の言語での設定
Node.js、Python、Ruby、.NETなど、各言語のAPM Agentでも同様の設定が可能です。設定方法は言語によって異なりますが、基本的な概念は同じです。
手動インストルメンテーション
特定の要件やカスタムロガーを使用している場合は、手動でLogs in Contextを実装することも可能です。
カスタムログフォーマッターの実装
アプリケーションのログ出力部分で、New RelicのAPIを使用してトレース情報を取得し、ログエントリに追加します。これにより、既存のログ出力フォーマットを維持しながらLogs in Contextの機能を活用できます。
JSON形式での出力
構造化されたJSON形式でログを出力することで、New Relicでの解析とフィルタリングが最適化されます。トレースID、スパンID、タイムスタンプ、ログレベル、メッセージなどを適切なフィールドとして出力します。
分散トレーシングとの統合
マイクロサービス環境では、分散トレーシングとLogs in Contextの統合が特に重要です。
サービス間のトレース伝播
HTTPヘッダーやメッセージキューを通じてトレース情報を伝播することで、複数のサービス間でのリクエスト追跡が可能になります。各サービスで生成されるログに同じトレースIDが付与され、完全なリクエストフローを可視化できます。
非同期処理での注意点
非同期処理やバックグラウンドジョブでのログ出力では、適切なコンテキスト管理が重要です。メインスレッドからのトレース情報を適切に引き継ぎ、関連付けを維持する必要があります。
フィルタリングと検索の最適化
Logs in Contextの機能を最大限に活用するためのフィルタリングと検索手法について説明します。
トレースIDによる検索
特定のトランザクションに関連するすべてのログを検索する際は、トレースIDを使用します。New RelicのログUI上で、トレースIDによるフィルタリングにより、関連するすべてのログエントリを一覧表示できます。
エラー関連ログの特定
エラーが発生したトランザクションのトレースIDを使用して、エラー発生前後のログを時系列で確認できます。これにより、エラーの原因となった処理や状況を特定しやすくなります。
パフォーマンスへの影響
Logs in Context機能の導入がアプリケーションパフォーマンスに与える影響について説明します。
オーバーヘッドの最小化
New RelicのAPM Agentは、Logs in Context機能を有効にしても最小限のオーバーヘッドで動作するよう最適化されています。トレース情報の付与やログ転送処理は非同期で実行され、アプリケーションのレスポンス時間への影響を最小限に抑えます。
サンプリング設定
大量のログが生成される環境では、サンプリング設定を適切に調整することで、パフォーマンスとコストのバランスを取ることができます。
セキュリティとプライバシー
Logs in Context機能使用時のセキュリティとプライバシー考慮事項について説明します。
機密情報の保護
ログに機密情報が含まれる可能性がある場合は、適切なフィルタリングやマスキング処理を実装します。New Relicへの転送前に、パスワードやAPIキーなどの情報を自動的に検出し、安全に処理します。
データアクセス制御
New Relic上でのログデータへのアクセスは、適切な権限設定により制御します。チームやプロジェクトごとにアクセス権限を設定し、必要な情報のみにアクセスできるよう制限します。
実運用での活用パターン
Logs in Context機能を効果的に活用するための実運用パターンについて説明します。
エラー調査プロセス
エラー発生時の調査プロセスでは、APMのエラー画面から直接関連ログにアクセスし、エラーの詳細情報と発生前後の処理状況を確認します。これにより、エラーの根本原因を迅速に特定できます。
パフォーマンス分析
レスポンス時間が遅いトランザクションの分析では、該当のトレースIDに関連するログを確認し、処理時間の長い箇所や外部API呼び出しの状況を詳細に調査します。
カスタマーサポート
顧客から問題の報告があった際は、該当時刻のトランザクションを特定し、関連するログを確認することで、顧客が経験した問題を正確に把握し、適切な対応を提供できます。
まとめ
New RelicのLogs in Context機能は、現代の複雑なアプリケーション環境における効率的なトラブルシューティングと監視を実現する重要な機能です。APMデータとログデータの自動的な関連付けにより、問題の根本原因分析が大幅に向上します。
適切な設定と運用により、開発チームとインフラチームの生産性を向上させ、システムの安定性と可用性を確保できます。分散トレーシングとの統合により、マイクロサービス環境での複雑な問題も効率的に解決できます。
セキュリティとプライバシーの考慮事項を適切に実装することで、企業レベルでの安全な運用を実現できます。実運用での活用パターンを理解することで、Logs in Context機能の価値を最大限に引き出すことができます。
次のステップとして、Logstashを使用したNew Relicログ統合について学んでいきましょう。より高度なログ処理パイプラインの構築と、大規模環境でのログ管理最適化手法を詳しく解説していきます。
関連記事: Logstashを使用したNew Relicログ統合関連記事: New Relicログ転送設定の完全ガイド