X-Ray를 이용한 앱 러너 애플리케이션 추적 - AWS App Runner

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

X-Ray를 이용한 앱 러너 애플리케이션 추적

AWS X-Ray 애플리케이션에서 처리하는 요청에 대한 데이터를 수집하고, 해당 데이터를 보고, 필터링하고, 통찰력을 확보하여 최적화를 위한 문제와 기회를 식별하는 데 사용할 수 있는 도구를 제공하는 서비스입니다. 애플리케이션에 대한 추적된 요청의 경우 요청 및 응답뿐만 아니라 애플리케이션이 다운스트림 AWS 리소스, 마이크로서비스, 데이터베이스 및 HTTP 웹 API에 대해 수행하는 호출에 대한 세부 정보도 볼 수 있습니다.

X-Ray는 클라우드 애플리케이션을 지원하는 AWS 리소스의 추적 데이터를 사용하여 상세한 서비스 그래프를 생성합니다. 서비스 그래프는 프런트 엔드 서비스가 요청을 처리하고 데이터를 유지하기 위해 호출하는 클라이언트, 프런트 엔드 서비스 및 백엔드 서비스를 보여줍니다. 서비스 그래프를 사용하여 병목 현상, 지연 시간 급증 및 기타 해결해야 할 문제를 식별하여 애플리케이션의 성능을 개선하십시오.

X-Ray에 대한 자세한 내용은 AWS X-Ray 개발자 안내서를 참조하세요.

앱 러너 서비스를 위한 X-Ray 서비스 맵의 예

추적을 위해 애플리케이션을 계측하십시오.

휴대용 텔레메트리 사양인 을 사용하여 OpenTelemetry추적할 수 있도록 App Runner 서비스 애플리케이션을 계측하십시오. 현재 App Runner는 서비스를 사용하여 원격 측정 정보를 수집하고 표시하는 OpenTelemetry 구현인 AWS Distro for OpenTelemetry (ADOT) 를 지원합니다. AWS X-Ray는 추적 구성 요소를 구현합니다.

애플리케이션에서 사용하는 특정 ADOT SDK에 따라 ADOT는 자동 및 수동이라는 최대 두 가지 계측 접근 방식을 지원합니다. SDK를 사용한 계측에 대한 자세한 내용은 ADOT 설명서를 참조하고 탐색 창에서 SDK를 선택하십시오.

런타임 설정

다음은 App Runner 서비스 애플리케이션을 추적할 수 있도록 계측하기 위한 일반적인 런타임 설정 지침입니다.

런타임에 대한 추적 설정하기
  1. AWS Distro for OpenTelemetry (ADOT) 의 런타임에 제공된 지침을 따라 애플리케이션을 계측하십시오.

  2. 소스 코드 리포지토리를 사용하는 경우 apprunner.yaml 파일 build 섹션에, 컨테이너 이미지를 사용하는 경우 Dockerfile에 필요한 OTEL 종속성을 설치합니다.

  3. 소스 코드 리포지토리를 사용하는 경우 apprunner.yaml 파일에 환경 변수를 설정하고 컨테이너 이미지를 사용하는 경우 Dockerfile에서 환경 변수를 설정합니다.

    예 환경 변수
    참고

    다음 예제는 파일에 추가할 중요한 환경 변수를 나열합니다. apprunner.yaml 컨테이너 이미지를 사용하는 경우 이러한 환경 변수를 Dockerfile에 추가하세요. 그러나 각 런타임에는 고유한 특성이 있을 수 있으므로 다음 목록에 더 많은 환경 변수를 추가해야 할 수도 있습니다. 런타임별 지침 및 런타임에 맞게 애플리케이션을 설정하는 방법에 대한 예제에 대한 자세한 내용은 시작하기에서 런타임용AWS 배포판 OpenTelemetry 및 실행으로 이동을 참조하십시오.

    env: - name: OTEL_PROPAGATORS value: xray - name: OTEL_METRICS_EXPORTER value: none - name: OTEL_EXPORTER_OTLP_ENDPOINT value: http://localhost:4317 - name: OTEL_RESOURCE_ATTRIBUTES value: 'service.name=example_app'
    참고

    OTEL_METRICS_EXPORTER=noneApp Runner Otel 컬렉터는 메트릭 로깅을 허용하지 않으므로 App Runner의 중요한 환경 변수입니다. 메트릭 추적만 허용합니다.

런타임 설정 예제

다음 예제는 ADOT Python SDK를 사용하여 애플리케이션을 자동 계측하는 방법을 보여줍니다. SDK는 Python 코드를 한 줄도 추가하지 않고도 애플리케이션의 Python 프레임워크에서 사용하는 값을 설명하는 원격 측정 데이터가 포함된 범위를 자동으로 생성합니다. 두 소스 파일에 몇 줄만 추가하거나 수정하면 됩니다.

먼저 다음 예제와 같이 종속성을 몇 개 추가합니다.

