Programming

[AWS, Certified Developer Associate] X-Ray, CloudTrail

빠쿤 2024. 5. 29. 21:30

X-Ray

  • 여러 애플리케이션 간 시각적 분석 제공
  • 애플리케이션 성능 트러블슈팅 / 병목현상 식별 / MSA에서 MS간 의존관계 파악
  • 서비스 문제를 짚어줌
  • 요청 - 응답 한눈에 파악 가능
  • 오류와 예외 응답 확인 가능
  • 지연시간 등을 통해 SLA를 준수하는지 확인 가능
  • 어떤 서비스로 인해 지연이 발생하고 스로틀링이 발생하는지 발견 가능
  • 어떤 사용자들이 오류에 영향을 받는지 식별 가능
  • 호환성 좋음 : 람다, Beanstalk, ECS, ELB, API Gateway, EC2, 어떤 애플리케이션 서버든 (온프레미스 포함)

 

 

X-Ray - Leverages Tracing

  • 엔드투엔드 방식으로 요청을 추적
  • 요청 시 이를 처리하는 각 컴포넌트가 각자 트레이스를 추가
  • 트레이스는 세그먼트로 구성 (세그먼트는 하위 세그먼트로 구성)
  • 트레이스에 어노테이션을 추가해 추가정보 제공 가능
  • IAM 접근 보안 / 미사용 데이터에 대해서는 KMS 암호화 제공
  • enable 방법
    • 1) 코드 상에서 AWS X-Ray SDK 임포트
    • 2) SDK가 AWS 서비스 호출 / HTTP 요청 / DB 요청 / 대기열 요청에 대해 기록
    • 3) 서버에 X-Ray Daemon 설치 또는 X-Ray AWS Integration 활성화
      • 이미 X-Ray와 통합된 람다와 같은 서비스 사용 시 알아서 데몬 실행
      • 각 애플리케이션은 X-Ray에 데이터를 쓸 수 있는 IAM 권한 필요
  • X-Ray가 동작하지 않을 시 (EC2)
    • EC2 IAM 역할 확인
    • EC2 인스턴스에서 X-Ray Daemon 실행중인지 확인
  • X-Ray가 동작하지 않을 시 (Lambda)
    • Lambda IAM 역할 확인
    • 코드에 X-Ray가 임포트되었는지 확인
    • 람다에서 X-Ray 활성 추적(Acitve Tracing) 옵션 활성화 확인

 

 

X-Ray 관련 용어

  • 세그먼트 : 각 애플리케이션/서비스가 보내는 데이터
  • 서브세그먼트 : 세그먼트를 세분화하기 위해 정의 (세그먼트에 세부 사항 기록)
  • 추적(Trace) : 모든 세그먼트를 모아 API 호출의 엔드투엔드(종단 간) 뷰 형성
  • 샘플링 : X-Ray로 보내지는 요청의 양을 줄여 비용 감소
    • default : 모든 첫번째 요청 기록 / 이후 5% 추가 요청 기록
    • 첫번째 요청 : 리저버 (reservoir)
    • 5% : 비율 (rate)
  • 주석(Annotation) : k-v 쌍, 추적 인덱싱 가능, 필터링 용도
  • 메타데이터 : k-v 쌍, 인덱싱 불가능, 검색 용도

 

 

X-Ray API

  • Write
    • PutTraceSegments : 세그먼트를 X-Ray에 업로드
    • PutTelementryRecords : 데몬이 수신/거절 세그먼트 수, 백엔드 연결오류 업로드
    • GetSamplingRules : 데몬이 샘플링 규칙을 자동으로 업데이트해 적용하기 위해 샘플링 규칙을 읽어올 권한
  • Read
    • GetServiceGraph : 메인 그래프 읽기
    • BatchGetTraces : ID로 지정된 추적 목록 검색
    • GetTraceSummaries : 추적을 위해 특정 시간에 사용할 수 있는 ID와 주석을 읽음
    • GetTraceGraph : 하나 이상의 추적 ID와 관련된 서비스 그래프 검색

 

 

AWS CloudTrail

  • AWS 계정에 대한 규정 준수 및 감사 수행
  • 기본적으로 활성화
  • AWS 계정의 콘솔 / SDK / CLI / AWS Service에 대한 이벤트 / API 요청 기록을 얻을 수 있음
  • 로그를 CloudWatch Logs / S3로 보낼 수 있음
  • 모든 리전(기본값) 또는 단일 리전에 적용되도록 할 수 있음

 

 

CloudTrail - 이벤트 종류

  • 관리 이벤트 (Management Event)
    • AWS 계정의 리소스에서 수행되는 작업
    • 보안 설정 / 라우팅 설정 / 로그 설정 등
    • 기본값 : 어떤 경우에도 기록하도록 구성
    • 읽기 이벤트를 쓰기 이벤트에서 분리 가능
  • 데이터 이벤트 (Data Event)
    • 기본값 : 로그 남기지 않음 (대용량 작업이므로)
    • S3 객체레벨 활동 (GetObject, DeleteObject, PutObject) : 읽기/쓰기 이벤트 분리 가능
    • 람다 기능 수행 활동 (Invoke)
  • 인사이트 이벤트 (Insight Event)
    • 유료, 이벤트 분석 및 계정 내 비정상적인 활동 감지
    • 부정확한 리소스 프로비저닝 / 서비스 제한 초과 / IAM 작업 버스트 / 주기적인 유지보수 활동의 격차
    • 정상적인 관리 이벤트를 분석해 기준선(baseline) 생성 -> 지속적으로 이벤트가 정상적인 유형인지 분석 (변경 / 변경시도)
    • 콘솔에서 확인 가능 / S3에 전송 가능 / EventBridge 이벤트 생성 가능 (자동화)
      • ex) 사용자가 dynamoDB에서 DeleteTable API 호출 시마다 SNS 알림이 필요
      • 테이블 삭제 API 호출 시 EventBridge 규칙 생성 
      • 해당 이벤트를 EventBridge -> SNS 얼럿
  • 이벤트는 기본적으로 90일간 보관 후 삭제
  • 90일 이상 보관 필요한 경우 S3에 보내고 Athena를 통해 분석

 

 

CloudTrail vs CloudWatch vs X-Ray

  • CloudTrail (API 호출)
    • 사용자, 서비스, AWS 콘솔 등 계정에서 이루어진 API 호출 감시
    • 승인되지 않은 호출 감지 / API 호출로 인한 변경의 근본적 원인을 찾을 때 유용
  • CloudWatch (모니터링)
    • 모니터링을 위해 지표 사용
    • 애플리케이션 로그 저장
    • Alarm(경보) 를 통해 예상치 못한 지표에 대해 알림 전송
  • X-Ray (자동화된 추적분석, 시각화, 분산서비스에 대한 세부적 분석)
    • 추적 자동화 / 중앙 서비스 맵 시각화 제공
    • 분산서비스에서 큰 숲을 보기 용이

 


Reference

Udemy - AWS Certified Developer Associate 시험 합격을 위한 모든 것!