AWS X-Ray トレーシングを有効にする

AWS X-Ray を有効にする

前提条件: AWS インテグレーションのインストール

  1. 以下のアクセス許可が AWS/Datadog ロールのポリシードキュメントに含まれていることを確認します。
xray:BatchGetTraces,
xray:GetTraceSummaries
完全なトレースを返すには、`BatchGetTraces` 許可を使用します。`GetTraceSummaries` 許可は、最近のトレースの要約をリストで取得するために使用します。
  1. Datadog 内で X-Ray インテグレーションを有効にします

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

注: AWS X-Ray インテグレーションを有効にすると Indexed Span の消費量が増加するため、請求額が増加する場合があります。

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

AWS X-Ray インテグレーションを最大限活用するには:

  • Serverless Framework プラグインを使用または手動で、Lambda 関数および API Gateway 上で有効にします。
  • Lambda 関数でトレーシングライブラリをインストールします。

[推奨] Datadog Serverless Framework プラグイン

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

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

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

手動セットアップ

サーバーレスアプリケーションのデプロイに Serverless Framework を使用しない場合は、以下の方法で手動でセットアップします。

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

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

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

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 コールをインスツルメントするには

var AWSXRay = require('aws-xray-sdk');
AWSXRay.captureHTTPsGlobal(require('http'));
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);

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

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 のトレースには特定のインスツルメンテーションが必要です。

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