

# Amazon CloudWatch 자습서
<a name="CloudWatch-tutorials"></a>

 다음 시나리오에서는 Amazon CloudWatch 사용 방법을 보여 줍니다. 첫 번째 시나리오에서는 CloudWatch 콘솔을 사용하여 AWS 사용량을 추적하고 특정 지출 임계값을 초과했을 때 이를 알려 주는 결제 경보를 생성합니다. 두 번째 시나리오에서는 AWS Command Line Interface(AWS CLI)를 사용하여 *GetStarted*라는 가상의 애플리케이션을 위한 단일 지표를 게시합니다.

**시나리오**
+ [예상 요금 모니터링](gs_monitor_estimated_charges_with_cloudwatch.md)
+ [지표 게시](PublishMetrics.md)

# 시나리오: CloudWatch를 사용하여 예상 요금 모니터링
<a name="gs_monitor_estimated_charges_with_cloudwatch"></a>

이 시나리오에서는 예상 요금을 모니터링하기 위한 Amazon CloudWatch 경보를 생성합니다. AWS 계정에 대한 예상 요금 모니터링을 사용 설정하면 예상 요금이 계산되어 지표 데이터로서 매일 여러 번 CloudWatch에 전송됩니다.

결제 지표 데이터는 미국 동부(버지니아 북부) 리전에 저장되며 전 세계 요금을 반영합니다. 이 데이터에는 사용한 AWS의 모든 서비스에 대한 예상 요금과 전반적인 총 AWS 예상 요금이 들어 있습니다.

요금이 특정 임계값을 초과한 경우 이메일로 알림을 받도록 선택할 수 있습니다. 이러한 알림은 CloudWatch에 의해 트리거되며, 메시지는 Amazon Simple Notification Service(Amazon SNS)를 사용하여 전송됩니다.

**참고**  
이미 청구된 CloudWatch 요금을 분석하는 방법은 [CloudWatch 비용 분석, 최적화 및 절감](cloudwatch_billing.md) 섹션을 참조하세요.

