AWS X-Ray
Dash が新機能を発表!インシデントマネジメント、Continuous Profiler など多数の機能が追加されました! Dash イベントで発表された新機能!

AWS X-Ray

Crawler Crawler

概要

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

セットアップ

インストール

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

xray:BatchGetTraces,
xray:GetTraceSummaries

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

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

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

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

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

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

推奨: Serverless Framework プラグインを使用する

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

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

最後に、X-Ray クライアントライブラリをインストールして Lambda 関数にインポートします

手動セットアップ

  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 クライアントライブラリをインストールする

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);

その他のコンフィギュレーション、サブセグメントの作成、アノテーションの記録については、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 からトレースデータを取得しますが、メトリクスやログは収集しません。