

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

# 환경에 대한 Amazon CloudWatch 사용자 지정 측정치 게시
<a name="health-enhanced-cloudwatch"></a>

 AWS Elastic Beanstalk 향상된 상태 보고로 수집된 데이터를 사용자 지정 지표로 Amazon CloudWatch에 게시할 수 있습니다. 측정치를 CloudWatch에 게시하면 시간 경과에 따른 애플리케이션 성능의 변경 사항을 모니터링하고 리소스 사용량 및 요청 지연 시간이 로드와 조정되는 방식을 추적하여 잠재적 문재를 식별할 수 있습니다.

측정치를 CloudWatch에 게시하면 [모니터링 그래프](environment-health-console.md#environment-health-console-graphs) 및 [경보](using-features.alarms.md)에도 해당 측정치를 사용할 수 있습니다. 무료 측정치인 *EnvironmentHealth*는 확장 상태 보고를 사용할 때 자동으로 활성화됩니다. *EnvironmentHealth*를 제외한 다른 사용자 지정 측정치에 대해서는 표준 [CloudWatch 요금](https://aws.amazon.com/cloudwatch/pricing/)이 발생합니다.

환경에 대한 CloudWatch 사용자 지정 측정치를 게시하려면 먼저 환경에서 확장 상태 보고를 활성화해야 합니다. 자세한 내용은 [Elastic Beanstalk 확장 상태 보고 활성화](health-enhanced-enable.md) 섹션을 참조하세요.

**Topics**
+ [향상된 상태 보고 지표](#health-enhanced-cloudwatch-metrics)
+ [Elastic Beanstalk 콘솔을 사용하여 CloudWatch 측정치 구성](#health-enhanced-cloudwatch-console)
+ [EB CLI를 사용하여 CloudWatch 사용자 지정 측정치 구성](#health-enhanced-cloudwatch-ebcli)
+ [사용자 지정 지표 구성 문서 제공](#health-enhanced-cloudwatch-configdocument)

## 향상된 상태 보고 지표
<a name="health-enhanced-cloudwatch-metrics"></a>

환경에서 확장 상태 보고를 활성화한 경우 확장 상태 보고 시스템에서 [CloudWatch 사용자 지정 측정치](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/publishingMetrics.html)인 *EnvironmentHealth* 하나가 자동으로 게시됩니다. 추가 측정치를 CloudWatch에 게시하려면 [Elastic Beanstalk 콘솔](#health-enhanced-cloudwatch-console), [EB CLI](#health-enhanced-cloudwatch-ebcli) 또는 [.ebextensions](command-options.md)를 사용하여 해당 측정치로 환경을 구성합니다.

해당 환경의 다음과 같은 확장 상태 측정치를 CloudWatch에 게시할 수 있습니다.사용 가능한 측정치 - 모든 플랫폼

`EnvironmentHealth`  
*환경만 해당됩니다. * 이 항목은 추가 측정치를 구성하지 않는 한 확장 상태 보고 시스템은 CloudWatch 측정치만 게시합니다. 환경 상태는 7개의 [상태](health-enhanced-status.md) 중 하나로 표시됩니다. CloudWatch 콘솔에서 이러한 상태는 다음 값에 매핑됩니다.  
+ 0 - 정상(OK)
+ 1 - 정보(Info)
+ 5 - 알 수 없음(Unknown)
+ 10 - 데이터 없음(No data)
+ 15 - 경고(Warning)
+ 20 - 성능 저하됨(Degraded)
+ 25 - 심각(Severe)

`InstancesSevere``InstancesDegraded``InstancesWarning``InstancesInfo``InstancesOk``InstancesPending``InstancesUnknown``InstancesNoData`  
*환경만 해당됩니다. * 이 측정치는 환경에 있는 각 상태의 인스턴스 수를 표시합니다. `InstancesNoData`는 데이터를 수신할 수 없는 인스턴스 수를 나타냅니다.

`ApplicationRequestsTotal``ApplicationRequests5xx``ApplicationRequests4xx``ApplicationRequests3xx``ApplicationRequests2xx`  
*인스턴스와 환경이 해당됩니다. * 인스턴스 또는 환경에서 완료된 총 요청 수와 각 상태 코드 범주에서 완료된 요청 수를 나타냅니다.

`ApplicationLatencyP10``ApplicationLatencyP50``ApplicationLatencyP75``ApplicationLatencyP85``ApplicationLatencyP90``ApplicationLatencyP95``ApplicationLatencyP99``ApplicationLatencyP99.9`  
*인스턴스와 환경이 해당됩니다. * 요청의 가장 빠른 *x*%를 완료하는 데 걸리는 평균 시간(초)을 나타냅니다.

`InstanceHealth`  
*인스턴스만 해당됩니다. * 인스턴스의 현재 상태를 나타냅니다. 인스턴스 상태는 7개의 [상태](health-enhanced-status.md) 중 하나로 표시됩니다. CloudWatch 콘솔에서 이러한 상태는 다음 값에 매핑됩니다.  
+ 0 - 정상(OK)
+ 1 - 정보(Info)
+ 5 - 알 수 없음(Unknown)
+ 10 - 데이터 없음(No data)
+ 15 - 경고(Warning)
+ 20 - 성능 저하됨(Degraded)
+ 25 - 심각(Severe)사용 가능한 측정치 - Linux

`CPUIrq``CPUIdle``CPUUser``CPUSystem``CPUSoftirq``CPUIowait``CPUNice`  
*인스턴스만 해당됩니다. * 마지막 1분 동안 각 상태에서 CPU가 소비한 시간의 비율을 나타냅니다.

`LoadAverage1min`  
*인스턴스만 해당됩니다. * 마지막 1분 동안 인스턴스의 평균 CPU 부하입니다.

`RootFilesystemUtil`  
*인스턴스만 해당됩니다. * 사용 중인 디스크 공간의 비율을 나타냅니다.사용 가능한 측정치 - Windows

`CPUIdle``CPUUser``CPUPrivileged`  
인스턴스만 해당됩니다. 마지막 1분 동안 각 상태에서 CPU가 소비한 시간의 비율을 나타냅니다.

## Elastic Beanstalk 콘솔을 사용하여 CloudWatch 측정치 구성
<a name="health-enhanced-cloudwatch-console"></a>

Elastic Beanstalk 콘솔을 사용하여 확장 상태 보고 측정치를 CloudWatch에 게시하고 모니터링 그래프 및 경보에 측정치를 사용할 수 있도록 환경을 구성할 수 있습니다.

**Elastic Beanstalk 콘솔에서 CloudWatch 사용자 지정 측정치를 구성하려면**

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

1. 탐색 창에서 **환경**을 선택한 다음 목록에서 환경의 이름을 선택합니다.

1. 탐색 창에서 **구성**을 선택합니다.

1. [**모니터링**] 구성 범주에서 [**편집**]을 선택합니다.

1. **상태 보고**에서 CloudWatch에 게시할 인스턴스 및 환경 측정치를 선택합니다. 여러 측정치를 선택하려면 **Ctrl** 키를 누른 채 선택합니다.

1. 변경 사항을 저장하려면 페이지 하단에서 **적용**을 선택합니다.

CloudWatch 사용자 지정 측정치를 활성화하면 해당 측정치가 [**모니터링(Monitoring)** 페이지](environment-health-console.md)에서 사용 가능한 측정치 목록에 추가됩니다.

## EB CLI를 사용하여 CloudWatch 사용자 지정 측정치 구성
<a name="health-enhanced-cloudwatch-ebcli"></a>

EB CLI에서 환경 구성을 로컬로 저장하고, 게시할 측정치를 정의하는 항목을 추가한 다음 구성을 Elastic Beanstalk에 업로드하여 사용자 지정 측정치를 구성할 수 있습니다. 생성 중 또는 생성 후 저장된 구성을 환경에 적용할 수 있습니다.

**EB CLI 및 저장된 구성을 사용하여 CloudWatch 사용자 지정 측정치를 구성하려면**

1. [**eb init**](eb-cli3-configuration.md)를 사용하여 프로젝트 폴더를 초기화합니다.

1. **eb create** 명령을 실행하여 환경을 생성합니다.

1. **eb config save** 명령을 실행하여 구성 템플릿을 로컬로 저장합니다. 다음 예제에서는 `--cfg` 옵션을 사용하여 구성의 이름을 지정합니다.

   ```
   $ eb config save --cfg {{01-base-state}}
   Configuration saved at: ~/project/.elasticbeanstalk/saved_configs/01-base-state.cfg.yml
   ```

1. 텍스트 편집기에서 저장된 구성 파일을 엽니다.

1. `OptionSettings` > `aws:elasticbeanstalk:healthreporting:system:` 아래에 `ConfigDocument` 키를 추가하여 원하는 각 CloudWatch 측정치를 활성화합니다. 예를 들어, 다음 `ConfigDocument`는 환경 레벨에서 `ApplicationRequests5xx` 및 `ApplicationRequests4xx` 측정치를 게시하고 인스턴스 레벨에서 `ApplicationRequestsTotal` 측정치를 게시합니다.

   ```
   OptionSettings:
     ...
     aws:elasticbeanstalk:healthreporting:system:
       ConfigDocument:
         CloudWatchMetrics:
           Environment:
             ApplicationRequests5xx: 60
             ApplicationRequests4xx: 60
           Instance:
             ApplicationRequestsTotal: 60
         Version: 1
       SystemType: enhanced
   ...
   ```

   예제에서 60은 측정 간의 시간(초)를 나타냅니다. 현재 이 값은 지원되는 유일한 값입니다.
**참고**  
`CloudWatchMetrics`와 `Rules`를 동일한 `ConfigDocument` 옵션 설정에 결합할 수 있습니다. `Rules`는 [환경에 대해 향상된 상태 규칙 구성](health-enhanced-rules.md)를 참조하세요.  
이전에 `Rules`를 사용하여 강화된 상태 규칙을 구성한 경우 **eb config save** 명령을 사용하여 검색하는 구성 파일에 이미 `ConfigDocument` 섹션을 포함하는 `Rules` 키가 있습니다. *이것을 삭제하지 마세요*. 동일한 `ConfigDocument` 옵션 값에 `CloudWatchMetrics` 섹션을 추가합니다.

1. 구성 파일을 저장하고 텍스트 편집기를 닫습니다. 이 예에서 업데이트된 구성 파일은 다운로드된 구성 파일과 다른 이름(`02-cloudwatch-enabled.cfg.yml`)으로 저장됩니다. 그러면 파일을 업로드할 때 별도의 저장된 구성이 생성됩니다. 새로운 구성을 생성하지 않고 다운로드한 파일과 동일한 이름을 사용하여 기존 구성을 덮어쓸 수 있습니다.

1. **eb config put** 명령을 사용하여 업데이트된 구성 파일을 Elastic Beanstalk에 업로드합니다.

   ```
   $ eb config put {{02-cloudwatch-enabled}}
   ```

   저장된 구성과 함께 **eb config** `get` 및 `put` 명령을 사용할 때 파일 확장명을 포함하지 마십시오.

1. 저장된 구성을 실행 중인 환경에 적용합니다.

   ```
   $ eb config --cfg {{02-cloudwatch-enabled}}
   ```

   `--cfg` 옵션은 환경에 적용되는 명명된 구성 파일을 지정합니다. 구성 파일을 로컬에 또는 Elastic Beanstalk에 저장할 수 있습니다. 지정된 이름의 구성 파일이 두 위치에 모두 있으면 EB CLI는 로컬 파일을 사용합니다.

## 사용자 지정 지표 구성 문서 제공
<a name="health-enhanced-cloudwatch-configdocument"></a>

Amazon CloudWatch의 사용자 지정 측정치에 대한 구성(config) 문서는 환경 및 인스턴스 수준에서 게시할 측정치를 나열하는 JSON 문서입니다. 다음 예에서는 Linux에서 사용 가능한 모든 사용자 지정 측정치를 활성화하는 구성 문서를 보여줍니다.

```
{
  "CloudWatchMetrics": {
    "Environment": {
      "ApplicationLatencyP99.9": 60,
      "InstancesSevere": 60,
      "ApplicationLatencyP90": 60,
      "ApplicationLatencyP99": 60,
      "ApplicationLatencyP95": 60,
      "InstancesUnknown": 60,
      "ApplicationLatencyP85": 60,
      "InstancesInfo": 60,
      "ApplicationRequests2xx": 60,
      "InstancesDegraded": 60,
      "InstancesWarning": 60,
      "ApplicationLatencyP50": 60,
      "ApplicationRequestsTotal": 60,
      "InstancesNoData": 60,
      "InstancesPending": 60,
      "ApplicationLatencyP10": 60,
      "ApplicationRequests5xx": 60,
      "ApplicationLatencyP75": 60,
      "InstancesOk": 60,
      "ApplicationRequests3xx": 60,
      "ApplicationRequests4xx": 60
    },
    "Instance": {
      "ApplicationLatencyP99.9": 60,
      "ApplicationLatencyP90": 60,
      "ApplicationLatencyP99": 60,
      "ApplicationLatencyP95": 60,
      "ApplicationLatencyP85": 60,
      "CPUUser": 60,
      "ApplicationRequests2xx": 60,
      "CPUIdle": 60,
      "ApplicationLatencyP50": 60,
      "ApplicationRequestsTotal": 60,
      "RootFilesystemUtil": 60,
      "LoadAverage1min": 60,
      "CPUIrq": 60,
      "CPUNice": 60,
      "CPUIowait": 60,
      "ApplicationLatencyP10": 60,
      "LoadAverage5min": 60,
      "ApplicationRequests5xx": 60,
      "ApplicationLatencyP75": 60,
      "CPUSystem": 60,
      "ApplicationRequests3xx": 60,
      "ApplicationRequests4xx": 60,
      "InstanceHealth": 60,
      "CPUSoftirq": 60
    }
  },
  "Version": 1
}
```

의 경우 문서를 JSON 객체인 옵션 설정 인수의 `Value` 키 값으로 AWS CLI전달합니다. 이 경우 포함된 문서에서 따옴표를 이스케이프 처리해야 합니다.

```
$ aws elasticbeanstalk validate-configuration-settings --application-name my-app --environment-name my-env --option-settings '[
    {
        "Namespace": "aws:elasticbeanstalk:healthreporting:system",
        "OptionName": "ConfigDocument",
        "Value": "{\"CloudWatchMetrics\": {\"Environment\": {\"ApplicationLatencyP99.9\": 60,\"InstancesSevere\": 60,\"ApplicationLatencyP90\": 60,\"ApplicationLatencyP99\": 60,\"ApplicationLatencyP95\": 60,\"InstancesUnknown\": 60,\"ApplicationLatencyP85\": 60,\"InstancesInfo\": 60,\"ApplicationRequests2xx\": 60,\"InstancesDegraded\": 60,\"InstancesWarning\": 60,\"ApplicationLatencyP50\": 60,\"ApplicationRequestsTotal\": 60,\"InstancesNoData\": 60,\"InstancesPending\": 60,\"ApplicationLatencyP10\": 60,\"ApplicationRequests5xx\": 60,\"ApplicationLatencyP75\": 60,\"InstancesOk\": 60,\"ApplicationRequests3xx\": 60,\"ApplicationRequests4xx\": 60},\"Instance\": {\"ApplicationLatencyP99.9\": 60,\"ApplicationLatencyP90\": 60,\"ApplicationLatencyP99\": 60,\"ApplicationLatencyP95\": 60,\"ApplicationLatencyP85\": 60,\"CPUUser\": 60,\"ApplicationRequests2xx\": 60,\"CPUIdle\": 60,\"ApplicationLatencyP50\": 60,\"ApplicationRequestsTotal\": 60,\"RootFilesystemUtil\": 60,\"LoadAverage1min\": 60,\"CPUIrq\": 60,\"CPUNice\": 60,\"CPUIowait\": 60,\"ApplicationLatencyP10\": 60,\"LoadAverage5min\": 60,\"ApplicationRequests5xx\": 60,\"ApplicationLatencyP75\": 60,\"CPUSystem\": 60,\"ApplicationRequests3xx\": 60,\"ApplicationRequests4xx\": 60,\"InstanceHealth\": 60,\"CPUSoftirq\": 60}},\"Version\": 1}"
    }
]'
```

YAML로 작성된 `.ebextensions` 구성 파일의 경우 JSON 문서를 있는 그대로 제공할 수 있습니다.

```
  option_settings:
    - namespace: aws:elasticbeanstalk:healthreporting:system
      option_name: ConfigDocument
      value: {
  "CloudWatchMetrics": {
    "Environment": {
      "ApplicationLatencyP99.9": 60,
      "InstancesSevere": 60,
      "ApplicationLatencyP90": 60,
      "ApplicationLatencyP99": 60,
      "ApplicationLatencyP95": 60,
      "InstancesUnknown": 60,
      "ApplicationLatencyP85": 60,
      "InstancesInfo": 60,
      "ApplicationRequests2xx": 60,
      "InstancesDegraded": 60,
      "InstancesWarning": 60,
      "ApplicationLatencyP50": 60,
      "ApplicationRequestsTotal": 60,
      "InstancesNoData": 60,
      "InstancesPending": 60,
      "ApplicationLatencyP10": 60,
      "ApplicationRequests5xx": 60,
      "ApplicationLatencyP75": 60,
      "InstancesOk": 60,
      "ApplicationRequests3xx": 60,
      "ApplicationRequests4xx": 60
    },
    "Instance": {
      "ApplicationLatencyP99.9": 60,
      "ApplicationLatencyP90": 60,
      "ApplicationLatencyP99": 60,
      "ApplicationLatencyP95": 60,
      "ApplicationLatencyP85": 60,
      "CPUUser": 60,
      "ApplicationRequests2xx": 60,
      "CPUIdle": 60,
      "ApplicationLatencyP50": 60,
      "ApplicationRequestsTotal": 60,
      "RootFilesystemUtil": 60,
      "LoadAverage1min": 60,
      "CPUIrq": 60,
      "CPUNice": 60,
      "CPUIowait": 60,
      "ApplicationLatencyP10": 60,
      "LoadAverage5min": 60,
      "ApplicationRequests5xx": 60,
      "ApplicationLatencyP75": 60,
      "CPUSystem": 60,
      "ApplicationRequests3xx": 60,
      "ApplicationRequests4xx": 60,
      "InstanceHealth": 60,
      "CPUSoftirq": 60
    }
  },
  "Version": 1
}
```