로컬에서 X-Ray 대몬(daemon) 실행하기 - AWS X-Ray

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

로컬에서 X-Ray 대몬(daemon) 실행하기

Linux, MacOS, Windows 또는 도커 컨테이너에서 AWS X-Ray 데몬을 로컬로 실행할 수 있습니다. 구성된 애플리케이션을 개발 및 테스트할 때 대몬(daemon)을 실행해 X-Ray로 추적 데이터를 전달합니다. 여기의 지침에 따라 데몬을 다운로드한 다음 추출합니다.

대몬(daemon)을 로컬에서 실행하는 경우 AWS SDK 자격 증명 파일(사용자 디렉터리 내 .aws/credentials) 또는 환경 변수로부터 자격 증명을 읽을 수 있습니다. 자세한 내용은 대몬(daemon)에 X-Ray로 데이터를 전송할 권한 부여 섹션을 참조하세요.

이 데몬은 포트 2000에서 UDP 데이터를 수신 대기합니다. 구성 파일 및 명령줄 옵션을 사용하여 포트 및 기타 옵션을 변경할 수 있습니다. 자세한 내용은 AWS X-Ray 데몬 설정하기 섹션을 참조하세요.

Linux에서 X-Ray 대몬(daemon) 실행

명령줄에서 데몬 실행 파일을 실행할 수 있습니다. -o 옵션을 사용하여 로컬 모드에서 실행하고 -n으로 리전을 설정합니다.

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

데몬을 배경에서 실행하려면 &를 사용합니다.

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

pkill은 배경에서 실행되는 데몬 프로세스를 종료합니다.

~$ pkill xray

(Docker 컨테이너에서 X-Ray 대몬(daemon) 실행

도커 컨테이너에서 데몬을 로컬로 실행하기 위해 다음 텍스트를 Dockerfile이라는 파일로 저장합니다. Amazon ECR에서 전체 이미지 예제를 다운로드하십시오. 자세한 내용은 대몬(daemon) 다운로드하기를 참조하세요.

예 도커파일 — 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 – 터미널에서 대몬(daemon) 출력을 봅니다.

  • -v ~/.aws/:/root/.aws/:ro – AWS SDK 자격 증명을 읽을 수 있도록 .aws 디렉터리에 컨테이너 읽기 전용 액세스 권한을 제공합니다.

  • AWS_REGION=us-east-2AWS_REGION 환경 변수를 설정하여 대몬(daemon)에 어떤 리전을 사용할지 알립니다.

  • --net=host – 컨테이너를 host 네트워크에 연결합니다. 호스트 네트워크의 컨테이너는 포트를 게시하지 않고 서로 통신할 수 있습니다.

  • -p 2000:2000/udp – 컴퓨터의 UDP 포트 2000을 컨테이너의 동일한 포트로 매핑합니다. 동일한 네트워크의 컨테이너끼리 통신하는 데는 필요 없지만, 도커에서 실행되지 않는 애플리케이션이나 명령줄에서 데몬으로 세그먼트를 전송할 수 있게 됩니다.

  • --name xray-daemon – 임의의 이름을 생성하는 대신 컨테이너에 xray-daemon라는 이름을 지정합니다.

  • -o (이미지 이름 뒤) – 컨테이너 내에서 대몬(daemon)을 실행하는 진입점에 -o 옵션을 추가합니다. 이 옵션은 대몬(daemon)이 Amazon EC2 인스턴스 메타데이터를 읽지 못하도록 로컬 모드에서 실행하도록 지시합니다.

데몬을 중지하려면 docker stop을 사용합니다. Dockerfile을 변경하여 새 이미지를 빌드한 경우, 같은 이름으로 다른 컨테이너를 생성하려면 기존 컨테이너를 삭제해야 합니다. 컨테이너는 docker rm을 사용하여 삭제합니다.

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

Windows에서 X-Ray 대몬(daemon) 실행

명령줄에서 데몬 실행 파일을 실행할 수 있습니다. -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 대몬(daemon) 실행

명령줄에서 데몬 실행 파일을 실행할 수 있습니다. -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 &