

# Amazon CloudWatch 지표를 사용한 REST API 실행 모니터링
<a name="monitoring-cloudwatch"></a>

API Gateway에서 원시 데이터를 수집하고 읽기 가능한 실시간에 가까운 지표로 처리하는 CloudWatch를 사용하여 API 실행을 모니터링할 수 있습니다. 이러한 통계는 15개월 간 기록되므로 기록 정보에 액세스하고 웹 애플리케이션이나 서비스가 어떻게 수행되고 있는지 전체적으로 더 잘 파악할 수 있습니다. 기본적으로 API Gateway 지표 데이터는 1분 간격으로 CloudWatch로 자동 전송됩니다. 자세한 내용은 *Amazon CloudWatch 사용 설명서*의 [Amazon CloudWatch란 무엇입니까?](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html)를 참조하십시오.

API Gateway에서 보고하는 지표는 다양한 방법으로 분석할 수 있는 정보를 제공합니다. 다음 목록은 시작을 위한 권장 사항인 지표의 몇 가지 일반적인 용도를 보여줍니다.
+ **IntegrationLatency** 측정치를 모니터링하여 백엔드의 응답 속도를 측정합니다.
+ **Latency** 측정치를 모니터링하여 API 호출의 전반적인 응답 속도를 측정합니다.
+ **CacheHitCount** 및 **CacheMissCount** 측정치를 모니터링하여 캐시 용량을 최적화하고 원하는 성능을 달성합니다.

**Topics**
+ [Amazon API Gateway 차원 및 지표](api-gateway-metrics-and-dimensions.md)
+ [API Gateway의 API 대시보드를 사용하여 CloudWatch 지표 보기](how-to-api-dashboard.md)
+ [CloudWatch 콘솔에서 API Gateway 지표 보기](metrics_dimensions_view_in_cloud_watch.md)
+ [CloudWatch 콘솔에서 API Gateway 로그 이벤트 보기](view-cloudwatch-log-events-in-cloudwatch-console.md)
+ [API Gateway에 대한 AWS의 모니터링 도구](monitoring_automated_manual.md)

# Amazon API Gateway 차원 및 지표
<a name="api-gateway-metrics-and-dimensions"></a>

API Gateway가 Amazon CloudWatch에 전송하는 지표와 차원은 다음과 같습니다. 자세한 내용은 [Amazon CloudWatch 지표를 사용한 REST API 실행 모니터링](monitoring-cloudwatch.md) 단원을 참조하세요.

## API Gateway 지표
<a name="api-gateway-metrics"></a>

Amazon API Gateway는 1분마다 지표 데이터를 CloudWatch로 전송합니다.

`AWS/ApiGateway` 네임스페이스에는 다음 지표가 포함되어 있습니다.


