Datadog APM で予期しない動作が発生した場合に、ご自分で確認できるよくある問題を本ガイドでいくつかご紹介します。問題が解決しない場合は、Datadog サポート にお問い合わせください。また、各リリースには改善と修正が含まれているため、使用する Datadog トレースライブラリの最新バージョンに定期的に更新することをお勧めします。
起動時、Datadog トレースライブラリは、JSON オブジェクトに適用された設定を反映するログおよび発生したエラーを出力します。それには、対応する言語で Agent に到達できるかも含まれます。一部の言語では、この起動ログが環境変数 DD_TRACE_STARTUP_LOGS=true
で有効化されている必要があります。起動ログについて、詳しくはトラブルシューティング関連ページを参照してください。
Datadog トレーサーの詳細をすべて取得するには、DD_TRACE_DEBUG
環境変数を使いトレーサーのデバッグモードを有効にします。独自の調査のために有効にしたり、Datadog サポートもトリアージ目的で推奨していることを理由に、有効にしたりできます。ただし、ログのオーバーヘッドが発生するため、デバッグモードを有効のままにはしないでください。
これらのログは、インスツルメンテーションエラーやインテグレーション固有のエラーを明らかにすることができます。デバッグログの有効化と取得に関する詳細は、デバッグモードのトラブルシューティングページを参照してください。
インスツルメント済みのアプリケーションは、現時点から最大過去18時間および未来2時間までのタイムスタンプのスパンを送信できます。
Datadog では、以下の文字列が指定された文字数を超えた場合、切り捨てられます。
名前 | 文字 |
---|---|
サービス | 100 |
オペレーション | 100 |
type | 100 |
リソース | 5000 |
タグキー | 200 |
タグの値 | 5000 |
また、スパンに存在するスパンタグの数が、250 以上にならないようにしてください。
指定された 10 分間に、Datadog では以下の組み合わせが許容されます。より大きなボリュームに対応するには、特定のユースケースについてサポートまでお問い合わせください。
Datadog Agent ログで、レート制限や 1 秒あたりの最大イベント数に関するエラーメッセージが表示される場合、以下の手順に従い制限を変更します。ご不明な点は、サポートチームまでお問い合わせください。
Datadog Agent またはトレースクライアント (一部の言語のみ) 内で構成可能なヘルスチェック、またその他不要なトラフィックに関連する機密データのスクラブやトレースの破棄に関しては数々のコンフィギュレーションオプションが用意されています。利用可能なオプションについては、ドキュメントのセキュリティと Agent のカスタマイズページを参照してください。本文では代表的な例をご紹介していますが、これらのオプションをお使いの環境に適用する際にサポートが必要な場合は、希望される結果の詳細を添えて Datadog サポートまでお問い合わせください。
サポートチケットを作成する際、下記のような情報が必要となる場合がございます。
問題を確認することはできますか?たとえば、トレース (推奨) やスクリーンショットへのリンクを提供し、何が起こるかをお聞かせください。
これにより、サポートチームはエラーを確認し、そのテスト環境で問題の再現を試みることができます。
起動ログにより、トレーサーの設定ミスやトレーサーがDatadog Agent と通信できていないことが分かります。トレーサーが参照するコンフィギュレーションとアプリケーションやコンテナ内の設定を比べることで、設定が正しく適用されていない箇所を特定できます。
トレーサーのデバッグログは起動ログよりさらに深く掘り下げ、トラフィックがアプリケーションを通過するまでチェックしがたい方法でインテグレーションが正しくインスツルメントされているか判断するのに役立ちます。デバッグログはトレーサーが作成するスパンの内容を確認したり、スパンを Agent に送信する際に接続に問題がある場合エラーを表面化させることもできます。トレーサーのデバッグログは、トレーサーの微妙な動作を確認するのに最も有益で信頼性の高いツールです。
これらのログで探している情報に応じて、デバッグまたはトレースモード中にトレースが Agent に送信された期間の代表的なログサンプルをキャプチャする Agent フレア (ログおよび構成のスナップショット)
Agent フレアにより Datadog Agent 内で起きていることや、トレースが Agent 内で拒否または不正な形式にされているかを確認できます。これはトレースが Agent に到達していない場合は役に立ちませんが、問題の原因やメトリクスの不一致を特定することはできます。
ログのレベルを debug
または trace
モードに調節する場合は、この操作によりログの量が劇的に増加し、システムリソースの消費量 (主に長期的なストレージスペースの増加) が見込まれることを考慮してください。この操作は一時的なトラブルシューティング目的のみで行い、完了後はレベルを info
に戻すことを推奨します。
注: Agent v7.19+ および Datadog Helm チャートの最新版、または Datadog Agent とトレース Agent が別コンテナにある状況で DaemonSet をご利用の場合は、トレース Agent からフレアを取得するために datadog.yaml
に log_level: DEBUG
または log_level: TRACE
を設定した状態で以下のコマンドを実行する必要があります。
trace-agent.sh
kubectl exec -it <agent-pod-name> -c trace-agent -- agent flare <case-id> --local
環境の詳細
アプリケーションのデプロイ方法を知ることで、トレーサーと Agent 間の通信の問題や設定ミスにおけるありがちな問題を特定することができます。問題が複雑な場合は、Kubernetes マニフェストや ECS タスク定義などを参照していただく場合もあります。
トレーサーコンフィギュレーション、カスタムインスツルメンテーション、スパンタグの追加など、トレーシングライブラリを使用して書かれたカスタムコード
カスタムインスツルメンテーションは、とても強力なツールになりますが、Datadog でトレースを視覚化する際に意図しない副作用を生み出す可能性もあるため、質問することで疑問を取り除きます。また、自動インスツルメンテーションおよびコンフィギュレーションをお願いすることで、トレーサーの起動ログとデバッグログで表示されるものと一致するかも確認できます。
ご使用の言語、フレームワーク、Datadog Agent、トレーシングライブラリのバージョン
使用するバージョンを知ることで、インテグレーションが 互換性要件でサポートされていることを確認したり、既知の問題をチェックしたり、トレーサーや言語のバージョンに問題がある場合はその更新をお勧めすることができます。