自動化されたデバッグログ収集

自動化されたデバッグログは、Java、.NET、Node.js、Python でサポートされています。他の言語の場合は、代わりに手動でのデバッグログ収集をご利用ください。

フレアを使用すると、機密データを除去したうえで、必要なトラブルシューティング情報 (レーサーログを含む) を Datadog サポートチームに送信できます。これは、高い CPU 使用率やメモリ使用率、スパンの欠落などの問題をトラブルシューティングする際に有用です。

前提条件

  • Datadog サイトからフレアを送信するには、Agent で Fleet AutomationRemote Configuration を有効にしてください。
  • 対応するトレーサーバージョンが必要です。
    • Java: 1.26.0 以上
    • Python: 2.11.0 以上
    • Node.js: 5.15.0 以上または 4.39.0 以上
    • .NET: 2.48.0 以上

フレアの送信

To send a remote flare:

  1. From the Fleet Automation page, select an Agent that requires support.
  2. Click Support.
  3. Click Send Support Ticket.
  4. Provide an existing Zendesk support ticket number. If you don’t provide a ticket number, one is created on your behalf.
  5. Enable Debug mode to allow Datadog support staff to troubleshoot your issue faster. The log level is reset to its previous configuration after you send the flare.
  6. If you are troubleshooting your application, enable application tracer level logs to be included in the flare.
  7. Click Send Ticket.

例:

Send Ticket ボタンは、既存または新規のサポートチケットにフレアを送信するためのフォームを起動します

手動でのデバッグログ収集

Datadog デバッグ設定を使用して、問題を診断したり、トレースデータを監査したりできます。ロガーに送信されるイベントの数が増えるため、実稼働システムでデバッグモードを有効にすることはお勧めできません。デバッグモードはデバッグ目的でのみ使用してください。

Datadog .NET トレーサーのデバッグモードを有効化するには、DD_TRACE_DEBUG コンフィギュレーションの設定を true に設定します。この設定は、web.config ファイル、app.config ファイル (.NET Framework のみ)、datadog.json ファイルで環境変数として設定できます。デバッグモードは、GlobalSettings.SetDebugEnabled(true) を呼び出すことで有効化することもできます。

using Datadog.Trace;

// デバッグモードを有効化
GlobalSettings.SetDebugEnabled(true);

ログファイルは、デフォルトで以下のディレクトリに保存されます。DD_TRACE_LOG_DIRECTORY 設定を使用してこれらのパスを変更できます。

プラットフォームパス
Windows%ProgramData%\Datadog .NET Tracer\logs\
Linux/var/log/datadog/dotnet/
Linux (Kubernetes ライブラリの挿入を使用する場合)/datadog-lib/logs
Azure App Service%AzureAppServiceHomeDirectory%\LogFiles\datadog

: Linux では、デバッグモードを有効にする前にログディレクトリを作成する必要があります。

バージョン 2.19.0 以降では、DD_TRACE_LOGFILE_RETENTION_DAYS 設定を使うことで、起動時に現在のロギングディレクトリからログファイルを削除するようにトレーサーを構成することができます。トレーサーは指定された日数より古いログファイルと同じ年齢のログファイルを削除します。デフォルト値は 31 です。

.NET Tracer の構成方法の詳細については、構成セクションを参照してください。

これらのパスで作成されるログには、次の 2 つのタイプがあります。

  1. ネイティブコードからのログ: 1.26.0 以降では、これらのログは dotnet-tracer-native-<processname>-<processid>.log として保存されます。バージョン 1.21.0〜1.25.x では、これらのログは dotnet-tracer-native.log として保存されていました。1.20.x 以前のバージョンでは、これは dotnet-profiler.log として保存されていました。
  2. マネージコードからのログ: 1.21.0 以降では、これらのログは dotnet-tracer-managed-<processname>-<date>.log に保存されます。1.20.x 以前のバージョンでは、これは dotnet-tracer-<processname>-<date>.log として保存されていました。

デバッグログを確認する

トレーサーのデバッグモードを有効にすると、トレーサー固有のログメッセージによって、初期化状況やトレースが Agent へ送信されたかを確認できます。デバッグログはログ設定に応じて別のパスに格納されます。アプリケーションレベルのトレーサー情報を有効にすると、デバッグログは対応する言語向けのフレアにも送信されます。以下は、ログファイルに出力されうるログメッセージの例です。

理解できないエラーがある場合、またはトレースが Datadog にフラッシュされたと報告されたものの Datadog UI に表示されない場合は、Datadog サポートに連絡し、フレア で関連するログエントリを入力します。

ネイティブコードからのログ:

[dotnet] 19861: [debug] JITCompilationStarted: function_id=<function id> token=<token id> name=System.Net.Http.Headers.HttpHeaders.RemoveParsedValue()

スパンを示すマネージコードからのログが生成されました:

{ MachineName: ".", ProcessName: "dotnet", PID: <process id>, AppDomainName: "test-webapi" }
YYYY-MM-DD HH:MM:SS.<integer> +00:00 [DBG] Span started: [s_id: <span id>, p_id: <parent span id>, t_id: <trace id>]
{ MachineName: ".", ProcessName: "dotnet", PID: <process id>, AppDomainName: "test-webapi" }
YYYY-MM-DD HH:MM:SS.<integer> +00:00 [DBG] Span closed: [s_id: <span id>, p_id: <parent span id>, t_id: <trace id>] for (Service: test-webapi, Resource: custom, Operation: custom.function, Tags: [<span tags>])

トレースを示すマネージコードからのログを Datadog Agent に送信できませんでした:

YYYY-MM-DD HH:MM:SS.<integer> +00:00 [ERR] An error occurred while sending traces to the agent at System.Net.Http.HttpRequestException: Connection refused ---> System.Net.Sockets.SocketException: Connection refused
   at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)
   --- End of inner exception stack trace ---

その他の参考資料

お役に立つドキュメント、リンクや記事:

PREVIEWING: aliciascott/DOCS-10258