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

自動化されたデバッグログは、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 Java トレーサーのデバッグモードを有効にするには、JVM の起動時にフラグ -Ddd.trace.debug=true を設定するか、環境変数として DD_TRACE_DEBUG=true を追加します。

: Datadog Java トレーサーは SL4J SimpleLogger を実装するため、そのすべての設定を適用できます。例えば、専用のログファイルにロギングするには次のようにします。

-Ddatadog.slf4j.simpleLogger.logFile=<NEW_LOG_FILE_PATH>

デバッグログを確認する

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

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

トレーサーの初期化ログ:

[main] DEBUG datadog.trace.agent.ot.DDTracer - Using config: Config(runtimeId=<ランタイム ID>, serviceName=<サービス名>, traceEnabled=true, writerType=DDAgentWriter, agentHost=<ここに IP>, agentPort=8126, agentUnixDomainSocket=null, prioritySamplingEnabled=true, traceResolverEnabled=true, serviceMapping={}, globalTags={env=none}, spanTags={}, jmxTags={}, excludedClasses=[], headerTags={}, httpServerErrorStatuses=[512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511], httpClientErrorStatuses=[400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499], httpClientSplitByDomain=false, partialFlushMinSpans=1000, runtimeContextFieldInjection=true, propagationStylesToExtract=[DATADOG], propagationStylesToInject=[DATADOG], jmxFetchEnabled=true, jmxFetchMetricsConfigs=[], jmxFetchCheckPeriod=null, jmxFetchRefreshBeansPeriod=null, jmxFetchStatsdHost=null, jmxFetchStatsdPort=8125, logsInjectionEnabled=false, reportHostName=false)

生成されるトレースの例:

[http-nio-8080-exec-1] DEBUG datadog.trace.agent.ot.DDSpan - Finished: DDSpan [ t_id=<トレース id>, s_id=<スパン id>, p_id=< id>] trace=SpringBoot_Service/OperationHandler.handle/OperationHandler.handle metrics={} tags={component=spring-web-controller, env=none, span.kind=server, thread.id=33, thread.name=http-nio-8080-exec-1}, duration_ns=92808848
[http-nio-8080-exec-1] DEBUG datadog.trace.agent.ot.PendingTrace - traceId: <トレース id> -- Expired reference. count = 1
[http-nio-8080-exec-1] DEBUG datadog.trace.agent.ot.DDSpan - Finished: DDSpan [ t_id=<トレース id>, s_id=<スパン id>, p_id=0] trace=SpringBoot_Service/servlet.request/GET /actuator/prometheus metrics={_sampling_priority_v1=1} tags={component=java-web-servlet, env=none, http.method=GET, http.status_code=200, http.url=http://<IP>:8080/actuator/prometheus, language=jvm, peer.hostname=<IP>, peer.ipv4=<IP>, peer.port=50778, runtime-id=<ランタイム id>, span.kind=server, span.origin.type=org.apache.catalina.core.ApplicationFilterChain, thread.id=33, thread.name=http-nio-8080-exec-1}, duration_ns=157972901
[http-nio-8080-exec-1] DEBUG datadog.trace.agent.ot.PendingTrace - Writing 2 spans to DDAgentWriter { api=DDApi { tracesUrl=http://<IP アドレス>/v0.4/traces } }.

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

[http-nio-8080-exec-1] DEBUG datadog.trace.agent.ot.PendingTrace - traceId: <トレース id> -- Expired reference. count = 0
[dd-trace-writer] DEBUG datadog.trace.agent.common.writer.DDApi - Successfully sent 1 of 2 traces to the DD agent.

その他の参考資料

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

PREVIEWING: thang.nguyen/thang62590-patch-bt-requirements
Your Privacy Choices