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

自動化されたデバッグログは、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 Python Tracer のデバッグモードを有効にする手順は、アプリケーションが使用しているトレーサーのバージョンに依存します。該当するシナリオを選択してください。

シナリオ 1: ddtrace バージョン 2.x 以上

  1. デバッグモードを有効にするには: DD_TRACE_DEBUG=true

  2. デバッグログをログファイルにルーティングするには、 DD_TRACE_LOG_FILE をそのログファイルのファイル名に、現在の作業ディレクトリからの相対パスで設定します。例えば、DD_TRACE_LOG_FILE=ddtrace_logs.log とします。 デフォルトでは、ファイルサイズは 15728640 バイト (約 15MB) で、1 つのバックアップログファイルが作成されます。デフォルトのログファイルのサイズを大きくするには、DD_TRACE_LOG_FILE_SIZE_BYTES の設定でサイズをバイト単位で指定します。

注: アプリケーションがルートロガーを使用し、ログレベルを DEBUG に変更すると、デバッグトレーサーログが有効になります。この動作をオーバーライドしたい場合は、以下のように ddtrace ロガーをオーバーライドします。

import logging

# ルートロガー構成
root_logger = logging.getLogger()
root_logger.setLevel(logging.DEBUG)

# ddtrace 構成を WARNING ログレベルにオーバーライド
logging.getLogger("ddtrace").setLevel(logging.WARNING)

シナリオ 2: ddtrace バージョン 1.3.2〜<2.x

  1. デバッグモードを有効にするには: DD_TRACE_DEBUG=true

  2. デバッグログをログファイルにルーティングするには、 DD_TRACE_LOG_FILE にトレーサーのログを書き込むファイル名を、現在の作業ディレクトリからの相対パスで設定します。例えば、DD_TRACE_LOG_FILE=ddtrace_logs.log とします。 デフォルトでは、ファイルサイズは 15728640 バイト (約 15MB) で、1 つのバックアップログファイルが作成されます。デフォルトのログファイルのサイズを大きくするには、DD_TRACE_LOG_FILE_SIZE_BYTES の設定でサイズをバイト単位で指定します。

  3. ログをコンソールにルーティングするには、Python 2 アプリケーションでは、 logging.basicConfig() 等を構成してください。Python 3 のアプリケーションでは、ログは自動的にコンソールに送られます。

シナリオ 3: ddtrace バージョン 1.0.x〜1.2.x

  1. デバッグモードを有効にするには: DD_TRACE_DEBUG=true

  2. Python 2 または Python 3 アプリケーションでログをコンソールにルーティングするには、logging.basicConfig() を構成するか、DD_CALL_BASIC_CONFIG=true を使用します。

シナリオ 4: ddtrace バージョン 0.x

  1. デバッグモードを有効にするには: DD_TRACE_DEBUG=true

  2. Python 2 または Python 3 アプリケーションでログをコンソールにルーティングするには、logging.basicConfig() を構成するか、DD_CALL_BASIC_CONFIG=true を使用します。

シナリオ 5: 標準のロギングライブラリを使用した、アプリケーションコードでのデバッグログの構成

どのバージョンの ddtrace でも、トレーサー環境変数 DD_TRACE_DEBUG を設定する代わりに、標準ライブラリ logging を直接使用して、アプリケーションコード内でデバッグログを有効にすることができます。

log = logging.getLogger("ddtrace.tracer")
log.setLevel(logging.DEBUG)

デバッグログを確認する

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

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

Python トレーサーが生成するログは、ロギングハンドラ名 ddtrace を持ちます。

トレースが生成されました:

<YYYY-MM-DD> 19:51:22,262 DEBUG [ddtrace.internal.processor.trace] [trace.py:211] - trace <TRACE ID> has 8 spans, 7 finished

Python トレーサーによって生成されたスパン:

<YYYY-MM-DD> 19:51:22,251 DEBUG [ddtrace.tracer] [tracer.py:715] - finishing span name='flask.process_response' id=<SPAN ID> trace_id=<TRACE ID>  parent_id=<PARENT ID> service='flask' resource='flask.process_response' type=None start=1655495482.2478693 end=1655495482.2479873 duration=0.000118125 error=0 tags={} metrics={} (enabled:True)
0.0:5050/

トレースが Datadog Agent に送信されました:

<YYYY-MM-DD> 19:59:19,657 DEBUG [ddtrace.internal.writer] [writer.py:405] - sent 1.57KB in 0.02605s to http://localhost:8126/v0.4/traces

Datadog Agent へのトレース送信に失敗した:

<YYYY-MM-DD> 19:51:23,249 ERROR [ddtrace.internal.writer] [writer.py:567] - failed to send traces to Datadog Agent at http://localhost:8126/v0.4/traces

その他の参考資料

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

PREVIEWING: emmett.butler/dd-trace-api