◇ 공부 기록용으로 작성하였으니 틀린점, 피드백 주시면 감사하겠습니다 ◇
AWS X-Ray
애플리케이션에서 생기는 Error를 tracing(추적) 하는 서비스.
AWS 환경에서 어느 리소스 (ex. DB, lambda, ..etc)가 문제의 원인이지 추적할 수 있다.
- X-Ray는 애플리케이션의 동작에 관한 데이터를 수집/분석하는 서비스이다.
- X-Ray는 특히 "Troubleshooting"의 목적으로 이용된다.
- 애플리케이션의 요청(request)을 추적(trace)하여 처리시간이나 응답을 분석해 성능의 병목(bottleneck)이나 에러의 발생원인을 특정할 수 있다.
- 요청이 서비스 간에 어떻게 이동하는지, 응답하는 데 걸리는 시간, 에러의 발생 위치 등을 시각적으로 파악할 수 있다.
X-Ray는 애플리케이션 간의 요청에 대해서 trace(추적)하는 서비스
X-Ray 기능
- X-Ray는 "Segment"(세그멘트)라는 형식으로 저장한다.
- Segment: 각 요청의 세부 정보가 저장된다. (리소스의 이름과 세부 정보, 수행한 작업에 대한 세부 정보)
- Subsegment: 더 작은 단위로 애플리케이션의 개별 작업이나 외부 리소스와의 상호작용을 추적한다.
- Trace: 하나의 요청당 하나의 trace와 같으며, 요청으로 생긴 segment를 모두 수집한 것이다.
- X-Ray의 연동 서비스: EC2 , ECS , Lambda, Elastic Beanstalk (EC2/ECS는 수동으로 설치해야 함)
⚙️ 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 SDK: 애플리케이션 안에 X-Ray SDK를 설치하여, X-Ray Daemon에 세그멘트 데이터를 전송한다.
- X-Ray Daemon: UDP (포트 2000)에서 X-Ray SDK로부터 트래픽을 수신하고, 가공되지 않은 세그먼트 데이터를 수집한다.
- X-Ray API: 수집한 세그멘트 데이터로 트레이스를 작성한다.
- xray-daemon.config: 이 파일을 디렉토리에 두면 X-Ray Daemon이 활성화됨
- X-Ray Agent: 로그 파일에서 데이터를 수집하고, X-Ray 서비스로 전송하는 에이전트
⚙️ X-Ray SDK
X-Ray SDK는 애플리케이션에서 X-Ray 서비스를 사용하여 세그멘트 데이터 작성하고 X-Ray Daemon에 전송하기 위한 클래스와 메소드를 제공한다.
[X-Ray SDK가 지원하는 언어]
Java, Node.js, Python, Go, .NET, Ruby
⚙️ 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
수집한 세그멘트 데이터로 트레이스를 작성한다.
X-Ray의 모든 기능에 접근 가능하다.
[이용 방법]
- HTTPS 경유
- AWS SDK 경유
- AWS CLI 경유
참고자료
https://www.youtube.com/watch?v=biYBazxFwxk