

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

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

# App Runner 서비스의 관찰성
<a name="monitor"></a>

AWS App Runner 는 여러 AWS 서비스와 통합되어 App Runner 서비스를 위한 광범위한 관찰성 도구 모음을 제공합니다. 이 장의 주제에서는 이러한 기능에 대해 설명합니다.

**Topics**
+ [App Runner 서비스 활동 추적](monitor-activity.md)
+ [CloudWatch Logs로 스트리밍된 App Runner 로그 보기](monitor-cwl.md)
+ [CloudWatch에 보고된 App Runner 서비스 지표 보기](monitor-cw.md)
+ [EventBridge에서 App Runner 이벤트 처리](monitor-ev.md)
+ [를 사용하여 App Runner API 호출 로깅 AWS CloudTrail](monitor-ct.md)
+ [X-Ray로 App Runner 애플리케이션 추적](monitor-xray.md)

# App Runner 서비스 활동 추적
<a name="monitor-activity"></a>

AWS App Runner 는 작업 목록을 사용하여 App Runner 서비스의 활동을 추적합니다. 작업은 서비스 생성, 구성 업데이트, 서비스 배포와 같은 API 작업에 대한 비동기 호출을 나타냅니다. 다음 섹션에서는 App Runner 콘솔 및 API를 사용하여 활동을 추적하는 방법을 보여줍니다.

## App Runner 서비스 활동 추적
<a name="monitor-activity.monitor"></a>

다음 방법 중 하나를 사용하여 App Runner 서비스 활동을 추적합니다.

------
#### [ App Runner console ]

App Runner 콘솔은 App Runner 서비스 활동을 표시하고 작업을 탐색하는 더 많은 방법을 제공합니다.

**서비스 활동을 보려면**

