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

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

本地运行X-Ray 守护程序

您可以在 Linux、MacOS、Windows 上,或在 Docker 容器中本地运行 Amazon X-Ray 守护程序。本地运行守护程序,以中继来自 X-Ray 的跟踪数据,以中继来自 X-Ray 的程序。使用此处的说明下载并解压缩守护程序。

在本地运行时,守护程序可以从Amazon SDK 凭证文件(.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 的文件。在亚马逊 ECR 上下载完整的示例图片有关更多信息,请参阅下载守护程序

例 Dockerfile — Amazon
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 SDK 证书。

  • 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

在 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 &