X-Ray
•
애플리케이션 간의 요청에 대해서 trace(추적)하는 서비스
•
AWS 환경에서 어느 리소스 (ex. DB, lambda, ..etc)가 문제의 원인이지 추적할 수 있다.
•
X-Ray는 애플리케이션의 동작에 관한 데이터를 수집/분석하는 서비스이다.
•
X-Ray는 특히 "Troubleshooting"의 목적으로 이용된다.
•
애플리케이션의 요청(request)을 추적(trace)하여 처리시간이나 응답을 분석해 성능의 병목(bottleneck)이나 에러의 발생원인을 특정할 수 있다.
병목 현상
•
요청이 서비스 간에 어떻게 이동하는지, 응답하는 데 걸리는 시간, 에러의 발생 위치 등을 시각적으로 파악할 수 있다.
X-Ray 기능
•
X-Ray는 "Segment"(세그멘트)라는 형식으로 저장한다.
•
Segment : 각 요청의 세부 정보가 저장된다. (리소스의 이름과 세부 정보, 수행한 작업에 대한 세부 정보)
•
Subsegment : 더 작은 단위로 애플리케이션의 개별 작업이나 외부 리소스와의 상호작용을 추적한다.
•
Trace: 하나의 요청당 하나의 trace와 같으며, 요청으로 생긴 segment를 모두 수집한 것이다.
X-Ray의 연동 서비스
•
온프레미스 서버, EC2 , ECS , Lambda, Elastic Beanstalk
•
EC2/ECS에는 수동으로 설치해야 한다.
•
Lambda와 Elastic Beanstalk는 AWS Console에서 X-Ray 활성화 버튼을 누르기만 하면 된다.
Service Map (서비스 맵)
•
Service Map는 애플리케이션의 요청에 대한 데이터를 그래프로 시각화하였다.
•
Service Map의 그래프를 통해 특정 서비스에서의 지연 시간, 에러 비율, bottleneck을 한눈에 확인할 수 있다.
•
초록색: 정상적으로 처리된 요청.
•
노란색: 경고 또는 느린 응답.
•
빨간색: 에러가 발생한 서비스.
Trace (트레이스)
•
Service map에서는 요청에 대한 전체적인 시각화 그래프를 보여줬다.
•
Trace는 좀더 세부적으로 각각의 요청에 대한 정보를 보여준다.
Analytics
•
X-Ray Analytics는 X-Ray로 수집된 트레이스 데이터에 대해 시각화 및 분석을 수행하고, 애플리케이션의 성능에 대한 정보(오류 패턴, 지연 발생)를 얻기 위해 사용하는 서비스이다.
•
이를 통해 대규모 분산 애플리케이션에서 성능 이슈를 손쉽게 파악할 수 있다.
Insights
•
Analytics가 트레이스 데이터를 시각화하고 분석하는 서비스라면, X-Ray Insights는 퍼포먼스에 문제를 파악하고 그 영향을 자동으로 감지해주는 서비스이다.
•
X-Ray가 자동으로 트레이스에서 이상을 감지한 후에는 EventBridge를 사용해 알림을 보낼 수도 있다.
•
이 서비스는 현재 default으로 활성화되어 있지 않으며, 직접 활성화해야 한다.
X-Ray 구성 요소
•
X-Ray Agent : 로그 파일에서 데이터를 수집하고, X-Ray 서비스로 전송하는 에이전트
•
X-Ray SDK : 애플리케이션 안에 X-Ray SDK를 설치하여, X-Ray Daemon에 세그멘트 데이터를 전송한다.
•
X-Ray Daemon : UDP (포트 2000)에서 X-Ray SDK로부터 트래픽을 수신하고, 여기서 가공되지 않은 세그먼트 데이터를 수집한다. 이를 X-Ray API를 통해 AWS X-Ray 서비스로 전송한다.
•
X-Ray API : 수집한 세그멘트 데이터로 트레이스를 작성한다.
•
xray-daemon.config : 이 파일을 디렉토리에 두면 X-Ray Daemon이 활성화됨
X-Ray SDK
•
X-Ray SDK는 애플리케이션의 코드와 통합하여, 애플리케이션의 요청과 응답(예: HTTP 요청, 데이터베이스 쿼리, 함수 호출)에 대한 상세한 수집 데이터를 작성한다.
•
그리고 X-Ray SDK를 통해 어떤 특정 데이터가 수집되고 전송되는지 세밀하게 제어할 수 있다.
•
X-Ray SDK는 애플리케이션 안에서 세그멘트 데이터를 작성하고 이를 X-Ray Daemon에 전송한다. (X-Ray Daemon에 전송하기 위한 클래스와 메소드가 있다)
X-Ray Daemon
•
X-Ray Daemon은 애플리케이션에서 데이터를 수집하여 버퍼링후에 X-Ray API에 정기적으로 전송하는 역할의 소프트웨어이다.
•
(백그라운드 프로세스로써 유저는 따로 직접 관리하지 않는다.)
•
UDP 프로토콜의 Port: 2000의 트래픽을 읽고, 가공되지 않은 세그먼트 데이터를 수집하여 X-Ray API를 통해 X-Ray에 데이터를 전송한다.
•
X-Ray SDK와 연동하여 작동하며, SDK에서 전송된 데이터가 X-Ray 서비스에 도달할 수 있도록 설정한다.
•
X-Ray를 사용하려면 각 서비스에서 X-Ray Daemon을 실행해야 하며, X-Ray SDK와 연동하여 X-Ray 서비스로 데이터를 전송한다
X-Ray API
•
수집한 세그멘트 데이터로 Trace(추적)를 작성한다.
•
X-Ray의 모든 기능에 접근 가능하다.










