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

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

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

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

在本地运行时,守护程序可以从AmazonSDK 凭证文件 (.aws/credentials)或来自环境变量。有关更多信息,请参阅 授予守护程序向 X-Ray 发送数据的权限

守护程序在端口 2000 上侦听 UDP 数据。您可以使用配置文件和命令行选项更改端口和其他选项。有关更多信息,请参阅 配置Amazon 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 上下载完整的示例映像

例 Docker 文件 — 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目录来让它读取你的Amazon软件开发工具包凭据。

  • 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

Score守护程序示例应用程序展示了如何在本地 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 &