

AWS App Runner 는 더 이상 신규 고객에게 공개되지 않습니다. 기존 고객은 정상적으로 서비스를 계속 이용할 수 있습니다. 자세한 내용은 [AWS App Runner 가용성 변경](https://docs.aws.amazon.com/apprunner/latest/dg/apprunner-availability-change.html)을 참조하세요.

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

# X-Ray로 App Runner 애플리케이션 추적
<a name="monitor-xray"></a>

AWS X-Ray 는 애플리케이션이 처리하는 요청에 대한 데이터를 수집하고 해당 데이터를 보고, 필터링하고, 인사이트를 얻어 문제와 최적화 기회를 식별하는 데 사용할 수 있는 도구를 제공하는 서비스입니다. 애플리케이션에 대한 추적된 요청의 경우 요청 및 응답뿐만 아니라 애플리케이션이 다운스트림 AWS 리소스, 마이크로서비스, 데이터베이스 및 HTTP 웹 APIs.

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

X-Ray에 대한 자세한 내용은 [AWS X-Ray 개발자 안내서](https://docs.aws.amazon.com/xray/latest/devguide/)를 참조하세요.

![App Runner 서비스에 대한 X-Ray 서비스 맵의 예](http://docs.aws.amazon.com/ko_kr/apprunner/latest/dg/images/xray-example.png)


## 추적을 위해 애플리케이션 계측
<a name="monitor-xray.instrument"></a>

휴대용 원격 측정 사양인 [OpenTelemetry](https://github.com/open-telemetry)를 사용하여 App Runner 서비스 애플리케이션을 추적하도록 계측합니다. 현재 App Runner는 AWS 서비스를 사용하여 원격 [AWS 측정 정보를 수집하고 제공하는 OpenTelemetry 구현인 Distro for OpenTelemetry](https://aws-otel.github.io/docs/introduction)OpenTelemetry(ADOT)를 지원합니다. X-Ray는 추적 구성 요소를 구현합니다.

애플리케이션에서 사용하는 특정 ADOT SDK에 따라 ADOT는 *자동* 및 *수동*이라는 최대 두 가지 계측 접근 방식을 지원합니다. SDK를 사용한 계측에 대한 자세한 내용은 [ADOT 설명서를](https://aws-otel.github.io/docs/introduction) 참조하고 탐색 창에서 SDK를 선택합니다.

### 런타임 설정
<a name="monitor-xray.instrument.setup"></a>

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

**런타임에 대한 추적을 설정하려면**

1.  [AWS Distro for OpenTelemetry](https://aws-otel.github.io/docs/introduction)(ADOT)의 런타임에 제공된 지침에 따라 애플리케이션을 계측합니다.

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

1.  소스 코드 리포지토리를 사용하는 경우 `apprunner.yaml` 파일에서, 컨테이너 이미지를 사용하는 경우 Dockerfile에서 환경 변수를 설정합니다.  
**Example 환경 변수**  
**참고**  
다음 예제에서는 `apprunner.yaml` 파일에 추가할 중요한 환경 변수를 나열합니다. 컨테이너 이미지를 사용하는 경우 이러한 환경 변수를 Dockerfile에 추가합니다. 그러나 각 런타임에는 고유한 ID가 있을 수 있으며 다음 목록에 환경 변수를 더 추가해야 할 수 있습니다. 런타임별 지침 및 런타임에 맞게 애플리케이션을 설정하는 방법에 대한 예제에 대한 자세한 내용은 [AWS Distro for OpenTelemetry](https://aws-otel.github.io/docs/introduction)를 참조하고 *시작하기*에서 런타임으로 이동합니다.

   ```
   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=none` App Runner Otel 수집기는 지표 로깅을 허용하지 않으므로는 App Runner의 중요한 환경 변수입니다. 지표 추적만 허용합니다.

### 런타임 설정 예제
<a name="monitor-xray.instrument.example"></a>

다음 예제에서는 [ADOT Python SDK](https://aws-otel.github.io/docs/getting-started/python-sdk)를 사용하여 애플리케이션을 자동 계측하는 방법을 보여줍니다. SDK는 한 줄의 Python 코드를 추가하지 않고 애플리케이션의 Python 프레임워크에서 사용하는 값을 설명하는 원격 측정 데이터로 스팬을 자동으로 생성합니다. 두 소스 파일에서 몇 줄만 추가하거나 수정해야 합니다.

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

**Example requirements.txt**  

```
opentelemetry-distro[otlp]>=0.24b0
opentelemetry-sdk-extension-aws~=2.0
opentelemetry-propagator-aws-xray~=1.0
```

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

------
#### [ Source image ]

서비스 소스가 이미지인 경우 컨테이너 이미지 빌드 및 이미지에서 애플리케이션 실행을 제어하는 Dockerfile을 직접 계측할 수 있습니다. 다음 예제에서는 Python 애플리케이션에 대해 구성된 Dockerfile을 보여줍니다. 계측 추가는 굵게 강조 표시됩니다.

**Example 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 구성 파일을 보여줍니다. 계측 추가는 굵게 강조 표시됩니다.

**Example 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 권한 추가
<a name="monitor-xray.role"></a>

App Runner 서비스와 함께 X-Ray 추적을 사용하려면 서비스의 인스턴스에 X-Ray 서비스와 상호 작용할 수 있는 권한을 제공해야 합니다. 이렇게 하려면 인스턴스 역할을 서비스와 연결하고 관리형 정책을 X-Ray 권한과 추가합니다. App Runner 인스턴스 역할에 대한 자세한 내용은 섹션을 참조하세요[인스턴스 역할](security_iam_service-with-iam.md#security_iam_service-with-iam-roles-service.instance). 인스턴스 역할에 `AWSXRayDaemonWriteAccess` 관리형 정책을 추가하고 생성하는 동안 서비스에 할당합니다.

## App Runner 서비스에 대한 X-Ray 추적 활성화
<a name="monitor-xray.config"></a>

[서비스를 생성](manage-create.md)하면 App Runner는 기본적으로 추적을 비활성화합니다. 관찰성 구성의 일환으로 서비스에 대해 X-Ray 추적을 활성화할 수 있습니다. 자세한 내용은 [관찰성 관리](manage-configure-observability.md#manage-configure-observability.manage) 단원을 참조하십시오.

App Runner API 또는를 사용하는 경우 ObservabilityConfiguration 리소스 객체 내의 AWS CLI TraceConfiguration 객체에는 추적 설정이 포함됩니다. [TraceConfiguration](https://docs.aws.amazon.com/apprunner/latest/api/API_TraceConfiguration.html) [ObservabilityConfiguration](https://docs.aws.amazon.com/apprunner/latest/api/API_ObservabilityConfiguration.html) 추적을 비활성화 상태로 유지하려면 `TraceConfiguration` 객체를 지정하지 마십시오.

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

## App Runner 서비스에 대한 X-Ray 추적 데이터 보기
<a name="monitor-xray.view"></a>

App Runner 콘솔의 [서비스 대시보드 페이지의](console.md#console.dashboard) **관찰성** 탭에서 **서비스 맵 보기를** 선택하여 Amazon CloudWatch 콘솔로 이동합니다.

![관찰성 탭을 보여주는 App Runner 서비스 대시보드 페이지](http://docs.aws.amazon.com/ko_kr/apprunner/latest/dg/images/service-dashboad-observability.png)


Amazon CloudWatch 콘솔을 사용하여 애플리케이션이 처리하는 요청에 대한 서비스 맵 및 추적을 볼 수 있습니다. 서비스 맵에는 요청 지연 시간 및 다른 애플리케이션 및 AWS 서비스와의 상호 작용과 같은 정보가 표시됩니다. 코드에 추가하는 사용자 지정 주석을 사용하면 추적을 쉽게 검색할 수 있습니다. 자세한 내용은 *Amazon CloudWatch 사용 설명서*[의 ServiceLens를 사용하여 애플리케이션 상태 모니터링을 참조하세요](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/ServiceLens.html).