예 requirements.txt
opentelemetry-distro[otlp]>=0.24b0 opentelemetry-sdk-extension-aws~=2.0 opentelemetry-propagator-aws-xray~=1.0

그런 다음 애플리케이션을 계측하십시오. 이를 수행하는 방법은 서비스 소스 (소스 이미지 또는 소스 코드) 에 따라 다릅니다.

Source image

서비스 소스가 이미지인 경우 컨테이너 이미지 빌드와 이미지에서 애플리케이션 실행을 제어하는 Dockerfile을 직접 계측할 수 있습니다. 다음 예제는 Python 애플리케이션을 위한 인스트루먼트된 Dockerfile을 보여줍니다. 계측 추가 사항은 굵게 강조 표시되어 있습니다.

예 Dockerfile
FROM public.ecr.aws/amazonlinux/amazonlinux:latest RUN yum install python3.7 -y && curl -O https://bootstrap.pypa.io/get-pip.py && python3 get-pip.py && yum update -y COPY . /app WORKDIR /app RUN pip3 install -r requirements.txt RUN opentelemetry-bootstrap --action=install ENV OTEL_PYTHON_DISABLED_INSTRUMENTATIONS=urllib3 ENV OTEL_METRICS_EXPORTER=none ENV OTEL_RESOURCE_ATTRIBUTES='service.name=example_app' CMD OTEL_PROPAGATORS=xray OTEL_PYTHON_ID_GENERATOR=xray opentelemetry-instrument python3 app.py EXPOSE 8080
Source code repository

서비스 소스가 애플리케이션 소스가 포함된 리포지토리인 경우 App Runner 구성 파일 설정을 사용하여 이미지를 간접적으로 계측합니다. 이러한 설정은 App Runner가 생성하여 애플리케이션용 이미지를 빌드하는 데 사용하는 Dockerfile을 제어합니다. 다음 예제는 Python 애플리케이션을 위한 인스트루먼트된 App Runner 구성 파일을 보여줍니다. 계측 추가 사항은 굵게 강조 표시되어 있습니다.

예 apprunner.yaml
version: 1.0 runtime: python3 build: commands: build: - pip install -r requirements.txt - opentelemetry-bootstrap --action=install run: command: opentelemetry-instrument python app.py network: port: 8080 env: - name: OTEL_PROPAGATORS value: xray - name: OTEL_METRICS_EXPORTER value: none - name: OTEL_PYTHON_ID_GENERATOR value: xray - name: OTEL_PYTHON_DISABLED_INSTRUMENTATIONS value: urllib3 - name: OTEL_RESOURCE_ATTRIBUTES value: 'service.name=example_app'

App Runner 서비스 인스턴스 역할에 X-Ray 권한 추가

App Runner 서비스에서 X-Ray 추적을 사용하려면 서비스 인스턴스에 X-Ray 서비스와 상호작용할 수 있는 권한을 제공해야 합니다. 이를 위해서는 인스턴스 역할을 서비스에 연결하고 X-Ray 권한이 있는 관리형 정책을 추가하면 됩니다. App Runner 인스턴스 역할에 대한 자세한 내용은 을 참조하십시오. 인스턴스 역할 인스턴스 역할에 AWSXRayDaemonWriteAccess 관리형 정책을 추가하고 생성 과정에서 서비스에 할당하세요.

App Runner 서비스에 X-Ray 추적 기능을 활성화하세요

서비스를 만들면 App Runner는 기본적으로 추적을 비활성화합니다. 옵저버빌리티 구성의 일환으로 서비스에 대해 X-Ray Tracing을 활성화할 수 있습니다. 자세한 정보는 관찰 가능성 관리을 참조하세요.

App Runner API 또는 를 사용하는 경우 ObservabilityConfiguration리소스 TraceConfiguration개체 내의 개체에 추적 설정이 포함됩니다. AWS CLI추적을 계속 비활성화하려면 객체를 지정하지 마세요. TraceConfiguration

콘솔과 API의 경우 모두 이전 섹션에서 설명한 인스턴스 역할을 App Runner 서비스와 연결해야 합니다.

App Runner 서비스의 X-Ray 추적 데이터 보기

App Runner 콘솔의 서비스 대시보드 페이지에 있는 옵저버빌리티 탭에서 서비스 맵 보기를 선택하여 Amazon CloudWatch 콘솔로 이동합니다.

옵저버빌리티 탭이 표시된 App Runner 서비스 대시보드 페이지

Amazon CloudWatch 콘솔을 사용하여 애플리케이션이 제공하는 요청에 대한 서비스 맵과 추적을 볼 수 있습니다. 서비스 맵에는 요청 지연 시간, 다른 애플리케이션 및 AWS 서비스와의 상호 작용과 같은 정보가 표시됩니다. 코드에 추가한 사용자 지정 주석을 사용하면 트레이스를 쉽게 검색할 수 있습니다. 자세한 내용은 Amazon 사용 CloudWatch 설명서의 애플리케이션 상태 ServiceLens 모니터링을 위한 사용을 참조하십시오.