在本機執行 X-Ray 精靈 - AWS X-Ray

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在本機執行 X-Ray 精靈

您可以在 Linux、MacOS、視窗或泊塢 AWS X-Ray 程式容器中本機執行協助程式。在開發和測試已檢測的應用程式時,執行協助程式,將追蹤資料轉送至 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 的檔案。在 Amazon 上下載完整的示例圖片ECR。如需詳細資訊,請參閱下載協助程式

範例 碼頭文件 — 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 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

在視窗上執行 X-Ray 精靈

您可以從命令列執行精靈的可執行檔。使用 -o 選向來在本機模式中執行,以及 -n 來設定區域。

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

使用 PowerShell 指令碼建立並執行協助程式的服務。

範例 PowerShell 腳本-視窗
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 &