AWS X-Ray
開発者ガイド

ローカルで X-Ray デーモンを実行する

AWS X-Ray デーモンを、Linux、MacOS、Windows、または Docker コンテナでローカルに実行できます。実装されたアプリケーションを開発してテストするときに、デーモンを実行してトレースデータを X-Ray に中継します。ここに示す手順を使用して、デーモンをダウンロードして解凍します。

ローカルで実行する場合、デーモンは AWS SDK 認証情報ファイル (.aws/credentials) または環境変数から認証情報を読み取ることができます。詳細については、「X-Ray にデータを送信するアクセス権限をデーモンに付与する」を参照してください。

デーモンはポート 2000 の UDP データをリッスンします。ポートおよびその他のオプションは、設定ファイルとコマンドラインオプションを使用して変更できます。詳細については、「AWS X-Ray デーモンを設定する」を参照してください。

Linux で X-Ray デーモンを実行する

コマンドラインからデーモンの実行可能ファイルを実行できます。ローカルモードで実行するには -o オプションを、リージョンを設定するには -n を使用します。

~/xray-daemon$ ./xray -o -n us-east-2

バックグラウンドでデーモンを実行するには、& を使用します。

~/xray-daemon$ ./xray -o -n us-east-2 &

pkill を使用してバックグラウンドで実行されるデーモンプロセスを終了します。

~$ pkill xray

Docker コンテナで X-Ray デーモンを実行する

Docker コンテナでデーモンをローカルで実行するには、Dockerfile という名前のファイルに次のテキストを保存します。Docker Hub で、完全なイメージ例をダウンロードします。

例 Dockerfile – Amazon Linux

FROM amazonlinux RUN yum install -y unzip RUN curl -o daemon.zip https://s3.dualstack.us-east-2.amazonaws.com/aws-xray-assets.us-east-2/xray-daemon/aws-xray-daemon-linux-3.x.zip RUN unzip daemon.zip && cp xray /usr/bin/xray ENTRYPOINT ["/usr/bin/xray", "-t", "0.0.0.0:2000", "-b", "0.0.0.0:2000"] EXPOSE 2000/udp EXPOSE 2000/tcp

docker build を使用してコンテナイメージを構築します。

~/xray-daemon$ docker build -t xray-daemon .

docker run を使用してコンテナでイメージを実行します。

~/xray-daemon$ docker run \ --attach STDOUT \ -v ~/.aws/:/root/.aws/:ro \ --net=host \ -e AWS_REGION=us-east-2 \ --name xray-daemon \ -p 2000:2000/udp \ xray-daemon -o

このコマンドでは、以下のオプションを使用します。

  • --attach STDOUT – ターミナルにデーモンからの出力を表示します。

  • -v ~/.aws/:/root/.aws/:ro – コンテナに .aws ディレクトリへの読み取り専用アクセス権を与え、AWS SDK の認証情報を読み取らせます。

  • AWS_REGION=us-east-2AWS_REGION 環境変数を設定して、使用するリージョンをデーモンに指定します。

  • --net=host – コンテナを host ネットワークにアタッチします。ホストネットワーク上のコンテナは、ポートを公開しなくても相互に通信できます。

  • -p 2000:2000/udp – マシン上の UDP ポート 2000 をコンテナの同じポートにマップします。これは、同じネットワークのコンテナが通信するために必要ではありませんが、これにより、コマンドラインまたは Docker で実行されていないアプリケーションからセグメントをデーモンに送信できます。

  • --name xray-daemon – ランダムな名前を生成する代わりに、コンテナに xray-daemon という名前を付けます。

  • -o (イメージ名の後ろ) – コンテナ内でデーモンを実行するエントリポイントに -o オプションを追加します。このオプションは、Amazon EC2 インスタンスのメタデータを読み取らないようにするため、ローカルモードで実行するようにデーモンに指示します。

デーモンを停止するには、docker stop を使用します。Dockerfile を変更して新しいイメージを作成する場合は、同じ名前の別のコンテナを作成する前に、既存のコンテナを削除する必要があります。docker rm を使用してコンテナを削除します。

$ docker stop xray-daemon $ docker rm xray-daemon

Scorekeep サンプルアプリケーションは、ローカルの Docker コンテナで X-Ray デーモンを使用する方法を示します。詳細については、「Amazon ECS アプリケーションの作成」を参照してください。

Windows で X-Ray デーモンを実行する

コマンドラインからデーモンの実行可能ファイルを実行できます。ローカルモードで実行するには -o オプションを、リージョンを設定するには -n を使用します。

> .\xray_windows.exe -o -n us-east-2

PowerShell スクリプトを使用してデーモンのサービスを作成および実行します。

例 PowerShell スクリプト - Windows

if ( Get-Service "AWSXRayDaemon" -ErrorAction SilentlyContinue ){ sc.exe stop AWSXRayDaemon sc.exe delete AWSXRayDaemon } if ( Get-Item -path aws-xray-daemon -ErrorAction SilentlyContinue ) { Remove-Item -Recurse -Force aws-xray-daemon } $currentLocation = Get-Location $zipFileName = "aws-xray-daemon-windows-service-3.x.zip" $zipPath = "$currentLocation\$zipFileName" $destPath = "$currentLocation\aws-xray-daemon" $daemonPath = "$destPath\xray.exe" $daemonLogPath = "C:\inetpub\wwwroot\xray-daemon.log" $url = "https://s3.dualstack.us-west-2.amazonaws.com/aws-xray-assets.us-west-2/xray-daemon/aws-xray-daemon-windows-service-3.x.zip" Invoke-WebRequest -Uri $url -OutFile $zipPath Add-Type -Assembly "System.IO.Compression.Filesystem" [io.compression.zipfile]::ExtractToDirectory($zipPath, $destPath) sc.exe create AWSXRayDaemon binPath= "$daemonPath -f $daemonLogPath" sc.exe start AWSXRayDaemon

OS X で X-Ray デーモンを実行する

コマンドラインからデーモンの実行可能ファイルを実行できます。ローカルモードで実行するには -o オプションを、リージョンを設定するには -n を使用します。

~/xray-daemon$ ./xray_mac -o -n us-east-2

バックグラウンドでデーモンを実行するには、& を使用します。

~/xray-daemon$ ./xray_mac -o -n us-east-2 &

ターミナル終了時にデーモンが終了されるのを防止するには、nohup を使用します。

~/xray-daemon$ nohup ./xray_mac &