AWS DVA-C02AWS 허브발행일 2025. 8. 14.원본 https://blog.naver.com/jword_/223969611753 ↗

AWS DVA-C02 #8 X-ray와 온 프레미스

AWS DVA-C02 #8 X-ray와 온 프레미스 — #개발자의도구들 #AWS시험 #AWSDVA-C02 #DVA-c02문제 #DVA-c02덤프 #x-ray 참고: ExamPo...

#DVA-C02#Naver Blog

#개발자의도구들 #AWS시험 #AWSDVA-C02 #DVA-c02문제 #DVA-c02덤프 #x-ray

​

참고: ExamPotic Disscussion

문제 찾는법 : 여기 최하단

요구사항 분석

  • 온프레미스 Linux 서버에서 커스텀 앱 실행, 프런트는 APIGateway로 접근
  • API Gateway test stage에 X-Ray tracing 활성화
  • 온프레미스 서버(벡엔드)에서도 X-Ray 추적 활성화

​

이를 구현하는 최소한의 솔루션은?

보기 분석

A. X-Ray SDK를 온프레미스에 설치, 로컬 X-Ray데몬으로 세그먼트를 전송

❌ SDK 혼자서는 X-Ray 서비스로 업로드하지 못한다.

​

B. X-Ray 데몬을 온프레미스에 설치해서 데이터를 X-Ray에 보낸다.

✅ 앱의 SDK가 보내는 세그먼트/서브세그먼트를 받아 AWS X-Ray 서비스로 전송한다. 온프레미스에서는 데몬만 띄우고, 앱에 최소한의 SDK 설정만 하면 추적 연동이 가장 간단하다.

​

C. 온프레미스에서 요청 캡처 → Lambda pull 처리 → PutTraceSegment API call

❌ 람다 함수 작성 및 관리로 인한 오버헤드

​

D. 온프레미스 캡처 → Lambda가 Pull/처리 → PutTelemetryRecords 호출

❌ 오버헤드

❌ 해당 메서드는 트레이스/세그먼트 업로드용 API가 아니다.

개념 정리

X-ray

​

Trace Segment

  • X-Ray 트레이스의 기본단위
  • 애플리케이션에서 처리한 작업 단위(요청, 서브요청, 외부 호출 등)에 대한 세부 데이터

​

👉 포함 내용

  1. 서비스 이름, 요청/응답 시간
  1. HTTP 메서드, URL, 상태코드
  1. 다운스트림 호출
  1. 에러/예외/타임아웃 정보
  1. 사용자 지정 메타데이터

​

API업로드: PutTraceSegments

📌 "누가, 언제, 무엇을 했는지"를 시각적으로 보여주는 트레이스 맵 구성

​

javascript 코드 예제
                                    {
  "id": "6e2c6f9f7d3e4e7a",
  "name": "MyService",
  "start_time": 1733848123.123,
  "end_time": 1733848123.789,
  "parent_id": "4f2c6f9f7d3e4e7a",
  "trace_id": "1-653f5c1f-4c2b3a1e4f2d8b9c0a123456",
  "type": "subsegment",
  "http": {
    "request": {
      "method": "GET",
      "url": "https://api.example.com/data",
      "user_agent": "curl/7.68.0",
      "client_ip": "203.0.113.25"
    },
    "response": {
      "status": 200,
      "content_length": 1234
    }
  },
  "annotations": {
    "customer_id": 12345,
    "plan": "premium"
  },
  "metadata": {
    "debug_info": {
      "db_query": "SELECT * FROM orders WHERE id=101"
    }
  }
}

​

Telemetry Record

X-Ray 데몬/SDK의 상태 및 통계 정보

트레이스 데이터가 아니라 운영 메트릭

​

👉 내용

  • 수집한 세그먼트 개수
  • 전송 성공/실패 횟수
  • 대기열 길이
  • 데몬 메모리 사용량 등

​

API 업로드: PutTelemetrryRecord

​

📌 X-Ray 서비스가 수집기/에이전트 상태를 모니터링하고 문제를 진단하는데 사용

javascript 코드 예제
                                    {
  "id": "6e2c6f9f7d3e4e7a",
  "name": "MyService",
  "start_time": 1733848123.123,
  "end_time": 1733848123.789,
  "parent_id": "4f2c6f9f7d3e4e7a",
  "trace_id": "1-653f5c1f-4c2b3a1e4f2d8b9c0a123456",
  "type": "subsegment",
  "http": {
    "request": {
      "method": "GET",
      "url": "https://api.example.com/data",
      "user_agent": "curl/7.68.0",
      "client_ip": "203.0.113.25"
    },
    "response": {
      "status": 200,
      "content_length": 1234
    }
  },
  "annotations": {
    "customer_id": 12345,
    "plan": "premium"
  },
  "metadata": {
    "debug_info": {
      "db_query": "SELECT * FROM orders WHERE id=101"
    }
  }
}

​

X-Ray 서비스 간략 정리

​

역할

  • 분산 추적 서비스

-

  • 애플리케이션이 처리하는 요청을 엔드 투 엔드로 추적하여 병목 구간, 오류 지점, 지연 원인 파악하기 위해 사용됨
  • 마이크로 서비스, 서버리스, 하이브리드(온프레미스 + AWS) 환경 지원

​

구성요소

구성 요소설명
Trace전체 요청 흐름 (API Gateway → Lambda → DynamoDB 등)
Segment각 서비스가 처리한 작업 단위
Subsegment세그먼트 내부의 세부 작업 (DB 호출, 외부 API 호출)
Annotations인덱싱 가능한 키-값 메타데이터 (검색 가능)
Metadata인덱싱되지 않는 추가 데이터 (로그, 디버그 정보)
X-Ray Daemon / ADOT Collector애플리케이션에서 수집한 세그먼트를 버퍼링·전송
X-Ray SDK애플리케이션 코드 계측, Trace Header 처리, 세그먼트 생성

동작흐름

  1. 애플리케이션 → X-Ray SDK로 요청/응답 계측
  2. SDK → 로컬 X-Ray Daemon에 세그먼트 전송 (UDP 2000)
  3. Daemon → X-Ray 서비스 API 호출 (PutTraceSegments, PutTelemtryRecords)
  4. X-Ray 서비스 → 세그먼트를 병합하여 Trace로 구성
  5. 콘솔에서 서비스 맵, 타임라인, 오류 상세 확인

​

추적헤드

  • API Gateway, ALB 등 일부 AWS 서비스는 자동으로 X-Amzn-Trace-Id 헤더를 추가
  • 벡엔드 서비스에서 이 헤더를 이어 받아 동일 Trace에 연결해야 분산 추적 완성

​

권한

X-Ray 서비스에 세그먼트 업로드하려면 IAM 권한 필요

  • xray:PutTraceSegments
  • xray:PutTelemetryRecords

​

  • EC2 / ECS/ EKS → 실행 Role권한 부여
  • 온프레미스 → IAM 사용자/역할 기반 자격 증명 사용

​

보안 & 네트워크

  • Daamon → X-Ray 서비스 통신 HTTPs (TCP 443)
  • SDK → Daemon은 UDP 2000 포트 (로컬)
  • 온프레미스는 아웃바운드 443 허용 필요 (온프레 → AWS)

​

​