AWS X-Ray を有効にする
前提条件: AWS インテグレーションのインストール。
- 以下のアクセス許可が AWS/Datadog ロールのポリシードキュメントに含まれていることを確認します。
xray:BatchGetTraces,
xray:GetTraceSummaries
完全なトレースを返すには、`BatchGetTraces` 許可を使用します。`GetTraceSummaries` 許可は、最近のトレースの要約をリストで取得するために使用します。
Datadog 内で X-Ray インテグレーションを有効にします。
カスタマーマスターキーを使用してトレースを暗号化している場合は、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 を使用しない場合は、以下の方法で手動でセットアップします。
- AWS コンソールで、インスツルメントする Lambda 関数に移動します。「デバッグとエラー処理」セクションで、アクティブトレースを有効にしますの隣のチェックボックスをオンにします。これにより、その関数の X-Ray がオンになります。
- API Gateway コンソールに移動します。API を選択し、次にステージを選択します。
- Logs/Tracing タブで Enable X-Ray Tracing を選択します。
- この変更を有効にするには、左のナビゲーションパネルで 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 トレーシングライブラリをインストールする
デフォルトですべてのライブラリにパッチを適用するには、Lambda ハンドラーが含まれるファイルに次のコードを追加します。
from aws_xray_sdk.core import xray_recorder
from aws_xray_sdk.core import patch_all
patch_all()
aiohttp
のトレースには特定のインスツルメンテーションが必要です。
その他のコンフィギュレーション、サブセグメントの作成、アノテーションの記録については、X-Ray Python ドキュメントを参照してください。