1. [App Runner 콘솔](https://console.aws.amazon.com/apprunner)을 열고 **리전** 목록에서를 선택합니다 AWS 리전.

1. 탐색 창에서 **서비스를** 선택한 다음 App Runner 서비스를 선택합니다.

   콘솔에 서비스 **개요**와 함께 서비스 대시보드가 표시됩니다.  
![\[활동 목록을 보여주는 App Runner 서비스 대시보드 페이지\]](http://docs.aws.amazon.com/ko_kr/apprunner/latest/dg/images/console-dashboard.png)

1. 아직 선택되지 않은 경우 서비스 대시보드 페이지에서 **활동** 탭을 선택합니다.

   콘솔에 작업 목록이 표시됩니다.

1. 특정 작업을 찾으려면 검색어를 입력하여 목록의 범위를 좁힙니다. 테이블에 나타나는 모든 값을 검색할 수 있습니다.

1. 나열된 작업을 선택하여 관련 로그를 보거나 다운로드합니다.

------
#### [ App Runner API or AWS CLI ]

App Runner 서비스의 Amazon 리소스 이름(ARN)을 고려하여 [ListOperations](https://docs.aws.amazon.com/apprunner/latest/api/API_ListOperations.html) 작업은이 서비스에서 발생한 작업 목록을 반환합니다. 각 목록 항목에는 작업 ID와 일부 추적 세부 정보가 포함됩니다.

------

# CloudWatch Logs로 스트리밍된 App Runner 로그 보기
<a name="monitor-cwl"></a>

Amazon CloudWatch Logs를 사용하여 다양한 AWS 서비스의 리소스가 생성하는 로그 파일을 모니터링, 저장 및 액세스할 수 있습니다. 자세한 내용은 [Amazon CloudWatch Logs 사용 설명서](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/)를 참조하세요.

AWS App Runner 는 애플리케이션 배포 및 활성 서비스의 출력을 수집하여 CloudWatch Logs로 스트리밍합니다. 다음 섹션에서는 App Runner 로그 스트림을 나열하고 App Runner 콘솔에서 보는 방법을 보여줍니다.

## App Runner 로그 그룹 및 스트림
<a name="monitor-cwl.streams"></a>

CloudWatch Logs는 로그 데이터를 로그 그룹에 추가로 구성하는 로그 스트림에 보관합니다. *로그 스트림*은 특정 소스의 로그 이벤트 시퀀스입니다. 로그 그룹은 동일한 보존 기간, 모니터링 및 액세스 제어 설정을 공유하는 로그 스트림 그룹입니다.

App Runner는의 각 App Runner 서비스에 대해 각각 여러 로그 스트림이 있는 두 개의 CloudWatch Logs 로그 그룹을 정의합니다 AWS 계정.

### 서비스 로그
<a name="monitor-cwl.streams.service"></a>

서비스 로그 그룹에는 App Runner가 App Runner 서비스를 관리하고 작업을 수행할 때 생성된 로깅 출력이 포함됩니다.


|  **로그 그룹 이름**  |  **예제**  | 
| --- | --- | 
|  `/aws/apprunner/service-name/service-id/service`  |  `/aws/apprunner/python-test/ac7ec8b51ff34746bcb6654e0bcb23da/service`  | 

서비스 로그 그룹 내에서 App Runner는 이벤트 로그 스트림을 생성하여 App Runner 서비스의 수명 주기에서 활동을 캡처합니다. 예를 들어 애플리케이션을 시작하거나 일시 중지할 수 있습니다.

또한 App Runner는 서비스와 관련된 장기 실행 비동기 작업마다 로그 스트림을 생성합니다. 로그 스트림 이름에는 작업 유형과 특정 작업 ID가 반영됩니다.

*배포*는 작업의 한 유형입니다. 배포 로그에는 서비스를 생성하거나 애플리케이션의 새 버전을 배포할 때 App Runner가 수행하는 빌드 및 배포 단계의 로깅 출력이 포함됩니다. 배포 로그 스트림 이름은 로 시작하고 배포를 수행하는 작업의 ID로 `deployment/`끝납니다. 이 작업은 초기 애플리케이션 배포를 위한 [CreateService](https://docs.aws.amazon.com/apprunner/latest/api/API_CreateService.html) 호출 또는 각 추가 배포를 위한 [StartDeployment](https://docs.aws.amazon.com/apprunner/latest/api/API_StartDeployment.html) 호출입니다.

배포 로그 내에서 각 로그 메시지는 접두사로 시작합니다.
+ `[AppRunner]` - App Runner가 배포 중에 생성하는 출력입니다.
+ `[Build]` - 자체 빌드 스크립트의 출력입니다.


|  **로그 스트림 이름**  |  **예제**  | 
| --- | --- | 
|  `events`  |  *해당 사항 없음(고정된 이름)*  | 
|  `operation-type/operation-id`  |  `deployment/c2c8eeedea164f459cf78f12a8953390`  | 

### 애플리케이션 로그
<a name="monitor-cwl.streams.deployment"></a>

애플리케이션 로그 그룹에는 실행 중인 애플리케이션 코드의 출력이 포함됩니다.


|  **로그 그룹 이름**  |  **예제**  | 
| --- | --- | 
|  `/aws/apprunner/service-name/service-id/application`  |  `/aws/apprunner/python-test/ac7ec8b51ff34746bcb6654e0bcb23da/application`  | 

애플리케이션 로그 그룹 내에서 App Runner는 애플리케이션을 실행하는 각 인스턴스(스케일링 단위)에 대한 로그 스트림을 생성합니다.


|  **로그 스트림 이름**  |  **예제**  | 
| --- | --- | 
|  `instance/instance-id`  |  `instance/1a80bc9134a84699b7b3432ebeebb591`  | 

## 콘솔에서 App Runner 로그 보기
<a name="monitor-cwl.console"></a>

App Runner 콘솔에는 서비스에 대한 모든 로그의 요약이 표시되며 이를 보고 탐색하고 다운로드할 수 있습니다.

**서비스에 대한 로그를 보려면**

1. [App Runner 콘솔](https://console.aws.amazon.com/apprunner)을 열고 **리전** 목록에서를 선택합니다 AWS 리전.

1. 탐색 창에서 **서비스를** 선택한 다음 App Runner 서비스를 선택합니다.

   콘솔에 서비스 **개요**와 함께 서비스 대시보드가 표시됩니다.  
![\[활동 목록을 보여주는 App Runner 서비스 대시보드 페이지\]](http://docs.aws.amazon.com/ko_kr/apprunner/latest/dg/images/console-dashboard.png)

1. 서비스 대시보드 페이지에서 **로그** 탭을 선택합니다.

   콘솔에는 몇 가지 유형의 로그가 여러 섹션에 표시됩니다.
   + **이벤트 로그** - App Runner 서비스의 수명 주기 내 활동입니다. 콘솔에 최신 이벤트가 표시됩니다.
   + **배포 로그** - App Runner 서비스에 대한 소스 리포지토리 배포입니다. 콘솔에는 각 배포에 대해 별도의 로그 스트림이 표시됩니다.
   + **애플리케이션 로그** - App Runner 서비스에 배포된 웹 애플리케이션의 출력입니다. 콘솔은 실행 중인 모든 인스턴스의 출력을 단일 로그 스트림으로 결합합니다.  
![\[App Runner 서비스 대시보드 페이지의 로그 탭\]](http://docs.aws.amazon.com/ko_kr/apprunner/latest/dg/images/service-dashboad-logs.png)

1. 특정 배포를 찾으려면 검색어를 입력하여 배포 로그 목록의 범위를 좁힙니다. 테이블에 나타나는 모든 값을 검색할 수 있습니다.

1. 로그의 콘텐츠를 보려면 **전체 로그 보기**(이벤트 로그) 또는 로그 스트림 이름(배포 및 애플리케이션 로그)을 선택합니다.

1. **다운로드**를 선택하여 로그를 다운로드합니다. 배포 로그 스트림의 경우 먼저 로그 스트림을 선택합니다.

1. **CloudWatch에서 보기를** 선택하여 CloudWatch 콘솔을 열고 전체 기능을 사용하여 App Runner 서비스 로그를 탐색합니다. 배포 로그 스트림의 경우 먼저 로그 스트림을 선택합니다.
**참고**  
CloudWatch 콘솔은 결합된 애플리케이션 로그 대신 특정 인스턴스의 애플리케이션 로그를 보려는 경우에 특히 유용합니다.

# CloudWatch에 보고된 App Runner 서비스 지표 보기
<a name="monitor-cw"></a>

Amazon CloudWatch는 Amazon Web Services(AWS) 리소스와 AWS 실행 중인 애플리케이션을 실시간으로 모니터링합니다. CloudWatch를 사용하여 리소스 및 애플리케이션에 대해 측정할 수 있는 변수인 지표를 수집하고 추적할 수 있습니다. 이를 사용하여 지표를 감시하는 경보를 생성할 수도 있습니다. 특정 임계값에 도달하면 CloudWatch는 알림을 보내거나 모니터링되는 리소스를 자동으로 변경합니다. 자세한 설명은 [Amazon CloudWatch 사용 설명서](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/)를 참조하세요.

AWS App Runner 는 App Runner 서비스의 사용, 성능 및 가용성에 대한 가시성을 높이는 다양한 지표를 수집합니다. 일부 지표는 웹 서비스를 실행하는 개별 인스턴스를 추적하는 반면, 다른 지표는 전체 서비스 수준에 있습니다. 다음 섹션에서는 App Runner 지표를 나열하고 App Runner 콘솔에서 지표를 보는 방법을 보여줍니다.

## App Runner 지표
<a name="monitor-cw.metrics"></a>

App Runner는 서비스와 관련된 다음 지표를 수집하여 `AWS/AppRunner` 네임스페이스의 CloudWatch에 게시합니다.

**참고**  
2023년 8월 23일 이전에 **CPU 사용률** 및 **메모리 사용률** 지표는 현재 계산된 *사용률 백분율* 대신 vCPU 단위 및 사용된 메모리 메가바이트를 기반으로 했습니다. 애플리케이션이이 날짜 이전에 App Runner에서 실행되었고 App Runner 또는 CloudWatch 콘솔에서이 날짜의 지표를 보도록 다시 선택하면 두 단위로 지표가 표시되며 결과적으로 몇 가지 불규칙성이 표시됩니다.

**중요**  
2023년 8월 23일 이전에 *CPU 사용률* 및 *메모리 사용률* 지표 값을 기반으로 하는 CloudWatch 경보를 업데이트해야 합니다. vCPU 또는 메가바이트가 아닌 사용률을 기반으로 트리거하도록 경보를 업데이트합니다. 자세한 설명은 [Amazon CloudWatch 사용 설명서](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/)를 참조하세요.

**인스턴스 수준 지표**는 각 인스턴스(스케일링 단위)에 대해 개별적으로 수집됩니다.


|  **무엇이 측정되나요?** |  **지표**  |  **설명**  | 
| --- | --- | --- | 
|  CPU utilization  |  `CPUUtilization`  |  서비스 구성에서 예약한 총 CPU 사용량 중 1분 동안의 평균 CPU 사용량 비율입니다.  | 
|  Memory utilization  |  `MemoryUtilization`  |  서비스 구성에서 예약한 총 메모리 중 1분 동안 평균 메모리 사용량의 백분율입니다.  | 

**서비스 수준 지표**는 전체 서비스에 대해 수집됩니다.


|  **무엇이 측정되나요?** |  **지표**  |  **설명**  | 
| --- | --- | --- | 
|  CPU utilization  |  `CPUUtilization`  |  서비스 구성에서 예약한 총 CPU 사용량 중 1분 동안 모든 인스턴스에서 집계된 CPU 사용량의 백분율입니다.  | 
|  Memory utilization  |  `MemoryUtilization`  |  서비스 구성에서 예약한 총 메모리 중 1분 동안 모든 인스턴스에서 집계된 메모리 사용량의 백분율입니다.  | 
|  Concurrency  |  `Concurrency`  |  서비스에서 처리 중인 동시 요청의 대략적인 수입니다.  | 
|  HTTP request count  |  `Requests`  |  서비스가 수신한 HTTP 요청 수입니다.  | 
|  HTTP status counts  |  `2xxStatusResponses` `4xxStatusResponses` `5xxStatusResponses`  |  범주(2XX, 4XX, 5XX)별로 그룹화된 각 응답 상태를 반환한 HTTP 요청 수입니다.  | 
|  HTTP request latency  |  `RequestLatency`  |  웹 서비스가 HTTP 요청을 처리하는 데 걸린 밀리초 단위의 시간입니다.  | 
|  Instance counts  |  `ActiveInstances`  |  서비스에 대한 HTTP 요청을 처리하는 인스턴스 수입니다.   지표에 `ActiveInstances` 0이 표시되면 서비스에 대한 요청이 없음을 의미합니다. 서비스의 인스턴스 수가 0임을 나타내지 않습니다.   | 

## 콘솔에서 App Runner 지표 보기
<a name="monitor-cw.console"></a>

App Runner 콘솔은 App Runner가 서비스에 대해 수집하는 지표를 그래픽으로 표시하고 이를 탐색하는 더 많은 방법을 제공합니다.

**참고**  
현재 콘솔에는 서비스 지표만 표시됩니다. 인스턴스 지표를 보려면 CloudWatch 콘솔을 사용합니다.

**서비스에 대한 로그를 보려면**

1. [App Runner 콘솔](https://console.aws.amazon.com/apprunner)을 열고 **리전** 목록에서를 선택합니다 AWS 리전.

1. 탐색 창에서 **서비스를** 선택한 다음 App Runner 서비스를 선택합니다.

   콘솔에 서비스 **개요**와 함께 서비스 대시보드가 표시됩니다.  
![\[활동 목록을 보여주는 App Runner 서비스 대시보드 페이지\]](http://docs.aws.amazon.com/ko_kr/apprunner/latest/dg/images/console-dashboard.png)

1. 서비스 대시보드 페이지에서 **지표** 탭을 선택합니다.

   콘솔에는 지표 그래프 세트가 표시됩니다.  
![\[App Runner 서비스 대시보드 페이지의 지표 탭\]](http://docs.aws.amazon.com/ko_kr/apprunner/latest/dg/images/service-dashboad-metrics.png)

1. 기간(예: **12시간**)을 선택하여 지표 그래프의 범위를 해당 기간의 최근 기간으로 지정합니다.

1. 그래프 섹션 중 하나 상단의 **대시보드에 추가**를 선택하거나 그래프의 메뉴를 사용하여 추가 조사를 위해 CloudWatch 콘솔의 대시보드에 관련 지표를 추가합니다.

# EventBridge에서 App Runner 이벤트 처리
<a name="monitor-ev"></a>

Amazon EventBridge를 사용하면 특정 패턴에 대해 AWS App Runner 서비스의 실시간 데이터 스트림을 모니터링하는 이벤트 기반 규칙을 설정할 수 있습니다. 규칙의 패턴이 일치하면 EventBridge는 Amazon ECS AWS Lambda및 Amazon SNS AWS Batch와 같은 대상에서 작업을 시작합니다. 예를 들어 서비스에 대한 배포가 실패할 때마다 Amazon SNS 주제에 신호를 보내 이메일 알림을 보내는 규칙을 설정할 수 있습니다. 또는 서비스 업데이트가 실패할 때마다 Slack 채널에 알리도록 Lambda 함수를 설정할 수 있습니다. EventBridge에 대한 자세한 내용은 [Amazon EventBridge 사용 설명서를](https://docs.aws.amazon.com/eventbridge/latest/userguide/) 참조하세요.

App Runner가 EventBridge로 다음 이벤트 유형 전송
+ *서비스 상태 변경* - App Runner 서비스의 상태 변경입니다. 예를 들어 서비스 상태가 로 변경되었습니다`DELETE_FAILED`.
+ *서비스 작업 상태 변경* - App Runner 서비스에서 긴 비동기 작업의 상태 변경입니다. 예를 들어 서비스가 생성되기 시작했거나, 서비스 업데이트가 성공적으로 완료되었거나, 서비스 배포가 오류와 함께 완료되었습니다.

## App Runner 이벤트에 대한 EventBridge 규칙 생성
<a name="monitor-ev.rule"></a>

EventBridge *이벤트*는 소스 AWS 서비스 및 세부 정보(이벤트) 유형과 같은 일부 표준 EventBridge 필드와 이벤트 세부 정보가 포함된 이벤트별 필드 세트를 정의하는 객체입니다. EventBridge 규칙을 생성하려면 EventBridge 콘솔을 사용하여 *이벤트 패턴*(추적해야 하는 이벤트)을 정의하고 *대상 작업*(일치에 대해 수행해야 하는 작업)을 지정합니다. 이벤트 패턴은 일치하는 이벤트와 유사합니다. 일치시킬 필드의 하위 집합을 지정하고 각 필드에 대해 가능한 값 목록을 지정합니다. 이 주제에서는 App Runner 이벤트 및 이벤트 패턴의 예를 제공합니다.

EventBridge 규칙 생성에 대한 자세한 내용은 *Amazon EventBridge 사용 설명서*의 [서비스에 대한 AWS 규칙 생성을](https://docs.aws.amazon.com/eventbridge/latest/userguide/create-eventbridge-rule.html) 참조하세요.

**참고**  
일부 서비스는 EventBridge에서 *사전 정의된 패턴을* 지원합니다. 이를 통해 이벤트 패턴이 생성되는 방법이 간소화됩니다. 양식에서 필드 값을 선택하면 EventBridge가 자동으로 패턴을 생성합니다. 현재 App Runner는 사전 정의된 패턴을 지원하지 않습니다. 패턴을 JSON 객체로 입력해야 합니다. 이 주제의 예제를 시작점으로 사용할 수 있습니다.

## App Runner 이벤트 예제
<a name="monitor-ev.event-examples"></a>

다음은 App Runner가 EventBridge로 보내는 이벤트에 대한 몇 가지 예입니다.
+ 서비스 상태 변경 이벤트입니다. 특히에서 `RUNNING` 상태로 변경된 서비스`OPERATION_IN_PROGRESS`입니다.

  ```
  { 
    "version": "0",
    "id": "6a7e8feb-b491-4cf7-a9f1-bf3703467718",
    "detail-type": "AppRunner Service Status Change",
    "source": "aws.apprunner",
    "account": "111122223333",
    "time": "2021-04-29T11:54:23Z",
    "region": "us-east-2",
    "resources": [
      "arn:aws:apprunner:us-east-2:123456789012:service/my-app/8fe1e10304f84fd2b0df550fe98a71fa"
    ],
    "detail": {
      "previousServiceStatus": "OPERATION_IN_PROGRESS",
      "currentServiceStatus": "RUNNING",
      "serviceName": "my-app",
      "serviceId": "8fe1e10304f84fd2b0df550fe98a71fa",
      "message": "Service status is set to RUNNING.",
      "severity": "INFO"
    }
  }
  ```
+ 작업 상태 변경 이벤트입니다. 특히 작업이 성공적으로 `UpdateService` 완료되었습니다.

  ```
  { 
    "version": "0",
    "id": "6a7e8feb-b491-4cf7-a9f1-bf3703467718",
    "detail-type": "AppRunner Service Operation Status Change",
    "source": "aws.apprunner",
    "account": "111122223333",
    "time": "2021-04-29T18:43:48Z",
    "region": "us-east-2",
    "resources": [
      "arn:aws:apprunner:us-east-2:123456789012:service/my-app/8fe1e10304f84fd2b0df550fe98a71fa"
    ],
    "detail": {
      "operationStatus": "UpdateServiceCompletedSuccessfully",
      "serviceName": "my-app",
      "serviceId": "8fe1e10304f84fd2b0df550fe98a71fa",
      "message": "Service update completed successfully. New application and configuration is deployed.",
      "severity": "INFO"
    }
  }
  ```

## App Runner 이벤트 패턴 예제
<a name="monitor-ev.pattern-examples"></a>

다음 예제에서는 EventBridge 규칙에서 하나 이상의 App Runner 이벤트를 일치시키는 데 사용할 수 있는 이벤트 패턴을 보여줍니다. 이벤트 패턴은 이벤트와 유사합니다. 일치시키려는 필드만 포함하고 각 필드에 스칼라 대신 목록을 제공합니다.
+ 서비스가 더 이상 상태가 아닌 특정 계정의 서비스에 대한 모든 서비스 `RUNNING` 상태 변경 이벤트를 일치시킵니다.

  ```
  { 
    "detail-type": [ "AppRunner Service Status Change" ],
    "source": [ "aws.apprunner" ],
    "account": [ "111122223333" ],
    "detail": {
      "previousServiceStatus": [ "RUNNING" ]
    }
  }
  ```
+ 작업이 실패한 특정 계정의 서비스에 대한 모든 작업 상태 변경 이벤트를 일치시킵니다.

  ```
  { 
    "detail-type": [ "AppRunner Service Operation Status Change" ],
    "source": [ "aws.apprunner" ],
    "account": [ "111122223333" ],
    "detail": {
      "operationStatus": [
        "CreateServiceFailed",
        "DeleteServiceFailed",
        "UpdateServiceFailed",
        "DeploymentFailed",
        "PauseServiceFailed",
        "ResumeServiceFailed"
      ]
    }
  }
  ```

## App Runner 이벤트 참조
<a name="monitor-ev.ref"></a>

### 서비스 상태 변경
<a name="monitor-ev.ref.service"></a>

서비스 상태 변경 이벤트가 로 `detail-type` 설정되었습니다`AppRunner Service Status Change`. 여기에는 다음과 같은 세부 정보 필드와 값이 있습니다.

```
"serviceId": "your service ID",
"serviceName": "your service name",
"message": "Service status is set to CurrentStatus.",
"previousServiceStatus": "any valid service status",
"currentServiceStatus": "any valid service status",
"severity": "varies"
```

### 작업 상태 변경
<a name="monitor-ev.ref.operation"></a>

작업 상태 변경 이벤트가 로 `detail-type` 설정되었습니다`AppRunner Service Operation Status Change`. 여기에는 다음과 같은 세부 정보 필드와 값이 있습니다.

```
"operationStatus": "see following table",
"serviceName": "your service name",
"serviceId": "your service ID",
"message": "see following table",
"severity": "varies"
```

다음 표에는 가능한 모든 상태 코드와 관련 메시지가 나열되어 있습니다.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/apprunner/latest/dg/monitor-ev.html)

# 를 사용하여 App Runner API 호출 로깅 AWS CloudTrail
<a name="monitor-ct"></a>

App Runner는 App Runner에서 사용자 AWS CloudTrail, 역할 또는 서비스가 수행한 작업에 대한 레코드를 제공하는 AWS 서비스와 통합됩니다. CloudTrail은 App Runner에 대한 모든 API 호출을 이벤트로 캡처합니다. 캡처되는 호출에는 App Runner 콘솔의 호출과 App Runner API 작업에 대한 코드 호출이 포함됩니다. 추적을 생성하면 App Runner 이벤트를 포함한 CloudTrail 이벤트를 지속적으로 Amazon S3 버킷에 배포할 수 있습니다. 추적을 구성하지 않은 경우에도 **이벤트 기록**에서 CloudTrail 콘솔의 최신 이벤트를 볼 수 있습니다. CloudTrail에서 수집한 정보를 사용하여 App Runner에 수행된 요청, 요청이 수행된 IP 주소, 요청을 수행한 사람, 요청이 수행된 시간 및 추가 세부 정보를 확인할 수 있습니다.

CloudTrail에 대한 자세한 내용은 [AWS CloudTrail 사용 설명서](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/)를 참조하세요.

## CloudTrail의 App Runner 정보
<a name="apprunner-info-in-cloudtrail"></a>

CloudTrail은 계정을 생성할 AWS 계정 때에서 활성화됩니다. App Runner에서 활동이 발생하면 해당 활동이 **이벤트 기록**의 다른 AWS 서비스 이벤트와 함께 CloudTrail 이벤트에 기록됩니다. 에서 최근 이벤트를 보고 검색하고 다운로드할 수 있습니다 AWS 계정. 자세한 설명은 [CloudTrail 이벤트 기록으로 이벤트 보기](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html)를 참조하세요.

App Runner에 대한 이벤트를 AWS 계정포함하여에 이벤트를 지속적으로 기록하려면 추적을 생성합니다. CloudTrail은 *추적*을 사용하여 Amazon S3 버킷으로 로그 파일을 전송할 수 있습니다. 콘솔에서 트레일을 생성하면 기본적으로 모든 AWS 리전에 트레일이 적용됩니다. 추적은 AWS 파티션의 모든 리전에서 이벤트를 로깅하고 지정한 Amazon S3 버킷으로 로그 파일을 전송합니다. 또한 CloudTrail 로그에서 수집된 이벤트 데이터를 추가로 분석하고 조치를 취하도록 다른 AWS 서비스를 구성할 수 있습니다. 자세한 내용은 다음 자료를 참조하세요.
+ [추적 생성 개요](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html)
+ [CloudTrail 지원 서비스 및 통합](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-aws-service-specific-topics.html#cloudtrail-aws-service-specific-topics-integrations)
+ [CloudTrail에서 Amazon SNS 알림 구성](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/getting_notifications_top_level.html)
+ [여러 리전으로부터 CloudTrail 로그 파일 받기](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html) 및 [여러 계정으로부터 CloudTrail 로그 파일 받기](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-receive-logs-from-multiple-accounts.html)

모든 App Runner 작업은 CloudTrail에서 로깅되며 AWS App Runner API 참조에 문서화됩니다. 예를 들어 `CreateService`, `DeleteConnection` 및 `StartDeployment` 작업을 직접적으로 호출하면 CloudTrail 로그 파일에 항목이 생성됩니다.

모든 이벤트 또는 로그 항목에는 요청을 생성했던 사용자에 관한 정보가 포함됩니다. ID 정보를 이용하면 다음을 쉽게 판단할 수 있습니다.
+ 요청을 루트로 했는지 아니면 IAM 사용자 자격 증명 정보로 했는지 여부.
+ 역할 또는 페더레이션 사용자의 임시 자격 증명을 사용하여 요청이 생성되었는지 여부.
+ 요청이 다른 AWS 서비스에서 이루어졌는지 여부입니다.

자세한 설명은 [CloudTrail userIdentity 요소](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-user-identity.html)를 참조하세요.

## App Runner 로그 파일 항목 이해
<a name="understanding-apprunner-entries"></a>

트레일이란 지정한 S3 버킷에 이벤트를 로그 파일로 입력할 수 있게 하는 구성입니다. CloudTrail 로그 파일에는 하나 이상의 로그 항목이 포함될 수 있습니다. 이벤트는 모든 소스로부터의 단일 요청을 나타내며 요청 작업, 작업 날짜와 시간, 요청 파라미터에 관한 정보가 들어 있습니다. CloudTrail 로그 파일은 퍼블릭 API 직접 호출의 주문 스택 트레이스가 아니므로 특정 순서로 표시되지 않습니다.

다음 예제는 `CreateService` 작업을 보여주는 CloudTrail 로그 항목이 나타냅니다.

**참고**  
보안상의 이유로 일부 속성 값은 로그에서 수정되고 텍스트 로 대체됩니다`HIDDEN_DUE_TO_SECURITY_REASONS`. 이렇게 하면 비밀 정보가 의도치 않게 노출되는 것을 방지할 수 있습니다. 그러나 이러한 속성이 요청에서 전달되었거나 응답에서 반환되었음을 여전히 확인할 수 있습니다.

### `CreateService` App Runner 작업에 대한 CloudTrail 로그 항목 예제
<a name="understanding-apprunner-entries.example"></a>

```
{
  "eventVersion": "1.08",
  "userIdentity": {
    "type": "IAMUser",
    "principalId": "AIDACKCEVSQ6C2EXAMPLE",
    "arn": "arn:aws:iam::123456789012:user/aws-user",
    "accountId": "123456789012",
    "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
    "userName": "aws-user"
  },
  "eventTime": "2020-10-02T23:25:33Z",
  "eventSource": "apprunner.amazonaws.com",
  "eventName": "CreateService",
  "awsRegion": "us-east-2",
  "sourceIPAddress": "192.0.2.0",
  "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36",
  "requestParameters": {
    "serviceName": "python-test",
    "sourceConfiguration": {
      "codeRepository": {
        "repositoryUrl": "https://github.com/github-user/python-hello",
        "sourceCodeVersion": {
          "type": "BRANCH",
          "value": "main"
        },
        "codeConfiguration": {
          "configurationSource": "API",
          "codeConfigurationValues": {
            "runtime": "python3",
            "buildCommand": "HIDDEN_DUE_TO_SECURITY_REASONS",
            "startCommand": "HIDDEN_DUE_TO_SECURITY_REASONS",
            "port": "8080",
            "runtimeEnvironmentVariables": "HIDDEN_DUE_TO_SECURITY_REASONS"
          }
        }
      },
      "autoDeploymentsEnabled": true,
      "authenticationConfiguration": {
        "connectionArn": "arn:aws:apprunner:us-east-2:123456789012:connection/your-connection/e7656250f67242d7819feade6800f59e"
      }
    },
    "healthCheckConfiguration": {
      "protocol": "HTTP"
    },
    "instanceConfiguration": {
      "cpu": "256",
      "memory": "1024"
    }
  },
  "responseElements": {
    "service": {
        "serviceName": "python-test",
        "serviceId": "dfa2b7cc7bcb4b6fa6c1f0f4efff988a",
        "serviceArn": "arn:aws:apprunner:us-east-2:123456789012:service/python-test/dfa2b7cc7bcb4b6fa6c1f0f4efff988a",
        "serviceUrl": "generated domain",
        "createdAt": "2020-10-02T23:25:32.650Z",
        "updatedAt": "2020-10-02T23:25:32.650Z",
        "status": "OPERATION_IN_PROGRESS",
        "sourceConfiguration": {
            "codeRepository": {
                "repositoryUrl": "https://github.com/github-user/python-hello",
                "sourceCodeVersion": {
                    "type": "Branch",
                    "value": "main"
                },
                "sourceDirectory": "/",
                "codeConfiguration": {
                    "codeConfigurationValues": {
                        "configurationSource": "API",
                        "runtime": "python3",
                        "buildCommand": "HIDDEN_DUE_TO_SECURITY_REASONS",
                        "startCommand": "HIDDEN_DUE_TO_SECURITY_REASONS",
                        "port": "8080",
                        "runtimeEnvironmentVariables": "HIDDEN_DUE_TO_SECURITY_REASONS"
                    }
                }
            },
            "autoDeploymentsEnabled": true,
            "authenticationConfiguration": {
                "connectionArn": "arn:aws:apprunner:us-east-2:123456789012:connection/your-connection/e7656250f67242d7819feade6800f59e"
            }
        },
        "healthCheckConfiguration": {
            "protocol": "HTTP",
            "path": "/",
            "interval": 5,
            "timeout": 2,
            "healthyThreshold": 3,
            "unhealthyThreshold": 5
        },
        "instanceConfiguration": {
            "cpu": "256",
            "memory": "1024"
        },
        "autoScalingConfigurationSummary": {
            "autoScalingConfigurationArn": "arn:aws:apprunner:us-east-2:123456789012:autoscalingconfiguration/DefaultConfiguration/1/00000000000000000000000000000001",
            "autoScalingConfigurationName": "DefaultConfiguration",
            "autoScalingConfigurationRevision": 1
        }
    }
},
  "requestID": "1a60af60-ecf5-4280-aa8f-64538319ba0a",
  "eventID": "e1a3f623-4d24-4390-a70b-bf08a0e24669",
  "readOnly": false,
  "eventType": "AwsApiCall",
  "recipientAccountId": "123456789012"
}
```

# 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).