AWS X-Ray

AWS X-Ray

Crawler Crawler

Datadog AWS Lambda X-Ray インテグレーションは、商用 AWS アカウントでのみサポートされます。商用 Lambda アカウントがない場合、Datadog AWS Lambda X-Ray インテグレーションは Datadog for Government サイトではサポートされません。

概要

AWS X-Ray を使用すると、開発者は AWS 製品を使用して構築された分散アプリケーションをトレースできます。このインテグレーションは、サーバーレス関数詳細ページで Lambda 関数のトレースを提供します。詳細については、サーバーレス監視を参照してください。

セットアップ

インストール

最初に、AWS インテグレーションを有効化し、以下のアクセス許可が AWS/Datadog ロールのポリシードキュメントに含まれていることを確認します。

xray:BatchGetTraces,
xray:GetTraceSummaries

GetTraceSummaries アクセス許可は、最新のトレースのリストを取得するために使用されます。BatchGetTraces は、実際にトレース全体を返します。

次に、Datadog 内で X-Ray インテグレーションを有効にします

カスタマーマスターキー (CMK) を使用してトレースを暗号化している場合は、X-Ray に使用される CMK がリソースとなっているポリシーに kms:Decrypt メソッドを追加してください。

注: AWS X-Ray インテグレーションを有効にすると、請求に影響する可能性のある Indexed Spans の量が増加します。

関数の AWS X-Ray を有効化する

AWS X-Ray インテグレーションを最大限に活用するには、これを Lambda 関数と API Gateways 有効化し、さらに Lambda 関数_に_トレーシングライブラリをインストールします。

サーバーレスフレームワークプラグイン

Datadog Serverless Framework プラグインは、Lambda 関数と API Gateway インスタンスの X-Ray を自動的に有効化します。また、このプラグインは Datadog Lambda レイヤーを Node 関数と Python 関数に自動的に追加します。

Serverless Framework プラグインの使用を開始するには、ドキュメントを参考にしてください

最後に、[X-Ray クライアントライブラリをインストールして Lambda 関数にインポートします](#X-Ray クライアントライブラリのインストール)。

手動セットアップ

  1. AWS コンソールで、インスツルメントする Lambda 関数に移動します。「デバッグとエラー処理」セクションで、アクティブトレースを有効にしますの隣のチェックボックスをオンにします。これにより、その関数の X-Ray がオンになります。
  2. API Gateway コンソールに移動します。API > ステージの順に選択し、Logs/Tracing タブで Enable X-Ray Tracing にチェックを入れます。この変更を有効にするには、左のナビゲーションパネルで Resources に移動し、Actions > Deploy APIの順に選択します。

注: Datadog Lambda レイヤーとクライアントライブラリには依存関係として X-Ray SDK が含まれているため、プロジェクトに明示的にインストールする必要はありません。

最後に、[X-Ray クライアントライブラリをインストールして Lambda 関数にインポートします](#X-Ray クライアントライブラリのインストール)。

Datadog の Lambda ライブラリで X-Ray セグメントを強化する (オプション )

: この機能は、Node.js または Python ランタイムで記述された AWS Lambda 関数に限定されます。

Datadog の Lambda ライブラリは、X-Ray セグメントを追加のメタデータでリッチ化し、APM トレースとサーバーレスビューの両方で利用できるようにします。Datadog Lambda ライブラリで Lambda 関数をインスツルメントするには、ランタイムとデプロイメントツール別の手順詳細または以下のカスタムインストール手順を参照してください。

Python Lambda 関数

  • Datadog Lambda ライブラリをレイヤーまたはパッケージとしてインポートします。詳細な手順を参照してください。
  • 関数のハンドラーを datadog_lambda.handler.handler に設定します。
  • 元のハンドラーに、環境変数 DD_LAMBDA_HANDLER を設定します。例: myfunc.handler
  • (オプション) トレースのマージを使用していない場合は、環境変数 DD_TRACE_ENABLEDfalse に設定します。

Node Lambda 関数

  • Datadog Lambda ライブラリをレイヤーまたはパッケージとしてインポートします。詳細な手順を参照してください。
  • 関数のハンドラーを、レイヤーを使用する場合は /opt/nodejs/node_modules/datadog-lambda-js/handler.handler に、パッケージを使用する場合は node_modules/datadog-lambda-js/dist/handler.handler に設定します。
  • 元のハンドラーに、環境変数 DD_LAMBDA_HANDLER を設定します。例: myfunc.handler
  • (オプション) トレースのマージを使用していない場合は、環境変数 DD_TRACE_ENABLEDfalse に設定します。

X-Ray クライアントライブラリをインストールする

X-Ray クライアントライブラリから、API への HTTP リクエストと、DynamoDB、S3、MySQL、PostgreSQL (自己ホスト型、Amazon RDS、Amazon Aurora)、SQS、SNS へのコールに関する洞察を得られます。

ライブラリをインストールして Lambda プロジェクトにインポートし、インスツルメントするサービスにパッチを適用します。

X-Ray トレーシングライブラリをインストールする


npm install aws-xray-sdk

# Yarn ユーザー向け
yarn add aws-xray-sdk

AWS SDK をインスツルメントするには

var AWSXRay = require('aws-xray-sdk-core');
var AWS = AWSXRay.captureAWS(require('aws-sdk'));

すべてのダウンストリーム HTTP および HTTPS コールをインスツルメントするには

var AWSXRay = require('aws-xray-sdk');
AWSXRay.captureHTTPsGlobal(require('http'));
AWSXRay.captureHTTPsGlobal(require('https'));
var http = require('http');

PostgreSQL クエリをインスツルメントするには

var AWSXRay = require('aws-xray-sdk');
var pg = AWSXRay.capturePostgres(require('pg'));
var client = new pg.Client();

MySQL クエリをインスツルメントするには

var AWSXRay = require('aws-xray-sdk');
var mysql = AWSXRay.captureMySQL(require('mysql'));
//...
var connection = mysql.createConnection(config);

チェーンされたネイティブ Promise 内のサブセグメントをキャプチャするには

AWSXRay.capturePromise();

すべての発信 Axios リクエストをキャプチャするには

const AWSXRay = require('aws-xray-sdk');

AWSXRay.captureHTTPsGlobal(require('http'));
AWSXRay.capturePromise();

const AxiosWithXray = require('axios');

その他のコンフィギュレーション、サブセグメントの作成、アノテーションの記録については、Node.js 対応 X-Ray ドキュメントを参考にしてください。

X-Ray トレーシングライブラリをインストールする

pip install aws-xray-sdk

デフォルトですべてのライブラリにパッチを適用するには、Lambda ハンドラーが含まれるファイルに次のコードを追加します。

from aws_xray_sdk.core import xray_recorder
from aws_xray_sdk.core import patch_all
patch_all()

: aiohttp のトレースには特定のインスツルメンテーションが必要です。

その他のコンフィギュレーション、サブセグメントの作成、アノテーションの記録については、Python 対応 X-Ray ドキュメントを参考にしてください。

その他のランタイムについては、X-Ray SDK ドキュメントを参考にしてください。

収集データ

AWS X-Ray インテグレーションは、AWS からトレースデータを取得しますが、メトリクスやログは収集しません。