| 지표 | 설명 | 
| --- | --- | 
|  4XXError |  지정한 기간 내에 캡처된 클라이언트 측 오류 수 API Gateway는 수정된 게이트웨이 응답 상태 코드를 4XXError 오류로 계산합니다. `Sum` 통계는 이 지표 즉, 지정된 기간 내 총 4XXError 오류 개수를 나타냅니다. `Average` 통계는 4XXError 오류율 즉, 총 4XXError 오류 개수를 해당 기간 동안의 총 요청 수로 나눈 것입니다. 분모는 Count 지표에 해당합니다(아래). Unit: Count  | 
|  5XXError  |  지정한 기간 내에 캡처된 서버 측 오류 수. `Sum` 통계는 이 지표 즉, 지정된 기간 내 총 5XXError 오류 개수를 나타냅니다. `Average` 통계는 5XXError 오류율 즉, 총 5XXError 오류 개수를 해당 기간 동안의 총 요청 수로 나눈 것입니다. 분모는 Count 지표에 해당합니다(아래). Unit: Count  | 
|  CacheHitCount  |  지정된 기간 내 API 캐시에서 처리한 요청 수 `Sum` 통계는 이 지표 즉, 지정된 기간 내 총 캐시 적중 수를 나타냅니다. `Average` 통계는 캐시 적중률 즉, 총 캐시 적중 수를 해당 기간 동안의 총 요청 수로 나눈 것입니다. 분모는 Count 지표에 해당합니다(아래). Unit: Count  | 
|  CacheMissCount  |  API 캐싱이 활성화되어 있을 때 지정된 기간 동안 백엔드에서 처리된 요청 수 `Sum` 통계는 이 지표 즉, 지정된 기간 내 총 캐시 누락 수를 나타냅니다. `Average` 통계는 캐시 누락률 즉, 총 캐시 누락 수를 해당 기간 동안의 총 요청 수로 나눈 것입니다. 분모는 Count 지표에 해당합니다(아래). Unit: Count  | 
|  Count  |  지정된 기간 동안의 총 API 요청 수. `SampleCount` 통계는 이 지표를 나타냅니다. Unit: Count  | 
|  IntegrationLatency  |  API Gateway가 요청을 백엔드로 릴레이할 때부터 백엔드에서 응답을 수신할 때까지의 시간입니다. Unit: Millisecond  | 
|  Latency  |  API Gateway가 클라이언트에서 요청을 수신할 때부터 클라이언트에게 응답을 반환할 때까지의 시간입니다. 지연 시간에는 통합 지연 시간과 기타 API Gateway 오버헤드가 포함됩니다. Unit: Millisecond  | 

## 지표 차원
<a name="api-gateway-metricdimensions"></a>

다음 표의 차원을 사용하여 API Gateway 지표를 필터링할 수 있습니다.

**참고**  
API Gateway는 지표를 CloudWatch로 전송하기 전에 ApiName 차원에서 비 ASCII 문자를 제거합니다. APIName에 ASCII 문자가 없는 경우 API ID가 ApiName으로 사용됩니다.


