在本地运行 X-Ray 守护程序 - AWS X-Ray
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

在本地运行 X-Ray 守护程序

您可以在 Linux、MacOS、Windows 上,或在 Docker 容器中本地运行 AWS X-Ray 守护程序。当您在开发和测试经过分析的应用程序时,运行守护程序可将跟踪数据中继到 X-Ray。使用此处的说明下载并解压缩守护程序。

在本地运行时,守护程序可以从 AWS 开发工具包凭证文件 (您的用户目录中的 .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.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 开发工具包凭证。

  • AWS_REGION=us-east-2 – 设置 AWS_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 &