サーバーレスアプリケーションによる分散型トレーシング

トレースサーバーレス関数

Datadog では、サーバーレストレースをメトリクスに接続することで、アプリケーションのパフォーマンスに関する豊富な情報を提供します。これにより、サーバーレスアプリケーションの性質である分散型の環境でもパフォーマンスの問題を的確にトラブルシューティングできます。

Datadog Python、Node.js、Ruby、Go、Java、.NET トレーシングライブラリは、AWS Lambda の分散型トレーシングをサポートしています。

トレーシングソリューションの選択

Datadog で AWS Lambda をトレースするためのアーキテクチャ図
サーバーレスモニタリングは初めてですか?こちらのインストール手順に従って開始します。

サーバーレスアプリケーションで Datadog APM を使い始めるには、Datadog のトレーシングクライアント (dd-trace) を使ってトレースを生成するか、AWS から X-Ray トレースを引っ張ってくるかを選択できます。

dd-trace を使用した Datadog APMAWS X-Ray を使用した Datadog APM
Datadog APM のインテグレーションライブラリを使用してエンドツーエンドのトレーシングを行います。AWS X-Ray からトレースを取得します。
Datadog でトレースをリアルタイムで視覚化します。トレースデータは数分後に Datadog で利用可能。
テールベースのサンプリングと完全にカスタマイズ可能なタグベースの保持フィルター。サンプリングレートは構成できません。
すべての Lambda ランタイムをサポートしています。すべての Lambda ランタイムをサポートしています。

ランタイムの推奨事項

Python
Node.js
Ruby
Java
Go
.NET

Python と Node.js

Python および Node.js をサポートする Datadog Lambda ライブラリとトレースライブラリ:

  • Lambda ログおよびトレースとトレース ID およびタグ挿入との自動相関。
  • Serverless Framework、AWS SAM、AWS CDK インテグレーションを使用したコード変更なしのインストール。
  • ダウンストリームの Lambda 関数またはコンテナを呼び出す HTTP リクエストをトレース。
  • AWS SDK で実行された連続 Lambda 呼び出しのトレース。
  • AWS Managed Services を利用して非同期 Lambda 呼び出しをトレースする
    • API Gateway
    • SQS
    • SNS
    • SNS と SQS の直接インテグレーション
    • Kinesis
    • EventBridge
  • すぐに使用できる数十の追加の Python および Node.js ライブラリをトレース。

Python および Node.js サーバーレスアプリケーションの場合、Datadog では Datadog のトレースライブラリをインストールすることをお勧めします。Datadog では、アプリケーションで AppSync や Step Functions などの AWS マネージドサービスで AWS X-Ray アクティブトレースが必要な場合は、サーバーレストレースマージで説明されているように AWS X-Ray と Datadog APM の_両方_のトレースライブラリを構成して、Datadog APM で AWS X-Ray トレースを拡張することをお勧めします。

すでに X-Ray でサーバーレス関数をトレースしていて、X-Ray を引き続き使用したい場合は、AWS X-Ray インテグレーションをインストールできます。

上記にリストされていないサーバーレスリソースのトレースをご希望の場合は、機能リクエストを開いてください

Ruby

Ruby サポート用の Datadog Lambda ライブラリとトレースライブラリ:

  • Lambda ログおよびトレースとトレース ID およびタグ挿入との自動相関。
  • ダウンストリームの Lambda 関数またはコンテナを呼び出す HTTP リクエストをトレース。
  • すぐに使用できる数十の追加の Ruby ライブラリをトレース。

Datadog のトレースライブラリまたは AWS X-Ray インテグレーションのインストールを使用して、Datadog でサーバーレス関数をトレースできます。Datadog では、Datadog のトレースライブラリを使用していて、AWS マネージドサービス間で Lambda 関数トレースを接続する必要がある場合は、AWS X-Ray と Datadog APM の_両方_のトレースライブラリを構成して、トレースを拡張することをお勧めします。

上記にリストされていないサーバーレスリソースのトレースをご希望の場合は、機能リクエストを開いてください

Go

Go サポート用の Datadog Lambda ライブラリとトレースライブラリ:

  • Lambda ログおよびトレースとトレース ID およびタグ挿入との手動相関。
  • ダウンストリームの Lambda 関数またはコンテナを呼び出す HTTP リクエストをトレース。
  • すぐに使用できる数十の追加 Go ライブラリをトレース。

Go サーバーレスアプリケーションの場合、Datadog では Datadog のトレースライブラリをインストールすることをお勧めします。アプリケーションで API Gateway や Step Functions などの AWS マネージドサービスで AWS X-Ray アクティブトレースが必要な場合は、代わりに、Datadog APM と AWS X-Ray トレースの使用を検討することをお勧めします。

上記にリストされていないサーバーレスリソースのトレースをご希望の場合は、機能リクエストを開いてください

Java

Java サポート用の Datadog Lambda ライブラリとトレースライブラリ:

  • Lambda ログおよびトレースとトレース ID およびタグ挿入との相関。詳細は、Java ログとトレースの接続を参照してください。
  • ダウンストリームの Lambda 関数またはコンテナを呼び出す HTTP リクエストをトレース。
  • すぐに使用できる数十の追加 Java ライブラリをトレース。

Java サーバーレスアプリケーションの場合、Datadog では Datadog のトレースライブラリをインストールすることをお勧めします。アプリケーションで API Gateway や Step Functions などの AWS マネージドサービスで AWS X-Ray アクティブトレースが必要な場合は、代わりに、Datadog APM と AWS X-Ray トレースの使用を検討することをお勧めします。

Java Lambda 関数用の Datadog のトレースライブラリに関してフィードバックがございましたら、Datadog Slack コミュニティ#serverless チャネルで行われているディスカッションをご確認ください。

.NET

.NET 用のトレースライブラリは以下に対応しています。

  • ダウンストリームの Lambda 関数またはコンテナを呼び出す HTTP リクエストをトレース。
  • すぐに使用できる数十の追加 .NET ライブラリをトレース。

.NET サーバーレスアプリケーションの場合、Datadog では Datadog のトレースライブラリをインストールすることをお勧めします。アプリケーションで API Gateway や Step Functions などの AWS マネージドサービスで AWS X-Ray アクティブトレースが必要な場合は、代わりに、Datadog APM と AWS X-Ray トレースの使用を検討することをお勧めします。

.NET Azure サーバーレスアプリケーションを介したトレースの詳細をご覧ください。

ハイブリッド環境

Datadog のトレーシングライブラリ (dd-trace) を Lambda 関数とホストの両方にインストールした場合は、AWS Lambda、コンテナ、オンプレミスホスト、マネージドサービスなど、インフラストラクチャーの境界を越えてリクエストの全体像がトレースに自動的に表示されます。

Datadog Agent でホストに dd-trace がインストールされていて、サーバーレス関数が AWS X-Ray でトレースされる場合、インフラストラクチャー全体で接続された単一のトレースを表示するには、トレースのマージが必要です。dd-trace と AWS X-Ray からのトレースのマージの詳細については、サーバーレストレースのマージのドキュメントをご覧ください。

Datadog の AWS X-Ray インテグレーションは、Lambda 関数のトレースのみを提供します。コンテナまたはホストベースの環境でのトレースの詳細については、Datadog APM のドキュメントをご覧ください。

Datadog APM を有効にする

Datadog Python、Node.js、Ruby、Go、Java、.NET トレースライブラリは、AWS Lambda の分散トレースをサポートします。ご使用の関数にトレースを有効にするには、インストール手順に従ってください。

その他の参考資料