| 차원 | 설명 | 
| --- | --- | 
|  ApiName  |  지정한 API 이름을 사용하여 REST API에 대한 API Gateway 지표를 필터링합니다.  | 
|  ApiName, Method, Resource, Stage  |  지정한 API 이름, 단계, 리소스 및 메서드를 사용하여 API 메서드에 대한 API Gateway 지표를 필터링합니다. 사용자가 세부 CloudWatch 지표를 명시적으로 활성화하지 않으면 API Gateway는 이러한 지표를 전송하지 않습니다. 콘솔에서 스테이지를 선택한 다음 **로그 및 추적**에서 **편집**을 선택합니다. **세부 지표**를 선택한 다음 **변경 사항 저장**을 선택합니다. 또는 [update-stage](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-stage.html) AWS CLI 명령을 호출하여 `metricsEnabled` 속성을 `true`로 업데이트할 수 있습니다. 이러한 지표를 활성화하면 계정에 추가 비용이 발생합니다. 요금에 대한 자세한 내용은 [Amazon CloudWatch 요금](https://aws.amazon.com/cloudwatch/pricing/)을 참조하십시오.  | 
|  ApiName, Stage  |  지정한 API 이름과 단계를 사용하여 API 단계 리소스에 대한 API Gateway 지표를 필터링합니다.  | 

# API Gateway의 API 대시보드를 사용하여 CloudWatch 지표 보기
<a name="how-to-api-dashboard"></a>

API Gateway 콘솔에서 API 대시보드를 사용하여 API Gateway에 배포된 API의 CloudWatch 지표를 표시할 수 있습니다. 시간의 흐름에 따른 API 활동을 요약하여 표시합니다.

**Topics**
+ [사전 조건](#how-to-api-dashboard-prerequisites)
+ [대시보드에서 API 활동 검사](#how-to-api-dashboard-console)

## 사전 조건
<a name="how-to-api-dashboard-prerequisites"></a>

1. API Gateway에서 생성된 API가 있어야 합니다. [API Gateway에서 REST API 개발](rest-api-develop.md)의 지침을 따르십시오.

1. API는 1회 이상 배포되어야 합니다. [API Gateway에서 REST API 배포](how-to-deploy-api.md)의 지침을 따르십시오.

## 대시보드에서 API 활동 검사
<a name="how-to-api-dashboard-console"></a>

1. [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway)에서 API Gateway 콘솔에 로그인합니다.

1. API를 선택합니다.

1. 기본 탐색 창에서 **대시보드**를 선택합니다.

1. **스테이지**에서 원하는 스테이지를 선택합니다.

1. 날짜 범위를 지정하려면 **날짜 범위**를 선택합니다.

1. 필요할 경우 새로 고침을 수행하고 개별 그래프(**API 호출**, **지연 시간**, **통합 지연 시간**, **지연 시간**, **4xx 오류** 및 **5xx 오류**)에 표시된 개별 측정치를 확인합니다.
**작은 정보**  
메서드 수준 CloudWatch 지표를 검사하려면 메서드 수준에서 CloudWatch Logs를 활성화했는지 확인합니다. 메서드 수준 로깅을 설정하는 방법에 대한 자세한 내용은 단원을 참조하십시오[스테이지 수준 설정 재정의](set-up-stages.md#how-to-method-override)

# CloudWatch 콘솔에서 API Gateway 지표 보기
<a name="metrics_dimensions_view_in_cloud_watch"></a>

지표는 먼저 서비스 네임스페이스별로 그룹화된 다음 각 네임스페이스 내에서 다양한 차원 조합별로 그룹화됩니다. API의 메서드 수준에서 지표를 보려면 세부 지표를 켭니다. 자세한 내용은 [스테이지 설정 수정](set-up-stages.md#how-to-stage-settings) 섹션을 참조하세요.

**CloudWatch 콘솔을 사용하여 API Gateway 지표를 보려면**

1. [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)에서 CloudWatch 콘솔을 엽니다.

1. 필요한 경우 AWS 리전을 변경합니다. 탐색 모음에서 AWS 리소스가 상주하는 리전을 선택합니다.

1. 탐색 창에서 [**Metrics**]를 선택합니다.

1. **모든 측정치(All metrics)** 탭에서 **API 게이트웨이(API Gateway)**를 선택합니다.

1.  측정치를 단계별로 확인하려면 **스테이지별** 패널을 선택합니다. 그 다음에 API와 지표 이름을 선택합니다.

1. 측정치를 특정 API별로 확인하려면 **Api 이름별** 패널을 선택합니다. 그 다음에 API와 지표 이름을 선택합니다.

**AWS CLI를 사용하여 지표를 보려면**

1. 다음 [list-metrics](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/list-metrics.html) 명령을 사용하면 지표의 목록을 표시할 수 있습니다.

   ```
   aws cloudwatch list-metrics --namespace "AWS/ApiGateway"
   ```

   지표를 만든 후 지표가 표시될 때까지 최대 15분이 걸릴 수 있습니다. 지표 통계를 더 빨리 보려면 [get-metric-data](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/update-domain-name.html) 또는 [get-metric-statistics](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/update-domain-name.html)를 사용합니다.

1. 다음 [get-metrics-statistics](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/get-metric-statistics.html) 명령을 사용하면 5분 간격을 사용하여 일정 기간 동안의 평균을 확인할 수 있습니다.

   ```
   aws cloudwatch get-metric-statistics --namespace AWS/ApiGateway --metric-name Count --start-time 2011-10-03T23:00:00Z --end-time 2017-10-05T23:00:00Z --period 300 --statistics Average
   ```

# CloudWatch 콘솔에서 API Gateway 로그 이벤트 보기
<a name="view-cloudwatch-log-events-in-cloudwatch-console"></a>

다음 섹션에서는 필요한 사전 요구 사항과 CloudWatch 콘솔에서 API Gateway 로그 이벤트를 보는 방법을 설명합니다.

## 사전 조건
<a name="view-cloudwatch-log-event-prerequisites"></a>

1. API Gateway에서 생성된 API가 있어야 합니다. [API Gateway에서 REST API 개발](rest-api-develop.md)의 지침을 따르십시오.

1. API를 1회 이상 배포 및 호출한 상태여야 합니다. [API Gateway에서 REST API 배포](how-to-deploy-api.md) 및 [API Gateway에서 REST API 간접 호출](how-to-call-api.md)의 지침을 따르십시오.

1. 스테이지에 대해 CloudWatch Logs를 활성화한 상태여야 합니다. [API Gateway에서 REST API에 대한 CloudWatch 로깅 설정](set-up-logging.md)의 지침을 따르세요.

## CloudWatch 콘솔을 사용하여 로깅된 API 요청 및 응답을 보려면
<a name="view-cloudwatch-log-event"></a>

1. [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)에서 CloudWatch 콘솔을 엽니다.

1. 필요한 경우 AWS 리전을 변경합니다. 탐색 모음에서 AWS 리소스가 상주하는 리전을 선택합니다. 자세한 내용은 [리전 및 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/rande.html)를 참조하세요.

1. 탐색 창에서 **로그**, **로그 그룹**을 선택합니다.

1. **로그 그룹** 테이블에서 **API-Gateway-Execution-Logs\$1\$1rest-api-id\$1/\$1stage-name\$1** 이름의 로그 그룹을 선택합니다.

1.  **로그 스트림** 테이블에서 로그 스트림을 선택합니다. 타임스탬프를 사용하면 관심 있는 로그 스트림을 찾는 데 도움이 됩니다.

1. **텍스트**를 선택하여 원시 텍스트를 보거나 **열**을 선택하여 각 행의 이벤트를 확인합니다.

**중요**  
 CloudWatch를 사용하여 로그 그룹 또는 스트림을 삭제할 수 있습니다. API Gateway API 로그 그룹 또는 스트림을 수동으로 삭제하지 마십시오. 그 대신 API Gateway가 이러한 리소스를 관리하도록 하십시오. 로그 그룹 또는 스트림을 수동으로 삭제하면 API 요청 및 응답이 기록되지 않을 수 있습니다. 이런 일이 발생하는 경우, API에 대한 전체 로그 그룹을 삭제하고 API를 다시 배포할 수 있습니다. 이렇게 하는 이유는 API Gateway는 API가 배포되는 시점에 API 단계에 대해 로그 그룹 또는 로그 스트림을 생성하기 때문입니다.

# API Gateway에 대한 AWS의 모니터링 도구
<a name="monitoring_automated_manual"></a>

AWS는 API Gateway를 모니터링하는 데 사용할 수 있는 다양한 도구를 제공합니다. 모니터링을 자동으로 수행하도록 구성할 수 있는 도구도 있지만, 수동 작업이 필요한 도구도 있습니다. 모니터링 작업을 최대한 자동화하는 것이 좋습니다.

## 의 자동 모니터링 도구AWS
<a name="monitoring_automated_tools"></a>

다음과 같은 자동 모니터링 도구를 사용하여 API Gateway를 감시하고 문제가 발생할 경우 보고할 수 있습니다.
+ **Amazon CloudWatch 경보** – 지정한 기간 동안 단일 지표를 감시하고, 여러 기간에 대해 지정된 임계값과 관련하여 지표 값을 기준으로 하나 이상의 작업을 수행합니다. 이 작업은 Amazon Simple Notification Service(Amazon SNS) 주제 또는 Amazon EC2 Auto Scaling 정책에 전송되는 알림입니다. CloudWatch 경보는 특정 상태에 있다는 이유만으로는 작업을 호출하지 않습니다. 상태가 변경되고 지정한 기간 동안 유지되어야 합니다. 자세한 내용은 [Amazon CloudWatch 지표를 사용한 REST API 실행 모니터링](monitoring-cloudwatch.md)을 참조하십시오.
+ **Amazon CloudWatch Logs** – AWS CloudTrail 또는 기타 소스의 로그 파일을 모니터링, 저장 및 액세스합니다. 자세한 내용은 **Amazon CloudWatch 사용 설명서의 [CloudWatch Logs란?](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html)을 참조하세요.
+ **Amazon EventBridge(이전 명칭: CloudWatch Events)** – 이벤트를 일치시키고 하나 이상의 대상 함수 또는 스트림으로 라우팅하여 값을 변경하거나 상태 정보를 캡처하거나 수정 작업을 수행합니다. 자세한 내용은 **Amazon EventBridge 사용 설명서의 [Amazon EventBridge란?](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html)을 참조하세요.
+ **AWS CloudTrail 로그 모니터링** - 계정 간에 로그 파일을 공유하고, CloudTrail 로그 파일을 CloudWatch Logs에 전송하여 실시간으로 모니터링하며, Java에서 로그 처리 애플리케이션을 작성하고, CloudTrail에서 전송한 후 로그 파일이 변경되지 않았는지 확인합니다. 자세한 내용은 AWS CloudTrail 사용 설명서**의 [CloudTrail 로그 파일 작업](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-working-with-log-files.html)을 참조하세요.

## 수동 모니터링 도구
<a name="monitoring_manual_tools"></a>

API Gateway 모니터링의 또 한 가지 중요한 부분은 CloudWatch 경보에 포함되지 않는 항목을 수동으로 모니터링해야 한다는 점입니다. API Gateway, CloudWatch 및 기타 AWS 콘솔 대시보드에서 AWS 환경의 상태를 한눈에 볼 수 있습니다. API 실행에 대한 로그 파일도 확인하는 것이 좋습니다.
+ API Gateway 대시보드에는 지정된 기간 동안 지정된 API 단계에 대해 다음과 같은 통계가 표시됩니다.
  + **API 호출**
  + **캐시 적중(Cache Hit)**은 API 캐싱이 활성화될 때만 해당됩니다.
  + **캐시 누락(Cache Miss)**은 API 캐싱이 활성화될 때만 해당됩니다.
  + **Latency**
  + **통합 지연 시간**
  + **4XX 오류**
  + **5XX 오류**
+ CloudWatch 홈 페이지에는 다음 내용이 표시됩니다.
  + 현재 경보 및 상태
  + 경보 및 리소스 그래프
  + 서비스 상태

  또한 CloudWatch를 사용하여 다음을 수행할 수 있습니다.
  + [맞춤 대시보드](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html)를 생성하여 관심 있는 서비스 모니터링
  + 지표 데이터를 그래프로 작성하여 문제를 해결하고 추세 파악
  + 모든 AWS 리소스 지표 검색 및 찾아보기
  + 문제에 대해 알려주는 경보 생성 및 편집

## API Gateway를 모니터링하기 위한 CloudWatch 경보 생성
<a name="creating_alarms"></a>

경보 상태가 변경되면 Amazon SNS 메시지를 전송하는 CloudWatch 경보를 만들 수 있습니다. 경보는 지정한 기간에 단일 지표를 감시하고 여러 기간에 지정된 임곗값에 대한 지표 값을 기준으로 작업을 하나 이상 수행합니다. 이 작업은 Amazon SNS 주제 또는 Auto Scaling 정책으로 전송되는 알림입니다. 경보는 지속적인 상태 변경에 대해서만 작업을 호출합니다. CloudWatch 경보는 특정 상태에 있다는 이유만으로는 작업을 호출하지 않습니다. 상태가 변경되고 지정한 기간 동안 유지되어야 합니다.