**Topics**
+ [1단계: 결제 알림 사용](#gs_turning_on_billing_metrics)
+ [2단계: 결제 알림 생성](#gs_creating_billing_alarm)
+ [3단계: 알림 상태 확인](#gs_checking_billing_alarm)
+ [4단계: 결제 알림 편집](#gs_editing_billing_alarm)
+ [5단계: 결제 알림 삭제](#gs_deleting_billing_alarm)

## 1단계: 결제 알림 사용
<a name="gs_turning_on_billing_metrics"></a>

예상 요금에 대한 경보를 생성할 수 있으려면 먼저 결제 알림을 활성화해야 합니다. 그래야만 예상되는 AWS 요금을 모니터링하고 결제 지표 데이터를 사용하여 경보를 생성할 수 있습니다. 결제 알림을 활성화한 후에는 데이터 수집을 비활성화할 수 없지만, 생성된 결제 알림은 무엇이든 삭제할 수 있습니다.

결제 알림을 처음 활성화하고 나서 결제 데이터를 확인하고 결제 경보를 설정할 수 있기까지 약 15분 정도의 시간이 걸립니다.

**요구 사항**
+ 루트 사용자 보안 인증 정보를 사용하여 로그인하거나 청구 정보를 볼 수 있는 권한이 부여된 사용자로 로그인해야 합니다.
+ 통합 결제 계정의 경우 결제 계정으로 로그인하면 연결된 각 계정에 대한 결제 데이터를 찾을 수 있습니다. 통합 계정에 대해서뿐만 아니라 연결된 각 계정에 대한 서비스별 총 예상 요금 및 예상 요금에 대한 결제 데이터를 볼 수 있습니다.
+ 통합 결제 계정에서 멤버에 연결된 계정 지표는 지급인 계정이 **결제 알림 받기** 기본 설정을 사용하도록 설정한 경우에만 캡처됩니다. 관리/지급인 계정인 계정을 변경하는 경우 새 관리/지급인 계정에서 결제 알림을 사용해야 합니다.
+ APN 계정에 대한 결제 지표는 CloudWatch에 게시되지 않으므로 계정이 Amazon 파트너 네트워크(APN)에 속하지 않아야 합니다. 자세한 내용은 [AWS 파트너 네트워크](https://aws.amazon.com/partners/)를 참조하세요.

**예상 요금 모니터링을 활성화하려면**

1. [https://console.aws.amazon.com/costmanagement/](https://console.aws.amazon.com/costmanagement/)에서 AWS 결제 및 비용 관리 콘솔을 엽니다.

1. 탐색 창에서 **결제 기본 설정(Billing preferences)**을 선택합니다.

1. **알림 환경 설정**에서 **편집**을 선택합니다.

1. **CloudWatch 결제 알림 수신**을 선택합니다.

1. **기본 설정 저장**을 선택합니다.

## 2단계: 결제 알림 생성
<a name="gs_creating_billing_alarm"></a>

**중요**  
 결제 경보를 생성하기 전에 Region(리전)을 US East (N. Virginia)(미국 동부(버지니아 북부))로 설정해야 합니다. 결제 지표 데이터는 이 리전에 저장되어 전 세계 요금을 나타냅니다. 또한 계정 또는 관리/지급인 계정(통합 결제를 사용하는 경우)에 대한 결제 알림을 활성화해야 합니다. 자세한 내용을 알아보려면 [1단계: 결제 알림 활성화](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/gs_monitor_estimated_charges_with_cloudwatch.html#gs_turning_on_billing_metrics)를 참조하세요.

 이 절차에서는 AWS에 대한 예상 요금이 정의된 임계값을 초과할 때 알림을 보내는 경보를 생성합니다.

**CloudWatch 콘솔을 사용하여 결제 경보를 생성하려면**

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

1.  탐색 창에서 **경보(Alarms)**를 선택한 다음 **모든 경보(All alarms)**를 선택합니다.

1.  **경보 생성**을 선택하세요.

1.  **지표 선택**을 선택합니다. **찾아보기** 탭에서 **결제**를 선택한 다음 **예상 요금 합계**를 선택하세요.
**참고**  
 **결제**/**예상 요금 합계** 지표가 표시되지 않으면 결제 알림을 활성화하고 리전을 미국 동부(버지니아 북부)로 변경합니다. 자세한 내용은 [결제 알림 사용 설정](monitor_estimated_charges_with_cloudwatch.md#turning_on_billing_metrics) 섹션을 참조하세요.

1.  **EstimatedCharges** 지표 확인란을 선택한 다음 **지표 선택**을 선택하세요.

1. **통계**에서 **최대**를 선택합니다.

1. **Period**(기간)에서 **6 hours**(6시간)를 선택합니다.

1.  **임곗값 유형**에서 **정적**을 선택합니다.

1.  **Whenever EstimatedCharges is . . .**(EstimatedCharges가 다음인 경우 항상…)에서 **Greater**(보다 큼)를 선택합니다.

1.  **. . . 보다**에 대해 경보를 트리거하려는 값을 정의합니다. 예를 들어 USD **200**달러입니다.

   **EstimatedCharges** 지표 값은 미국 달러(USD)로만 표시되며, 통화 변환은 Amazon Services LLC에서 제공합니다. 자세한 내용은 [AWS Billing란 무엇인가요?](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/billing-what-is.html)를 참조하세요.

1. **추가 구성**을 선택하고 다음을 수행합니다.
   + **Datapoints to alarm**(경보를 보낼 데이터 포인트)에서 **1 out of 1**(1/1)을 지정합니다.
   + **Missing data treatment**(누락된 데이터 처리)에서 **Treat missing data as missing**(누락된 데이터를 누락으로 처리)을 선택합니다.

1.  **다음**을 선택합니다.

1.  **알림**에서 **경보 내**가 선택되어 있는지 확인하세요. 그런 다음 경보가 `ALARM` 상태일 때 알림을 받을 Amazon SNS 주제를 지정합니다. Amazon SNS 주제에 이메일 주소를 포함하면 청구 금액이 지정한 임곗값을 초과할 때 이메일을 받을 수 있습니다.

   기존 Amazon SNS 주제를 선택하거나, 새 Amazon SNS 주제를 생성하거나, 주제 ARN을 사용하여 다른 계정에 알릴 수 있습니다. 경보가 동일한 경보 상태 또는 다른 경보 상태에 대해 여러 개의 알림을 전송하도록 하려면 **Add notification**(알림 추가)을 선택합니다.

1.  **다음**을 선택합니다.

1.  **Name and description**(이름 및 설명)에 경보 이름을 입력합니다.

   1.  (선택 사항) 경보에 대한 설명을 입력합니다.

1. **다음**을 선택합니다.

1.  **Preview and create**(미리 보기 및 생성)에서 구성이 올바른지 확인한 다음 **Create alarm**(경보 생성)을 선택합니다.

## 3단계: 알림 상태 확인
<a name="gs_checking_billing_alarm"></a>

이제, 방금 만든 결제 경보의 상태를 확인합니다.

**경보 상태를 확인하려면**

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

1. 필요한 경우 리전을 미국 동부(버지니아 북부)로 변경합니다. 결제 지표 데이터는 이 리전에 저장되며 전 세계 요금을 반영합니다.

1. 탐색 창에서 **Alarms**, **All alarms**를 선택합니다.

1. 테이블에서 새 경보에 대한 행을 찾으세요. 구독이 확인되기 전까지 "확인 보류 중"으로 표시가 됩니다. 구독 확인 후에 콘솔을 새로 고쳐 업데이트된 상태를 보여줍니다.

## 4단계: 결제 알림 편집
<a name="gs_editing_billing_alarm"></a>

예를 들어 매월 AWS에 사용하는 금액을 200 USD에서 400 USD로 늘리고 싶은 경우 기존 결제 경보를 편집하여 경보 트리거 전에 초과해야 하는 금액을 늘릴 수 있습니다.

**결제 경보를 편집하려면**

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

1. 필요한 경우 리전을 미국 동부(버지니아 북부)로 변경합니다. 결제 지표 데이터는 이 리전에 저장되며 전 세계 요금을 반영합니다.

1. 탐색 창에서 **Alarms**, **All alarms**를 선택합니다.

1. 경보 옆의 확인란을 선택하고 **작업**, **편집**을 차례로 선택하세요.

1. **비교 대상...**에서 경보를 트리거하고 이메일 알림을 전송하기 위해 초과해야 하는 새 크기를 지정하세요.

1. **변경 사항 저장(Save Changes)**을 선택합니다.

## 5단계: 결제 알림 삭제
<a name="gs_deleting_billing_alarm"></a>

결제 경보가 더 이상 필요 없는 경우 해당 경보를 삭제할 수 있습니다.

**결제 경보를 삭제하려면**

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

1. 필요한 경우 리전을 미국 동부(버지니아 북부)로 변경합니다. 결제 지표 데이터는 이 리전에 저장되며 전 세계 요금을 반영합니다.

1. 탐색 창에서 **Alarms**, **All alarms**를 선택합니다.

1. 경보 옆의 확인란을 선택하고 **작업**, **삭제**를 차례로 선택하세요.

1. 확인 메시지가 나타나면 **예, 삭제합니다(Yes, Delete)**를 선택합니다.

# 시나리오: CloudWatch에 지표 게시
<a name="PublishMetrics"></a>

이 시나리오에서는 AWS Command Line Interface(AWS CLI)를 사용하여 *GetStarted*라는 가상의 애플리케이션을 위한 단일 지표를 게시합니다. AWS CLI를 아직 설치 및 구성하지 않은 경우 *AWS Command Line Interface 사용 설명서*의 [AWS Command Line Interface 설정](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html) 단원을 참조하세요.

**Topics**
+ [1단계: 데이터 구성 정의](#define-data-domain)
+ [2단계: CloudWatch에 지표 추가](#add-metrics-to-scenario)
+ [3단계: CloudWatch에서 통계 가져오기](#GetStatistics)
+ [4단계: 콘솔을 사용하여 그래프 보기](#ViewGraphs)

## 1단계: 데이터 구성 정의
<a name="define-data-domain"></a>

이 시나리오에서는 애플리케이션의 요청 지연 시간을 추적하는 데이터 요소를 게시합니다. 적절한 지표 및 네임스페이스의 이름을 선택합니다. 예를 들어 지표의 이름을 *RequestLatency*로 지정하고 모든 데이터 요소를 *GetStarted* 네임스페이스에 배치합니다.

3시간의 지연 시간 데이터를 총체적으로 나타내는 여러 데이터 요소를 게시합니다. 원시 데이터는 3시간에 걸쳐 분산된 요청 지연 시간 판독값 15개로 구성됩니다. 각 판독값은 다음과 같이 밀리초 단위입니다.
+ 시간 1: 87, 51, 125, 235
+ 시간 2: 121, 113, 189, 65, 89
+ 시간 3: 100, 47, 133, 98, 100, 328

데이터를 단일 데이터 요소 또는 **‘통계 집합’이라고 하는 집계된 데이터 요소 집합으로 CloudWatch에 게시할 수 있습니다. 지표를 1분 정도로 낮게 세분화하여 집계할 수 있습니다. 집계된 데이터 요소를 미리 정의된 4개의 키(`Sum`, `Minimum`, `Maximum`, `SampleCount`)가 있는 통계 집합으로 CloudWatch에 게시할 수 있습니다.

시간 1의 데이터 요소를 단일 데이터 요소로 게시합니다. 시간 2 및 시간 3의 데이터의 경우 데이터 요소를 집계하여 각 시간에 대한 통계 세트를 게시합니다. 키 값은 다음 표에 표시됩니다.


| 시간 | 원시 데이터 | 합계 | 최소 | 최대 | SampleCount | 
| --- | --- | --- | --- | --- | --- | 
| `1` | `87` |  |  |  |  | 
| `1` | `51` |  |  |  |  | 
| `1` | `125` |  |  |  |  | 
| `1` | `235` |  |  |  |  | 
| `2` | `121, 113, 189, 65, 89` | `577` | `65` | `189` | `5` | 
| `3` | `100, 47, 133, 98, 100, 328` | `806` | `47` | `328` | `6` | 

## 2단계: CloudWatch에 지표 추가
<a name="add-metrics-to-scenario"></a>

데이터 구성을 정의하면 데이터 추가를 시작할 준비가 된 것입니다.

**CloudWatch에 데이터 요소를 게시하려면**

1. 명령 프롬프트에서 [put-metric-data](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/put-metric-data.html) 명령을 실행하여 첫 번째 시간에 대한 데이터를 추가합니다. 예제 타임스탬프를 UTC 기준으로 2시간 전인 타임스탬프로 변경합니다.

   ```
   aws cloudwatch put-metric-data --metric-name RequestLatency --namespace GetStarted \
   --timestamp 2016-10-14T20:30:00Z --value 87 --unit Milliseconds
   aws cloudwatch put-metric-data --metric-name RequestLatency --namespace GetStarted \
   --timestamp 2016-10-14T20:30:00Z --value 51 --unit Milliseconds
   aws cloudwatch put-metric-data --metric-name RequestLatency --namespace GetStarted \
   --timestamp 2016-10-14T20:30:00Z --value 125 --unit Milliseconds
   aws cloudwatch put-metric-data --metric-name RequestLatency --namespace GetStarted \
   --timestamp 2016-10-14T20:30:00Z --value 235 --unit Milliseconds
   ```

1. 첫 번째 시간보다 1시간 늦은 타임스탬프를 사용하여 두 번째 시간에 대한 데이터를 추가합니다.

   ```
   aws cloudwatch put-metric-data --metric-name RequestLatency --namespace GetStarted \
   --timestamp 2016-10-14T21:30:00Z --statistic-values Sum=577,Minimum=65,Maximum=189,SampleCount=5 --unit Milliseconds
   ```

1. 현재 시간에 대한 기본값에 대한 타임스탬프를 생략하고 세 번째 시간에 대한 데이터를 추가합니다.

   ```
   aws cloudwatch put-metric-data --metric-name RequestLatency --namespace GetStarted \
   --statistic-values Sum=806,Minimum=47,Maximum=328,SampleCount=6 --unit Milliseconds
   ```

## 3단계: CloudWatch에서 통계 가져오기
<a name="GetStatistics"></a>

CloudWatch에 지표를 게시했으므로 이제 다음과 같이 [get-metric-statistics](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/get-metric-statistics.html) 명령을 사용하여 해당 지표를 기반으로 통계를 검색할 수 있습니다. 게시한 가장 빠른 타임스탬프를 포함하도록 지난 시간에서 `--start-time` 및 `--end-time`을 충분히 여유 있게 지정해야 합니다.

```
aws cloudwatch get-metric-statistics --namespace GetStarted --metric-name RequestLatency --statistics Average \
--start-time 2016-10-14T00:00:00Z --end-time 2016-10-15T00:00:00Z --period 60
```

다음은 예제 출력입니다.

```
{
	"Datapoints": [],
	"Label": "Request:Latency"
}
```

## 4단계: 콘솔을 사용하여 그래프 보기
<a name="ViewGraphs"></a>

CloudWatch에 지표를 게시했다면 CloudWatch 콘솔을 사용하여 통계 그래프를 볼 수 있습니다.

**콘솔에서 통계 그래프를 보려면**

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

1. **탐색** 창에서 **지표**를 선택하세요.

1. **모든 지표** 탭의 검색 상자에**RequestLatency**를 입력하고 Enter 키를 누릅니다.

1. **RequestLatency** 지표에 대한 확인란을 선택합니다. 지표 데이터의 그래프가 위쪽 창에 표시됩니다.

자세한 내용은 [지표 그래프 작성](graph_metrics.md) 단원을 참조하세요.