

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

# Elastic Beanstalk의 향상된 상태 보고 및 모니터링
<a name="health-enhanced"></a>

이 섹션에서는 Elastic Beanstalk Enhanced Health 기능의 여러 기능을 설명합니다.

향상된 상태 보고는가 환경의 리소스에 대한 추가 정보를 AWS Elastic Beanstalk 수집할 수 있도록 환경에서 활성화할 수 있는 기능입니다. Elastic Beanstalk는 수집된 정보를 분석하여 전반적인 환경 상태를 잘 파악하고 애플리케이션에 문제를 일으키는 원인을 확인합니다.

상태 색상이 작동되는 방식이 변경된 것 외에도 확장 상태는 *상태* 서술자를 통해 환경이 노란색이나 빨간색일 때 문제의 심각도를 나타냅니다. 현재 상태에 대한 자세한 내용을 보려면 [상태 페이지](health-enhanced-console.md)에서 **원인** 버튼을 선택하여 자세한 상태 정보를 확인할 수 있습니다.

환경에서 실행 중인 Amazon EC2 인스턴스에 대한 자세한 상태 정보를 제공하기 위해 Elastic Beanstalk에는 확장 상태를 지원하는 각 플랫폼 버전에 대한 Amazon Machine Image(AMI)의 [상태 확인 에이전트](#health-enhanced-agent)가 포함됩니다. 상태 확인 에이전트는 모니터링한 웹 서버 로그와 시스템 측정치를 Elastic Beanstalk 서비스로 전달합니다. Elastic Beanstalk는 이러한 측정치와 Elastic Load Balancing 및 Amazon EC2 Auto Scaling의 데이터를 분석하여 전반적인 환경 상태를 파악합니다.

Elastic Beanstalk는 환경 리소스에 대한 정보를 수집하고 제공하는 것 외에도, 다양한 오류 조건에 대한 환경 리소스를 모니터링하고 알림을 통해 오류를 피하고 구성 문제를 해결합니다. [환경 상태에 영향을 주는 요소](#health-enhanced-factors)로는 애플리케이션에서 처리된 각 요청 결과, 인스턴스 운영 체제의 측정치, 가장 최근의 배포 상태 등이 있습니다.

Elastic Beanstalk 콘솔의 [환경 개요](health-enhanced-console.md) 페이지 또는 [Elastic Beanstalk 명령줄 인터페이스](eb-cli3.md)(EB CLI)의 [eb 상태](health-enhanced-ebcli.md) 명령을 사용하여 실시간으로 상태를 확인할 수 있습니다. 사용자 지정 측정치에 따라 Elastic Beanstalk에서 수집한 확장 상태 보고에 대한 정보를 Amazon CloudWatch에 게시하도록 환경을 구성하여, 환경과 인스턴스 상태를 시간에 따라 기록하고 추적할 수 있습니다. 사용자 지정 측정치에 대한 CloudWatch [요금](https://aws.amazon.com/cloudwatch/pricing/)은 `EnvironmentHealth`를 제외한 모든 측정치에 적용되며 무료입니다.

**Windows 플랫폼 노트**  
Windows Server 환경에 대한 확장 상태 보고를 비활성화할 경우, [IIS 로깅 구성](https://docs.microsoft.com/en-us/iis/manage/provisioning-and-managing-iis/configure-logging-in-iis)을 변경하면 안 됩니다. 확장 상태 모니터링이 올바르게 작동하려면, IIS 로깅이 **W3C** 형식 및 **ETW event only(ETW 이벤트 전용)** 또는 **Both log file and ETW event(로그 파일 및 ETW 이벤트 모두)** 로그 이벤트 대상으로 구성되어야 합니다.  
또한 환경의 모든 인스턴스에서 [Elastic Beanstalk 상태 확인 에이전트](#health-enhanced-agent) Windows 서비스를 비활성화하거나 중지하면 안 됩니다. 인스턴스에서 확장된 상태 정보를 수집해 보고하려면 이 서비스가 활성화되어 실행 중이어야 합니다.

Elastic Beanstalk에서 처음으로 환경을 생성할 때 필요한 역할을 생성하라는 메시지가 표시되고 기본적으로 향상된 상태 보고가 활성화됩니다. 계속해서 확장 상태 보고의 작동법에 대한 자세한 내용을 확인하거나 [Elastic Beanstalk 확장 상태 보고 활성화](health-enhanced-enable.md) 단원을 참조하여 바로 사용해 보세요.

**Topics**
+ [Elastic Beanstalk 상태 확인 에이전트](#health-enhanced-agent)
+ [인스턴스 및 환경 상태를 파악하는 요소](#health-enhanced-factors)
+ [상태 확인 규칙 사용자 지정](#health-enhanced.rules)
+ [향상된 상태 역할](#health-enhanced-roles)
+ [확장된 상태 권한 부여](#health-enhanced-authz)
+ [향상된 상태 이벤트](#health-enhanced-events)
+ [업데이트, 배포 및 조정 중 향상된 상태 보고 행동](#health-enhanced-effects)
+ [Elastic Beanstalk 확장 상태 보고 활성화](health-enhanced-enable.md)
+ [환경 관리 콘솔을 통해 향상된 상태 모니터링](health-enhanced-console.md)
+ [상태 색상 및 상태](health-enhanced-status.md)
+ [인스턴스 지표](health-enhanced-metrics.md)
+ [환경에 대해 향상된 상태 규칙 구성](health-enhanced-rules.md)
+ [환경에 대한 Amazon CloudWatch 사용자 지정 측정치 게시](health-enhanced-cloudwatch.md)
+ [Elastic Beanstalk API로 확장 상태 보고 사용](health-enhanced-api.md)
+ [향상된 상태 로그 형식](health-enhanced-serverlogs.md)
+ [알림 및 문제 해결](environments-health-enhanced-notifications.md)
+ [AI 기반 환경 분석](health-ai-analysis.md)

## Elastic Beanstalk 상태 확인 에이전트
<a name="health-enhanced-agent"></a>

Elastic Beanstalk 상태 확인 에이전트는 환경의 각 Amazon EC2 인스턴스에서 실행되는 데몬 프로세스(또는 Windows 환경에서의 서비스)로, 운영 체제와 애플리케이션 수준의 상태 측정치를 모니터링하고 문제를 Elastic Beanstalk로 보고합니다. 상태 확인 에이전트는 각 플랫폼의 버전 2.0부터 모든 플랫폼 버전에 포함되어 있습니다.

상태 확인 에이전트는 CPU 부하, HTTP 코드, 지연 시간 등 Amazon EC2 Auto Scaling 및 Elastic Load Balancing에서 [기본 상태 보고](using-features.healthstatus.md) 시 [CloudWatch에 게시](using-features.healthstatus.md#monitoring-basic-cloudwatch)하는 것과 비슷한 측정치를 보고합니다. 그러나 상태 확인 에이전트는 기본 상태 보고에 비해 세부 수준 및 빈도를 상세히 표시하여 Elastic Beanstalk로 바로 보고합니다.

기본 상태에서 이 측정치는 5분마다 게시되며 환경 관리 콘솔에 그래프로 모니터링화할 수 있습니다. 확장 상태에서 Elastic Beanstalk 상태 확인 에이전트는 10초마다 Elastic Beanstalk로 측정치를 보고합니다. Elastic Beanstalk는 상태 확인 에이전트에서 제공하는 측정치를 사용하여 각 환경 인스턴스의 상태를 확인하고, 다른 [요소](#health-enhanced-factors)와 결합하여 전반적인 환경 상태를 파악합니다.

전반적인 환경 상태는 Elastic Beanstalk 콘솔의 환경 개요 페이지에서 실시간으로 확인할 수 있으며 Elastic Beanstalk에 의해 60초마다 CloudWatch에 게시됩니다. 상태 확인 에이전트에서 보고한 상세 측정치는 [**eb health**](health-enhanced-ebcli.md) 명령을 사용하여 [EB CLI](eb-cli3.md)에서 실시간으로 확인할 수 있습니다.

추가 요금을 내면 각 인스턴스와 환경 수준 측정치를 60초마다 CloudWatch에 게시하도록 선택할 수 있습니다. 이후 CloudWatch에 게시된 측정치를 사용하여 [환경 관리 콘솔](environments-console.md)에 [모니터링 그래프](environment-health-console.md#environment-health-console-customize)를 만들 수 있습니다.

확장 상태 보고는 CloudWatch에 확장 상태 측정치를 게시하도록 선택한 경우에만 요금이 부과됩니다. 확장 상태를 사용할 때 확장 상태 측정치를 게시하도록 선택하지 않더라도 기본 상태 측정치를 무료로 게시할 수 있습니다.

상태 확인 에이전트에 의해 보고된 측정치의 자세한 내용은 [인스턴스 지표](health-enhanced-metrics.md) 단원을 참조하세요. CloudWatch에 확장 상태 측정치를 게시하는 방법에 대한 자세한 내용은 [환경에 대한 Amazon CloudWatch 사용자 지정 측정치 게시](health-enhanced-cloudwatch.md) 단원을 참조하세요.

## 인스턴스 및 환경 상태를 파악하는 요소
<a name="health-enhanced-factors"></a>

[Elastic Load Balancing 상태 확인](using-features.healthstatus.md#using-features.healthstatus.understanding) 및 [리소스 모니터링](using-features.healthstatus.md#monitoring-basic-additionalchecks)을 포함한 기본적인 상태 보고 시스템 확인 외에도, Elastic Beanstalk 확장 상태 보고는 환경 내 인스턴스 상태에 대한 추가 데이터를 수집합니다. 이에는 운영 체제 측정치, 서버 로그 및 배포와 업데이트를 비롯한 지속적인 환경 운영 상태가 포함됩니다. Elastic Beanstalk 상태 보고 서비스는 사용 가능한 모든 리소스의 정보를 통합하고 분석하여 전반적인 환경 상태를 파악합니다.



### 작업 및 명령
<a name="health-enhanced-factors-operations"></a>

애플리케이션의 새 버전 배포와 같이 환경에서 작업을 수행할 때, Elastic Beanstalk는 환경 상태에 영향을 미치는 다양한 변경 사항을 적용합니다.

예를 들어 애플리케이션의 새 버전을 여러 인스턴스를 실행하는 환경에 배포하는 경우, [EB CLI로](health-enhanced-ebcli.md) 환경 상태를 모니터링할 때 다음과 유사한 메시지가 표시될 수 있습니다.

```
  id             status     cause
    Overall      Info       Command is executing on 3 out of 5 instances
  i-bb65c145     Pending    91 % of CPU is in use. 24 % in I/O wait
                            Performing application deployment (running for 31 seconds)
  i-ba65c144     Pending    Performing initialization (running for 12 seconds)
  i-f6a2d525     Ok         Application deployment completed 23 seconds ago and took 26 seconds
  i-e8a2d53b     Pending    94 % of CPU is in use. 52 % in I/O wait
                            Performing application deployment (running for 33 seconds)
  i-e81cca40     Ok
```

이 예제에서 전반적인 환경 상태는 `Ok`이며 이 상태의 원인은 *인스턴스 다섯 중 세 개에서 명령이 실행 중*이기 때문입니다. 환경에서 인스턴스 세 개는 *대기 중* 상태이며, 진행 중인 작업을 나타냅니다.

작업이 완료되면 Elastic Beanstalk는 작업에 대한 추가 정보를 보고합니다. 예를 들어 Elastic Beanstalk는 애플리케이션의 새 버전으로 이미 업데이트된 인스턴스에 대한 다음 정보를 표시합니다.

```
i-f6a2d525     Ok         Application deployment completed 23 seconds ago and took 26 seconds
```

인스턴스 상태 정보에는 최근 각 환경 인스턴스로의 배포에 대한 세부 정보도 있습니다. 각 인스턴스는 배포 ID와 상태를 보고합니다. 배포 ID는 애플리케이션의 새 버전을 배포하거나 환경 변수 등 온인스턴스 구성 옵션에 대한 설정을 변경할 때마다 하나씩 늘어나는 정수입니다. 배포 정보를 사용하여 [롤링 배포](using-features.rolling-version-deploy.md)를 실패한 경우 애플리케이션의 잘못된 버전을 실행하는 인스턴스를 파악할 수 있습니다.

Elastic Beanstalk는 여러 차례의 상태 확인에서 성공적으로 이루어진 작업 및 기타 상태 확인에 대한 정보 메시지를 원인 열에 표시하지만, 무기한으로 유지하지는 않습니다. 비정상적인 환경 상태의 원인은 환경이 정상 상태로 돌아올 때까지 유지됩니다.

### 명령 제한 시간
<a name="health-enhanced-factors-timeout"></a>

Elastic Beanstalk는 인스턴스가 정상 상태로 전환되도록 허용하는 작업 시작 시간부터 명령 제한 시간을 적용합니다. 이 명령 제한 시간은 환경의 업데이트 및 배포 구성([aws:elasticbeanstalk:command](command-options-general.md#command-options-general-elasticbeanstalkcommand) 네임스페이스)에서 설정하며 기본값은 10분입니다.

롤링 업데이트 동안 Elastic Beanstalk는 작업의 각 배치마다 개별 제한 시간을 적용합니다. 이 시간 제한은 환경의 롤링 업데이트 구성([aws:autoscaling:updatepolicy:rollingupdate](command-options-general.md#command-options-general-autoscalingupdatepolicyrollingupdate) 네임스페이스)의 일부로 설정합니다. 롤링 업데이트 시간 제한 내 배치의 모든 인스턴스가 정상인 경우 다음 배치로 작업이 이어집니다. 그렇지 않은 경우 작업이 실패하게 됩니다.

**참고**  
애플리케이션이 **양호(OK)** 상태로써 상태 확인을 통과하지 않았으나 다른 수준에서 안정적이라면, [`aws:elasticbeanstalk:command namespace`](command-options-general.md#command-options-general-elasticbeanstalkcommand)에서 `HealthCheckSuccessThreshold` 옵션을 설정하여 Elastic Beanstalk에서 인스턴스가 정상이라고 판단되는 기준을 변경할 수 있습니다.

웹 서버 환경이 정상이라고 판단되려면 환경 또는 배치의 각 인스턴스는 2분이라는 시간 동안 12번의 연속 상태 확인을 통과해야 합니다. 작업자 티어 환경에서 각 인스턴스는 18번의 상태 확인을 통과해야 합니다. 명령 제한 시간을 초과하기 전에는, 상태 확인에 실패하더라도 Elastic Beanstalk가 환경의 상태를 낮추지 않습니다. 환경의 인스턴스가 명령 제한 시간 안에 정상 상태가 되는 한, 작업은 성공입니다.

### HTTP 요청
<a name="health-enhanced-factors-requests"></a>

환경에서 진행 중인 작업이 없는 경우 인스턴스 및 환경 상태에 대한 정보의 주요 출처는 각 인스턴스의 웹 서버 로그입니다. 전반적인 환경 상태와 인스턴스 상태를 파악하기 위하여 Elastic Beanstalk는 요청 횟수, 각 요청 결과, 각 요청이 처리되는 속도를 고려합니다.

Linux 기반 플랫폼에서 Elastic Beanstalk가 웹 서버 로그를 읽고 구문 분석하여 HTTP 요청에 대한 정보를 가져옵니다. Windows Server 플랫폼에서 Elastic Beanstalk가 [IIS 웹 서버로부터 직접](health-enhanced-metrics-server-iis.md) 이 정보를 수신합니다.

사용자의 환경에는 활성 상태의 웹 서버가 없을 수 있습니다. 예를 들어 멀티컨테이너 Docker 플랫폼에는 웹 서버가 포함되어 있지 않습니다. 다른 플랫폼에는 웹 서버가 포함되며 사용자의 애플리케이션에서 그 웹 서버를 비활성화할 수 있습니다. 이런 경우에는 Elastic Beanstalk 서비스에 상태 정보를 전달하는 데 필요한 형식으로 [Elastic Beanstalk 상태 확인 에이전트](#health-enhanced-agent)에 로그를 공급하기 위한 추가적인 구성이 환경에 필요합니다. 세부 정보는 [향상된 상태 로그 형식](health-enhanced-serverlogs.md) 단원을 참조하세요.

### 운영 체제 지표
<a name="health-enhanced-factors-healthcheck"></a>

Elastic Beanstalk는 상태 확인 에이전트가 보고한 운영 체제 측정치를 모니터링하면서 시스템 리소스에서 지속적으로 부족한 인스턴스를 파악합니다.

상태 확인 에이전트에 의해 보고된 측정치의 자세한 내용은 [인스턴스 지표](health-enhanced-metrics.md) 단원을 참조하세요.

## 상태 확인 규칙 사용자 지정
<a name="health-enhanced.rules"></a>

Elastic Beanstalk의 확장 상태 보고는 규칙 집합을 사용하여 환경 상태를 확인합니다. 이러한 규칙의 일부는 특정 애플리케이션에 적합하지 않을 수 있습니다. 대부분의 경우 그러한 애플리케이션은 설계상 HTTP 4xx 오류를 빈번하게 반환하는 애플리케이션입니다. 기본 규칙 중 하나를 사용하는 Elastic Beanstalk는 결과적으로 오류가 발생하며, 오류 상태에 따라 환경 상태를 정상에서 경고, 성능 저하 또는 심각으로 변경합니다. 이를 올바르게 처리하기 위해 Elastic Beanstalk에서 이 규칙을 구성하고 애플리케이션 HTTP 4xx 오류를 무시할 수 있습니다. 자세한 내용은 [환경에 대해 향상된 상태 규칙 구성](health-enhanced-rules.md) 단원을 참조하세요.

## 향상된 상태 역할
<a name="health-enhanced-roles"></a>

확장 상태 보고에는 두 가지 역할(Elastic Beanstalk에 대한 서비스 역할 및 환경에 대한 인스턴스 프로파일)이 필요합니다. 서비스 역할을 통해 Elastic Beanstalk는 사용자를 대신하여 다른 AWS 서비스와 상호 작용하여 환경의 리소스에 대한 정보를 수집할 수 있습니다. 인스턴스 프로파일을 사용하면 사용자 환경의 인스턴스가 로그를 Amazon S3에 기록하고 확장 상태 정보를 Elastic Beanstalk 서비스에 전달할 수 있습니다.

Elastic Beanstalk 콘솔 또는 EB CLI를 사용하여 Elastic Beanstalk 환경을 생성하는 경우 Elastic Beanstalk는 기본 서비스 역할을 생성하고 필요한 관리형 정책을 사용자 환경의 기본 인스턴스 프로파일에 연결합니다.

API, SDK 또는를 사용하여 환경을 AWS CLI 생성하는 경우 이러한 역할을 미리 생성하고 환경 생성 중에 지정하여 향상된 상태를 사용해야 합니다. 환경에 대한 적절한 역할을 생성하는 지침은 [Elastic Beanstalk 서비스 역할, 인스턴스 프로파일, 사용자 정책](concepts-roles.md) 단원을 참조하세요.

인스턴스 프로파일 및 서비스 역할에 대해 *관리형 정책*을 사용하는 것이 좋습니다. 관리형 정책은 Elastic Beanstalk가 유지 관리하는 AWS Identity and Access Management (IAM) 정책입니다. 관리형 정책을 사용하면 환경이 제대로 작동하는 데 필요한 모든 권한을 갖게 됩니다.

인스턴스 프로파일의 경우 [웹 서버 계층](concepts-webserver.md) 또는 [작업자 계층](concepts-worker.md) 환경에 대해 각각 `AWSElasticBeanstalkWebTier` 또는 `AWSElasticBeanstalkWorkerTier` 관리형 정책을 사용할 수 있습니다. 이러한 두 관리형 인스턴스 프로파일 정책에 대한 자세한 내용은 [Elastic Beanstalk 인스턴스 프로파일 관리](iam-instanceprofile.md) 단원을 참조하세요.

## 확장된 상태 권한 부여
<a name="health-enhanced-authz"></a>

Elastic Beanstalk 인스턴스 프로파일 관리형 정책에는 `elasticbeanstalk:PutInstanceStatistics` 작업에 대한 권한이 포함되어 있습니다. 이 작업은 Elastic Beanstalk API의 일부가 아닙니다. 환경 인스턴스에서 확장된 상태 정보를 Elastic Beanstalk 서비스에 전달하기 위해 내부적으로 사용하는 다른 API의 일부입니다. 이 API는 사용자가 직접 호출하지 않습니다.

새 환경을 생성할 때, `elasticbeanstalk:PutInstanceStatistics` 작업에 대한 인증은 기본적으로 활성화되어 있습니다. 환경의 보안을 강화하고 상태 데이터 스푸핑을 방지하도록 이 작업에 대한 권한 부여를 활성화하는 것이 좋습니다. 인스턴스 프로파일에 관리형 정책을 사용하는 경우, 추가 구성 없이 새 환경에서 이 기능을 사용할 수 있습니다. 그러나, *관리형 정책* 대신 *사용자 지정 인스턴스 프로파일*을 사용하는 경우 환경에 **데이터 없음** 상태가 표시될 수 있습니다. 이는 인스턴스에 확장된 상태 데이터를 서비스에 전달하는 작업을 수행할 권한이 없기 때문에 발생합니다.

작업을 수행할 권한을 부여하려면 인스턴스 프로파일에 다음 문을 포함합니다.

```
    {
      "Sid": "ElasticBeanstalkHealthAccess",
      "Action": [
        "elasticbeanstalk:PutInstanceStatistics"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:elasticbeanstalk:*:*:application/*",
        "arn:aws:elasticbeanstalk:*:*:environment/*"
      ]
    }
```

이번에는 향상된 인증을 사용하지 않으려는 경우 [aws:elasticbeanstalk:healthreporting:system](command-options-general.md#command-options-general-elasticbeanstalkhealthreporting) 네임스페이스스의 `EnhancedHealthAuthEnabled` 옵션을 `false`(으)로 설정해서 비활성화합니다. 이 옵션을 비활성화하면 앞에서 설명한 권한이 필요하지 않습니다. 인스턴스 프로파일에서 해당 내용을 제거하여 애플리케이션 및 환경에 [최소 권한 액세스](security-best-practices.md#security-best-practices.preventive.least-priv)를 적용할 수 있습니다.

**참고**  
이전에 `EnhancedHealthAuthEnabled`에 대한 기본 설정이 `false`였기 때문에 `elasticbeanstalk:PutInstanceStatistics` 작업에 대한 권한 부여도 기본적으로 비활성화되어 있습니다. 기존 환경에 대해 이 옵션을 활성화하려면 [aws:elasticbeanstalk:healthreporting:system](command-options-general.md#command-options-general-elasticbeanstalkhealthreporting) 네임스페이스에서 `EnhancedHealthAuthEnabled` 옵션을 `true`로 설정합니다. [구성 파일](ebextensions.md)의 [옵션 설정](ebextensions-optionsettings.md)을 사용하여 이 옵션을 구성할 수 있습니다.

## 향상된 상태 이벤트
<a name="health-enhanced-events"></a>

환경에서 상태 간 전환이 발생할 때 확장 상태 시스템은 이벤트를 생성합니다. 다음은 **정보**, **확인** 및 **심각**한 상태 간 환경 전환에 의한 이벤트 출력을 보여주는 예제입니다.

![\[확장 상태 최근 이벤트를 보여주는 Elastic Beanstalk 콘솔의 Elastic Beanstalk 환경 개요 페이지\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/enhanced-health-events.png)


더 나쁜 상태로 전환되면 확장 상태 이벤트에 전환의 원인을 나타내는 메시지가 표시됩니다.

인스턴스 수준에서 이루어지는 상태 변경 중 일부만 Elastic Beanstalk에서 이벤트를 출력합니다. Elastic Beanstalk는 거짓 경보를 방지하기 위해 여러 번의 확인에서 문제가 지속되는 경우에만 상태 관련 이벤트를 생성합니다.

상태, 색상 및 원인을 포함한 실시간 환경 수준의 상태 정보는 Elastic Beanstalk 콘솔의 [환경 개요](environments-dashboard.md) 페이지 및 [EB CLI](eb-cli3.md)에서 확인할 수 있습니다. EB CLI를 환경에 연결하고 [**eb health**](health-enhanced-ebcli.md) 명령을 실행하여, 환경의 각 인스턴스에서 실시간으로 상태를 확인할 수도 있습니다.

## 업데이트, 배포 및 조정 중 향상된 상태 보고 행동
<a name="health-enhanced-effects"></a>

확장 상태 보고를 활성화하면 구성 업데이트와 배포가 진행되는 동안 환경의 동작 방식에 영향을 미칠 수 있습니다. Elastic Beanstalk는 모든 인스턴스가 상태 확인을 지속적으로 통과한 후에야 업데이트 배치(batch)를 완료합니다. 또한 확장 상태 보고는 보다 엄격한 상태 기준을 적용하여 더 많은 요소를 모니터링하기 때문에, 기본 상태 보고의 [ELB 상태 확인](using-features.healthstatus.md#using-features.healthstatus.understanding)을 통과한 인스턴스라고 해서 확장 상태 보고를 반드시 통과한다는 보장은 없습니다. 상태 확인이 업데이트 프로세스에 어떤 식으로 영향을 미치는지에 대한 자세한 내용은 [롤링 구성 업데이트](using-features.rollingupdates.md) 및 [롤링 배포](using-features.rolling-version-deploy.md) 항목을 참조하십시오.

확장 상태 보고는 Elastic 로드 밸런서에 대해 적절한 [상태 확인 URL](environments-cfg-clb.md#using-features.managing.elb.healthchecks)을 설정해야 하는 필요성을 강조할 수도 있습니다. 환경이 수요에 맞춰 확장되면, 새 인스턴스는 ELB 상태 확인을 충분히 통과하는 즉시 요청을 받기 시작합니다. 상태 확인 URL이 구성되지 않은 경우, 새 인스턴스에서 TCP 연결이 허용된 후 걸리는 시간은 20초에 불과합니다.

로드 밸런서가 트래픽을 수신할 수 있는 정상 상태라고 선언할 때까지 애플리케이션 시작이 완료되지 않은 경우, 수많은 요청 실패가 표시되고 이후 해당 환경에서는 상태 확인이 실패하게 됩니다. 애플리케이션에서 제공하는 경로를 이용하는 상태 확인 URL을 통해 이 문제를 방지할 수 있습니다. 상태 확인 URL에 대한 GET 요청이 200 상태 코드를 반환할 때까지 ELB 상태 확인은 통과되지 않습니다.

# Elastic Beanstalk 확장 상태 보고 활성화
<a name="health-enhanced-enable"></a>

이 주제에서는 향상된 상태 보고가 활성화되는 방법을 설명합니다. Elastic Beanstalk 콘솔, EB CLI 및 .ebextensions 구성을 사용하여 환경에 향상된 상태 기능을 활성화하는 절차를 알려 줍니다.

최신 [플랫폼 버전으로](concepts.platforms.md) 생성된 새로운 환경에는 향상된 상태 보고를 지원하는 AWS Elastic Beanstalk [상태 에이전트](health-enhanced.md#health-enhanced-agent)가 포함됩니다. Elastic Beanstalk 콘솔에서 또는 EB CLI로 환경을 생성하는 경우 기본적으로 확장 상태가 활성화됩니다. 또한 [구성 파일](ebextensions.md)을 사용하여 애플리케이션 소스 코드에서 상태 보고 기본 설정을 지정할 수도 있습니다.

확장 상태 보고를 사용하려면 표준 권한 세트와 함께 [인스턴스 프로파일](concepts-roles-instance.md) 및 [서비스 역할](concepts-roles-service.md)이 필요합니다. Elastic Beanstalk 콘솔에서 환경을 생성하는 경우 Elastic Beanstalk는 필요한 역할을 자동으로 생성합니다. 첫 번째 환경 생성 지침은 [Elastic Beanstalk를 시작하는 방법 알아보기](GettingStarted.md) 단원을 참조하세요.

**Topics**
+ [Elastic Beanstalk 콘솔을 사용해 확장 상태 보고 활성화](#health-enhanced-enable-console)
+ [EB CLI를 사용하여 향상된 상태 보고 활성화](#health-enhanced-enable-ebcli)
+ [구성 파일을 사용하여 향상된 상태 보고 활성화](#health-enhanced-enable-config)

## Elastic Beanstalk 콘솔을 사용해 확장 상태 보고 활성화
<a name="health-enhanced-enable-console"></a>

**Elastic Beanstalk 콘솔을 사용하여 실행 중인 환경에서 확장 상태 보고를 활성화하려면**

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

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

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

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

1. **상태 보고**에서 **시스템**에 대해 **확장**을 선택합니다.
**참고**  
[지원되지 않는 플랫폼 또는 버전](health-enhanced.md)을 사용하는 경우 확장된 상태 보고의 옵션이 표시되지 않습니다.

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

버전 2(v2) 플랫폼 버전을 사용하여 새 환경을 만든 경우 Elastic Beanstalk 콘솔은 확장 상태 보고를 기본값으로 설정합니다. 환경 생성 중 상태 보고 옵션을 변경하여 확장 상태 보고를 비활성화할 수 있습니다.

**Elastic Beanstalk 콘솔을 사용하여 환경 생성 시 확장 상태 보고를 비활성화하려면**

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

1. [애플리케이션을 생성](applications.md)하거나 기존 애플리케이션을 생성합니다.

1. [환경을 생성](using-features.environments.md)합니다. **새 환경 생성(Create a new environment)** 페이지에서 **추가 옵션 구성(Configure more options)**을 선택한 다음 **환경 생성(Create environment)**을 선택합니다.

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

1. **상태 보고**에서 **시스템**에 대해 **기본**을 선택합니다.

1. **저장**을 선택합니다.

## EB CLI를 사용하여 향상된 상태 보고 활성화
<a name="health-enhanced-enable-ebcli"></a>

**eb create** 명령을 사용하여 새 환경을 생성하는 경우 EB CLI에서는 기본적으로 확장 상태 보고를 활성화하고 기본 인스턴스 프로파일 및 서비스 역할을 적용합니다.

`--service-role` 옵션을 사용하여 이름별로 다른 서비스 역할을 지정할 수 있습니다.

v2 플랫폼 버전에 대해 기본 상태 보고로 실행 중인 환경이 있으며 이를 확장된 상태로 전환하려는 경우 다음 단계를 따르세요.

**[EB CLI](eb-cli3.md)를 사용하여 실행 중인 환경에 대해 확장 상태를 활성화하려면**

1. **eb config** 명령을 사용하여 기본 텍스트 편집기에서 구성 파일을 엽니다.

   ```
   ~/project$ eb config
   ```

1. 설정 섹션에서 `aws:elasticbeanstalk:environment` 네임스페이스를 찾습니다. `ServiceRole`의 값이 null이 아니고 [서비스 역할](concepts-roles-service.md)의 이름과 일치하는지 확인합니다.

   ```
     aws:elasticbeanstalk:environment:
       EnvironmentType: LoadBalanced
       ServiceRole: aws-elasticbeanstalk-service-role
   ```

1. `aws:elasticbeanstalk:healthreporting:system:` 네임스페이스에서 `SystemType`의 값을 **enhanced**로 변경합니다.

   ```
     aws:elasticbeanstalk:healthreporting:system:
       SystemType: enhanced
   ```

1. 구성 파일을 저장하고 텍스트 편집기를 닫습니다.

1. EB CLI가 환경 업데이트를 시작하여 구성 변경 사항을 적용합니다. 작업이 완료될 때까지 기다리거나 **Ctrl\$1C**를 눌러 안전하게 종료합니다.

   ```
   ~/project$ eb config
   Printing Status:
   INFO: Environment update is starting.
   INFO: Health reporting type changed to ENHANCED.
   INFO: Updating environment no-role-test's configuration settings.
   ```

## 구성 파일을 사용하여 향상된 상태 보고 활성화
<a name="health-enhanced-enable-config"></a>

소스 번들에 [구성 파일](ebextensions.md)을 포함하여 고급 상태 보고를 활성화할 수 있습니다. 다음 예제에서는 확장 상태 보고를 활성화하고 환경에 기본 서비스 및 인스턴스 프로파일을 할당하는 구성 파일을 보여줍니다.

**Example .ebextensions/enhanced-health.config**  

```
option_settings:
  aws:elasticbeanstalk:healthreporting:system:
    SystemType: enhanced
  aws:autoscaling:launchconfiguration:
    IamInstanceProfile: aws-elasticbeanstalk-ec2-role
  aws:elasticbeanstalk:environment:
    ServiceRole: aws-elasticbeanstalk-service-role
```

고유한 인스턴스 프로파일 또는 서비스 역할을 생성한 경우 강조 표시된 텍스트를 이러한 역할의 이름으로 바꾸세요.

# 환경 관리 콘솔을 통해 향상된 상태 모니터링
<a name="health-enhanced-console"></a>

에서 확장 상태 보고를 활성화하면 환경 [관리 콘솔에서 환경](environments-console.md) 상태를 모니터링할 AWS Elastic Beanstalk수 있습니다.

**Topics**
+ [환경 개요](#health-enhanced-console-overview)
+ [환경 상태 페이지](#health-enhanced-console-healthpage)
+ [모니터링 페이지](#health-enhanced-console-monitoringpage)

## 환경 개요
<a name="health-enhanced-console-overview"></a>

[[환경 개요](environments-dashboard.md)]에는 환경의 [상태](health-enhanced-status.md)가 표시되고, 상태의 최근 변경 사항에 대한 정보를 제공하는 이벤트가 나열됩니다.

**환경 개요를 보려면**

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

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

현재 환경의 상태에 대한 자세한 내용을 보려면 **원인(Causes)**을 선택하여 **상태(Health)** 페이지를 엽니다. 또는 탐색 창에서 [**상태**]를 선택합니다.

## 환경 상태 페이지
<a name="health-enhanced-console-healthpage"></a>

**상태(Health)** 페이지에는 환경 및 환경의 각 Amazon EC2 인스턴스의 상태, 측정치, 원인이 표시됩니다.

**참고**  
환경에 대한 [확장 상태 모니터링을 활성화](health-enhanced-enable.md)한 경우에만 Elastic Beanstalk에 **상태(Health)** 페이지가 표시됩니다.

다음 이미지는 Linux 환경에 대한 **상태** 페이지를 보여줍니다.

![\[Linux 환경에 대한 환경 상태 페이지\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/enhanced-health-instances.png)


다음 이미지는 Windows 환경에 대한 **상태** 페이지를 보여줍니다. CPU 측정치가 Linux 환경의 측정치와 다릅니다.

![\[Windows 환경에 대한 환경 상태 페이지\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/enhanced-health-instances-win.png)


페이지 상단에서 환경 인스턴스의 총 수와 상태별 인스턴스 수를 확인할 수 있습니다. 특정 상태의 인스턴스만 표시하려면 [**필터링 기준**]을 선택한 후 [[상태](health-enhanced-status.md)]를 선택합니다.

![\[표시할 인스턴스 상태를 선택할 수 있는 메뉴별 필터를 보여주는 환경 상태 페이지\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/enhanced-health-instances-status.png)


비정상 인스턴스를 재부팅하거나 종료하려면 **인스턴스 작업**을 선택한 후 **Reboot(재부팅)** 또는 **종료**를 선택합니다.

![\[비정상 인스턴스를 재부팅하거나 종료하기 위한 인스턴스 작업 메뉴를 보여주는 환경 상태 페이지\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/enhanced-health-instances-actions.png)


Elastic Beanstalk는 10초마다 **상태(Health)** 페이지를 업데이트하며, 환경 상태 및 인스턴스 상태에 대한 정보를 보고합니다.

이 페이지에는 환경의 각 Amazon EC2 인스턴스에 대해 인스턴스의 ID 및 [상태](health-enhanced-status.md), 인스턴스가 시작된 이후 경과한 시간, 인스턴스에서 실행된 가장 최근 배포의 ID, 인스턴스가 제공한 요청의 응답 및 지연 시간, 로드 및 CPU 사용률 정보가 표시됩니다. [**전체**] 행에는 전체 환경에 대한 평균 응답 및 지연 시간 정보가 표시됩니다.

이 페이지에는 매우 넓은 테이블에 많은 세부 정보가 표시됩니다. 일부 열을 숨기려면 ![\[the cog icon.\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/cog.png)(**기본 설정(Preferences)**)을 선택합니다. 열 이름을 선택하거나 선택 취소한 다음 [**확인**]을 선택합니다.

![\[환경 상태 페이지에 표시할 열 선택\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/enhanced-health-console-preferences.png)


가용 영역 및 인스턴스 유형을 비롯한 인스턴스에 대한 자세한 정보를 보려면 인스턴스의 **인스턴스 ID**를 선택합니다.

![\[인스턴스 정보가 있는 환경 상태 페이지에 대한 서버 지표\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/enhanced-health-console-instance.png)


인스턴스에 대한 마지막 **배포**에 관한 정보를 보려면 인스턴스의 [배포 ID](using-features.deploy-existing-version.md)를 선택합니다.

![\[배포 정보가 있는 환경 상태 페이지에 대한 서버 지표\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/enhanced-health-console-deployment.png)


배포 정보에는 다음과 같은 내용이 포함됩니다.
+ **배포 ID(Deployment ID)** - [배포](using-features.deploy-existing-version.md)의 고유 식별자입니다. 배포 ID는 1에서 시작하며 새 애플리케이션 버전을 배포하거나 환경의 인스턴스에서 실행되는 운영 체제나 소프트웨어에 영향을 주는 구성 설정을 변경할 때마다 1씩 증가합니다.
+ **버전(Version)** - 배포에 사용된 애플리케이션 소스 코드의 버전 레이블입니다.
+ **상태(Status)** - 배포 상태로, `In Progress`, `Deployed` 또는 `Failed`일 수 있습니다.
+ **시간(Time)** - 진행 중인 배포의 경우 배포가 시작된 시간입니다. 완료된 배포의 경우 배포가 종료된 시간입니다.

환경에서 [X-Ray 통합을 활성화](environment-configuration-debugging.md)하고 AWS X-Ray SDK를 사용하여 애플리케이션을 계측하는 경우 **상태** 페이지에 개요 행에 AWS X-Ray 콘솔에 대한 링크가 추가됩니다.

![\[환경 상태 페이지에 대한 요청 지표\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/enhanced-health-console-xray.png)


 AWS X-Ray 콘솔에서 강조 표시된 통계와 관련된 추적을 보려면 링크를 선택합니다.

## 모니터링 페이지
<a name="health-enhanced-console-monitoringpage"></a>

**모니터링(Monitoring)** 페이지에는 확장 상태 보고 시스템에서 생성된 사용자 지정 Amazon CloudWatch 측정치에 대한 요약 통계와 그래프가 표시됩니다. 이 페이지에 그래프와 통계를 추가하는 방법은 [AWS 관리 콘솔에서 환경 상태 모니터링](environment-health-console.md) 단원을 참조하세요.

# 상태 색상 및 상태
<a name="health-enhanced-status"></a>

확장 상태 보고는 인스턴스와 전반적인 환경 상태를 네 가지 색으로 나타내며, [기본 상태 보고](using-features.healthstatus.md)와 유사합니다. 또한 확장 상태 보고는 환경의 상태를 잘 표현한 한 단어의 설명으로 일곱 가지 상태를 제시합니다.

## 인스턴스 상태 및 환경 상태
<a name="health-enhanced-status-type"></a>

Elastic Beanstalk가 환경에서 상태 확인을 실행할 때마다, 확장 상태 보고는 사용 가능한 모든 [데이터](health-enhanced.md#health-enhanced-factors)를 분석하여 환경의 각 인스턴스 상태를 확인합니다. 하위 수준의 확인이 실패하면 Elastic Beanstalk에서 인스턴스 상태를 다운그레이드합니다.

Elastic Beanstalk는 [환경 관리 콘솔](environments-console.md)에 전체 환경에 대한 상태 정보를 표시합니다. 이 정보는 EB CLI에서도 확인할 수 있습니다. 개별 인스턴스에 대한 상태 확인과 원인 메시지는 10초마다 업데이트되며, [**eb health**](health-enhanced-ebcli.md)를 사용하여 상태를 확인할 때 [EB CLI](eb-cli3.md)에서 볼 수 있습니다.

Elastic Beanstalk는 인스턴스 상태 변경을 사용하여 환경 상태를 평가하나, 환경 상태를 즉시 변경하지는 않습니다. 1분 내에 인스턴스가 상태 확인을 최소 3번 실패하면, Elastic Beanstalk는 환경 상태를 다운그레이드할 수 있습니다. 환경의 인스턴스 수와 식별된 문제에 따라 한 개의 비정상 인스턴스는 Elastic Beanstalk에서 정보 메시지를 표시하거나 녹색(**확인(OK)**)에서 노란색(**경고(Warning)**) 또는 빨간색(**성능 저하됨(Degraded)** 또는 **심각(Severe)**)으로 환경 상태를 변경하도록 할 수 있습니다.

## 확인(녹색)
<a name="health-enhanced-status-ok"></a>

다음의 경우 이 상태가 표시됩니다.
+ 인스턴스가 상태 확인을 통과하고 상태 에이전트는 어떠한 문제도 보고하지 않습니다.
+ 환경 인스턴스 대부분이 상태 확인을 통과하고 상태 에이전트는 중요한 문제를 보고하지 않습니다.
+ 인스턴스가 상태 확인을 통과하고 정상적으로 요청을 완료합니다.

*예:* 최근에 환경이 배포되었으며 정상적으로 요청을 받습니다. 요청의 5%가 400 시리즈 오류를 반환합니다. 각 인스턴스에서 배포가 정상적으로 완료되었습니다.

*메시지(인스턴스):* 애플리케이션 배포가 23초 전에 완료되었으며 26초가 걸렸습니다.

## 경고(노란색)
<a name="health-enhanced-status-warning"></a>

다음의 경우 이 상태가 표시됩니다.
+ 상태 에이전트가 인스턴스 또는 환경에 대한 적당한 수의 요청 실패 또는 기타 문제를 보고합니다.
+ 인스턴스에서 작업이 진행 중이며 매우 오랜 시간이 걸립니다.

*예:* 환경의 인스턴스 한 개가 **심각한** 상태입니다.

*메시지(환경):* 인스턴스 5개 중 1개에서 서비스가 손상됨

## 성능 저하(빨간색)
<a name="health-enhanced-status-degraded"></a>

상태 에이전트가 인스턴스 또는 환경에 대한 높은 수의 요청 실패 또는 기타 문제를 보고하면 이 상태가 표시됩니다.

*예:* 환경에서 인스턴스 최대 5개의 조정이 처리되고 있습니다.

*메시지(환경):* 활성 인스턴스 4개는 Auto Scaling 그룹의 최소 크기 5보다 작습니다.

## 심각(빨간색)
<a name="health-enhanced-status-severe"></a>

상태 에이전트가 인스턴스 또는 환경에 대한 매우 높은 수의 요청 실패 또는 기타 문제를 보고하면 이 상태가 표시됩니다.

*예:* Elastic Beanstalk는 로드 밸런서에 연결하여 인스턴스 상태를 확인할 수 없습니다.

*메시지(환경):* ELB 상태 확인이 실패하고 있거나 모든 인스턴스에 사용할 수 없습니다. 데이터를 전송 중인 인스턴스가 없습니다. "arn:aws:iam::123456789012:role/aws-elasticbeanstalk-service-role" 역할을 맡을 수 없습니다. 해당 역할이 존재하고 제대로 구성되어 있는지 확인합니다.

*메시지(인스턴스):* 인스턴스 ELB 상태를 37분 동안 사용할 수 없었습니다. 데이터가 없습니다. 37분 전에 마지막으로 확인했습니다.

## 정보(녹색)
<a name="health-enhanced-status-info"></a>

다음의 경우 이 상태가 표시됩니다.
+ 인스턴스 작업이 진행 중입니다.
+ 환경에서 여러 인스턴스 작업이 진행 중입니다.

*예:* 새 애플리케이션 버전이 실행 중인 인스턴스에 배포 중입니다.

*메시지(환경):* 인스턴스 5개 중 3개에서 명령이 실행 중입니다.

*메시지(인스턴스):* 애플리케이션 배포(3초 동안 실행)를 수행 중입니다.

## 대기 중(회색)
<a name="health-enhanced-status-pending"></a>

[명령 시간 제한](health-enhanced.md#health-enhanced-factors-timeout) 내에 인스턴스 작업이 진행 중이면 이 상태가 표시됩니다.

*예:* 최근에 환경을 생성했으며 인스턴스가 부트스트랩되는 중입니다.

*메시지:* 초기화(12초 동안 실행)를 수행 중입니다.

## 알 수 없음(회색)
<a name="health-enhanced-status-unknown"></a>

Elastic Beanstalk 및 상태 확인 에이전트에서 인스턴스에 대해 부족한 양의 데이터를 보고하면 이 상태가 표시됩니다.

*예:* 어떤 데이터도 받고 있지 않습니다.

## 일시 중지(회색)
<a name="health-enhanced-status-suspended"></a>

Elastic Beanstalk가 환경 상태 모니터링을 중지했으면 이 상태가 표시됩니다. 환경이 제대로 작동하지 않을 수 있습니다. 일부 심각한 상태가 장시간 지속될 경우 Elastic Beanstalk는 환경을 **일시 중지됨(Suspended)** 상태로 전환합니다.

*예:* Elastic Beanstalk가 환경의 [서비스 역할](iam-servicerole.md)에 액세스할 수 없습니다.

*예:* Elastic Beanstalk가 환경에 대해 생성한 [Auto Scaling 그룹](using-features.managing.as.md)이 삭제되었습니다.

*메시지:* 환경 상태가 **정상**에서 **심각**으로 전환되었습니다. 인스턴스가 없습니다. Auto Scaling 그룹에 필요한 용량이 1로 설정됩니다.

# 인스턴스 지표
<a name="health-enhanced-metrics"></a>

인스턴스 측정치는 환경의 인스턴스 상태에 대한 정보를 제공합니다. [Elastic Beanstalk 상태 확인 에이전트](health-enhanced.md#health-enhanced-agent)는 각 인스턴스에 대해 실행됩니다. 이 에이전트는 인스턴스에 대한 측정치를 수집하여 Elastic Beanstalk로 전달하며, 측정치를 분석하여 환경의 인스턴스 상태를 파악합니다.

온-인스턴스 Elastic Beanstalk 상태 확인 에이전트는 웹 서버 및 운영 체제에서 인스턴스에 대한 측정치를 수집합니다. Linux 기반 플랫폼에서 웹 서버 정보를 가져오기 위해 Elastic Beanstalk가 웹 서버 로그를 읽어 구문 분석합니다. Windows Server 플랫폼에서 Elastic Beanstalk가 IIS 웹 서버로부터 직접 이 정보를 수신합니다. 웹 서버는 받은 요청 수, 오류 수, 오류 해결에 걸린 시간 등 수신되는 HTTP 요청에 대한 정보를 제공합니다. 운영 체제는 프로세스 유형마다 걸린 배포 시간, CPU 부하 등 인스턴스 리소스 상태에 대한 스냅샷 정보를 제공합니다.

상태 확인 에이전트는 웹 서버 로그와 운영 체제 시스템 측정치를 수집하여 이를 Elastic Beanstalk로 10초마다 전달합니다. Elastic Beanstalk는 데이터를 분석하고 결과값을 사용하여 각 인스턴스와 환경의 상태를 업데이트합니다.

**Topics**
+ [웹 서버 지표](#health-enhanced-metrics-server)
+ [운영 체제 지표](#health-enhanced-metrics-os)
+ [Windows Server의 IIS에서 웹 서버 지표 캡처](health-enhanced-metrics-server-iis.md)

## 웹 서버 지표
<a name="health-enhanced-metrics-server"></a>

Linux 기반 플랫폼에서 Elastic Beanstalk 상태 확인 에이전트는 환경의 각 인스턴스에서 요청을 처리하는 서버나 웹 컨테이너가 생성한 로그에서 웹 서버 측정치를 읽습니다. Elastic Beanstalk 플랫폼은 로그 두 개(사람이 읽을 수 있는 형식 및 머신이 판독 가능한 형식)를 생성하도록 구성되어 있습니다. 상태 확인 에이전트는 머신 판독 가능한 로그를 Elastic Beanstalk로 10초마다 전달합니다.

Elastic Beanstalk에서 사용하는 로그 형식에 대한 자세한 내용은 [향상된 상태 로그 형식](health-enhanced-serverlogs.md) 단원을 참조하세요.

Windows Server 플랫폼에서 Elastic Beanstalk가 IIS 웹 서버의 요청 파이프라인에 모듈을 추가하고 HTTP 요청 시간 및 응답 코드에 대한 측정치를 캡처합니다. 모듈은 고성능 프로세스간 통신(IPC) 채널을 통하여 이 측정치를 온-인스턴스 상태 확인 에이전트로 전달합니다. 구현 세부 정보는 [Windows Server의 IIS에서 웹 서버 지표 캡처](health-enhanced-metrics-server-iis.md) 단원을 참조하세요.보고된 웹 서버 측정치

`RequestCount`  
10초 동안 웹 서버에서 처리하는 요청 수(초)입니다. EB CLI 및 [환경 상태 페이지](health-enhanced-console.md#health-enhanced-console-healthpage)에 평균 `r/sec`(초당 요청 수)이 표시됩니다.

`Status2xx``Status3xx``Status4xx``Status5xx`  
10초 동안 상태 코드의 각 유형에서 발생한 요청 수입니다. 예를 들어 입력한 URL이 애플리케이션의 리소스에 일치하지 않는 경우, 성공한 요청은 200 OK, 리디렉션은 301 및 404를 반환합니다.  
EB CLI 및 [환경 상태 페이지](health-enhanced-console.md#health-enhanced-console-healthpage)에서는 이 측정치를 원래의 인스턴스 요청 수 및 해당 환경의 전체 요청에 대한 백분율, 두 가지로 표시합니다.

`p99.9``p99``p95``p90``p85``p75``p50``p10`  
10초 동안 가장 느린 *x* 백분율의 요청에 대한 평균 지연 시간으로 *x*는 횟수와 100 사이의 차이입니다. 예를 들어 `p99 1.403`은 10초간 가장 느린 요청 1%의 평균 지연 시간이 1.403초임을 뜻합니다.

## 운영 체제 지표
<a name="health-enhanced-metrics-os"></a>

Elastic Beanstalk 상태 확인 에이전트는 다음의 운영 체제 측정치를 보고합니다. Elastic Beanstalk는 다음 측정치를 사용하여 지속적으로 과도한 부하 상태에 있는 인스턴스를 식별합니다. 측정치는 운영 체제마다 다릅니다.보고된 운영 체제 측정치 - Linux

`Running`  
인스턴스가 시작된 후로 경과된 시간입니다.

`Load 1``Load 5`  
지난 1분 및 5분간 평균 로드입니다. 해당 시간 동안 실행되는 평균 프로세스 수를 나타내는 정수로 표시됩니다. 표시된 수가 사용 가능한 vCPUs(스레드)의 수보다 높을 경우, 나머지 부분은 대기 중이었던 프로세스의 평균 수입니다.  
예를 들어 인스턴스 유형에 vCPU가 4개 있고 로드가 4.5인 경우, 해당 기간 동안 대기 중인 프로세스는 평균 0.5개였으며 이는 프로세스 한 개가 50%의 시간 동안 대기 중인 것과 같습니다.

`User %``Nice %``System %``Idle %``I/O Wait %`  
지난 10초간 CPU가 각 상태로 보낸 시간의 백분율입니다.보고된 운영 체제 측정치 - Windows

`Running`  
인스턴스가 시작된 후로 경과된 시간입니다.

`% User Time``% Privileged Time``% Idle Time`  
지난 10초간 CPU가 각 상태로 보낸 시간의 백분율입니다.

# Windows Server의 IIS에서 웹 서버 지표 캡처
<a name="health-enhanced-metrics-server-iis"></a>

Windows Server 플랫폼에서 Elastic Beanstalk가 IIS 웹 서버의 요청 파이프라인에 모듈을 추가하고 HTTP 요청 시간 및 응답 코드에 대한 측정치를 캡처합니다. 모듈은 고성능 프로세스간 통신(IPC) 채널을 통하여 이 측정치를 온-인스턴스 상태 확인 에이전트로 전달합니다. 상태 확인 에이전트는 이러한 측정치를 집계하고 운영 체제 측정치와 결합하여 Elastic Beanstalk 서비스로 전달합니다.

## 구현 세부 정보
<a name="health-enhanced-metrics-server-iis.impl"></a>

IIS에서 측정치를 캡처하기 위해, Elastic Beanstalk가 관리형 [https://msdn.microsoft.com/en-us/library/system.web.ihttpmodule%28v=vs.110%29.aspx](https://msdn.microsoft.com/en-us/library/system.web.ihttpmodule%28v=vs.110%29.aspx)을 실행하고 [https://msdn.microsoft.com/en-us/library/system.web.httpapplication.beginrequest(v=vs.110).aspx](https://msdn.microsoft.com/en-us/library/system.web.httpapplication.beginrequest(v=vs.110).aspx) 및 [https://msdn.microsoft.com/en-us/library/system.web.httpapplication.endrequest(v=vs.110).aspx](https://msdn.microsoft.com/en-us/library/system.web.httpapplication.endrequest(v=vs.110).aspx) 이벤트를 구독합니다. 이렇게 하면 모듈이 HTTP 요청 지연 시간과 IIS에서 처리하는 모든 웹 요청에 대한 응답 코드를 보고할 수 있습니다. 모듈을 IIS 요청 파이프라인에 추가하기 위해, Elastic Beanstalk가 해당 모듈을 IIS 구성 파일, `%windir%\System32\inetsrv\config\applicationHost.config`의 [https://docs.microsoft.com/en-us/iis/configuration/system.webserver/modules/](https://docs.microsoft.com/en-us/iis/configuration/system.webserver/modules/)섹션에 등록합니다.

IIS의 Elastic Beanstalk 모듈은 캡처한 웹 요청 측정치를 `HealthD`라는 이름의 Windows 서비스인 온-인스턴스 상태 확인 에이전트로 전달합니다. 모듈은 이 데이터를 전달하기 위해, 온-머신 통신에 최적화된 보안성과 안정성을 갖춘 바인딩을 제공하는 [https://msdn.microsoft.com/en-us/library/system.servicemodel.netnamedpipebinding(v=vs.110).aspx](https://msdn.microsoft.com/en-us/library/system.servicemodel.netnamedpipebinding(v=vs.110).aspx)을 사용합니다.

# 환경에 대해 향상된 상태 규칙 구성
<a name="health-enhanced-rules"></a>

AWS Elastic Beanstalk 확장 상태 보고는 일련의 규칙에 따라 환경의 상태를 결정합니다. 이러한 규칙의 일부는 특정 애플리케이션에 적합하지 않을 수 있습니다. 다음은 몇 가지 일반적인 예입니다.
+ 클라이언트 측 테스트 도구를 사용합니다. 이 경우 자주 발생하는 HTTP 클라이언트(4xx) 오류가 예상됩니다.
+ [AWS WAF](https://docs.aws.amazon.com/waf/latest/developerguide/)를 환경의 Application Load Balancer와 함께 사용하여 원치 않는 수신 트래픽을 차단합니다. 이 경우 Application Load Balancer는 거부된 각 수신 메시지에 대해 HTTP 403을 반환합니다.

기본적으로 Elastic Beanstalk에는 환경의 상태를 확인할 때 모든 애플리케이션 HTTP 4xx 오류가 포함됩니다. 오류 발생률에 따라 환경 상태가 **정상**에서 **경고**, **성능 저하** 또는 **심각**으로 변경됩니다. 앞서 언급한 예제와 같은 사례를 올바르게 처리하기 위해 Elastic Beanstalk에서는 일부 확장 상태 규칙을 구성할 수 있도록 합니다. 환경 인스턴스에서 애플리케이션 HTTP 4xx 오류를 무시하거나 환경의 로드 밸런서에서 반환된 HTTP 4xx 오류를 무시하도록 선택할 수 있습니다. 이 주제에서는 이러한 구성을 변경하는 방법에 대해 설명합니다.

**참고**  
현재, 이 방법은 유일하게 사용 가능한 향상된 상태 규칙 사용자 지정입니다. 향상된 상태는 4xx 외에 다른 HTTP 오류를 무시하도록 구성할 수 없습니다.

## Elastic Beanstalk 콘솔을 사용하여 확장 상태 규칙 구성
<a name="health-enhanced-rules.console"></a>

Elastic Beanstalk 콘솔을 사용하여 해당 환경에서 확장 상태 규칙을 구성할 수 있습니다.

**Elastic Beanstalk 콘솔을 사용하여 HTTP 4xx 상태 코드 확인을 구성하려면**

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

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

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

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

1. **상태 모니터링 규칙 사용자 지정**에서 원하는 **무시** 옵션을 활성화하거나 비활성화합니다.  
![\[Elastic Beanstalk 콘솔의 모니터링 구성 페이지의 상태 모니터링 규칙 사용자 지정 섹션\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/images/enhanced-health-rule-customization.png)

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

## EB CLI를 사용하여 향상된 상태 규칙 구성
<a name="health-enhanced-rules.ebcli"></a>

EB CLI에서 환경 구성을 로컬로 저장하고, 확장 상태 규칙을 구성하는 항목을 추가한 후 구성을 Elastic Beanstalk에 업로드하여 확장 상태 규칙을 구성할 수 있습니다. 생성 중 또는 생성 후 저장된 구성을 환경에 적용할 수 있습니다.

**EB CLI 및 저장된 구성을 사용하여 HTTP 4xx 상태 코드 검사를 구성하려면**

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` 키를 추가하여 구성하려는 강화된 상태 규칙을 목록을 표시합니다. 다음 `ConfigDocument`는 로드 밸런서 HTTP 4xx 코드 검사를 활성화된 상태로 유지하면서 애플리케이션 HTTP 4xx 상태 코드의 검사를 비활성화합니다.

   ```
   OptionSettings:
     ...
     aws:elasticbeanstalk:healthreporting:system:
       ConfigDocument:
         Rules:
           Environment:
             Application:
               ApplicationRequests4xx:
                 Enabled: false
             ELB:
               ELBRequests4xx:
                 Enabled: true
         Version: 1
       SystemType: enhanced
   ...
   ```
**참고**  
`Rules`와 `CloudWatchMetrics`를 동일한 `ConfigDocument` 옵션 설정에 결합할 수 있습니다. `CloudWatchMetrics`는 [환경에 대한 Amazon CloudWatch 사용자 지정 측정치 게시](health-enhanced-cloudwatch.md)를 참조하세요.  
이전에 `CloudWatchMetrics`를 활성화한 경우 **eb config save** 명령을 사용하여 검색하는 구성 파일에 이미 `ConfigDocument` 섹션을 포함하는 `CloudWatchMetrics` 키가 있습니다. *이것을 삭제하지 마세요*. 동일한 `ConfigDocument` 옵션 값에 `Rules` 섹션을 추가합니다.

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-rules.configdocument"></a>

강화된 상태 규칙에 대한 구성(config) 문서는 구성할 규칙이 나열된 JSON 문서입니다.

다음 예제에서는 애플리케이션 HTTP 4xx 상태 코드 검사를 비활성화하고, 로드 밸런서 HTTP 4xx 상태 코드 검사를 활성화하는 구성 문서를 보여줍니다.

```
{
  "Rules": {
    "Environment": {
      "Application": {
        "ApplicationRequests4xx": {
          "Enabled": false
        }
      },
      "ELB": {
        "ELBRequests4xx": {
          "Enabled": true
        }
      }
    }
  },
  "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": "{\"Rules\": { \"Environment\": { \"Application\": { \"ApplicationRequests4xx\": { \"Enabled\": false } }, \"ELB\": { \"ELBRequests4xx\": {\"Enabled\": true } } } }, \"Version\": 1 }"
    }
]'
```

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

```
  option_settings:
    - namespace: aws:elasticbeanstalk:healthreporting:system
      option_name: ConfigDocument
      value: {
  "Rules": {
    "Environment": {
      "Application": {
        "ApplicationRequests4xx": {
          "Enabled": false
        }
      },
      "ELB": {
        "ELBRequests4xx": {
          "Enabled": true
        }
      }
    }
  },
  "Version": 1
}
```

# 환경에 대한 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
}
```

# Elastic Beanstalk API로 확장 상태 보고 사용
<a name="health-enhanced-api"></a>

 AWS Elastic Beanstalk 확장 상태 보고에는 역할 및 솔루션 스택 요구 사항이 있으므로 확장 상태 보고 릴리스 전에 사용한 스크립트와 코드를 업데이트해야 사용할 수 있습니다. 이전 버전과의 호환성을 유지하기 위해, Elastic Beanstalk API에서 환경을 생성할 때는 기본적으로 확장 상태 보고가 활성화되어 있지 않습니다.

환경에 대한 서비스 역할, 인스턴스 프로파일, Amazon CloudWatch 구성 옵션을 설정하여 확장 상태 보고를 구성합니다. 세 가지 방법으로 이를 수행할 수 있습니다. `.ebextensions` 폴더의 구성 옵션을 설정하거나, 저장된 구성을 사용하거나, `create-environment` 호출의 `option-settings` 파라미터에서 직접 이를 구성하면 됩니다.

API, SDKs 또는 AWS 명령줄 인터페이스(CLI)를 사용하여 향상된 상태를 지원하는 환경을 생성하려면 다음을 수행해야 합니다.
+ 적절한 [권한](concepts-roles.md)이 있는 서비스 역할과 인스턴스 프로파일 생성
+ 새 [플랫폼 버전](concepts.platforms.md)으로 새 환경을 생성합니다.
+ 상태 시스템 유형, 인스턴스 프로파일, 서비스 역할 [구성 옵션](command-options.md) 설정

`aws:elasticbeanstalk:healthreporting:system`, `aws:autoscaling:launchconfiguration`, `aws:elasticbeanstalk:environment` 네임스페이스의 다음 구성 옵션을 사용하여 확장 상태 보고를 위한 환경을 구성합니다.

## 향상된 상태 구성 옵션
<a name="health-enhanced-api-options"></a>

**SystemType**

네임스페이스: `aws:elasticbeanstalk:healthreporting:system`

확장 상태 보고를 활성화하려면 **enhanced**로 설정합니다.

**IamInstanceProfile**

네임스페이스: `aws:autoscaling:launchconfiguration`

Elastic Beanstalk에서 사용하도록 구성된 인스턴스 프로파일의 이름으로 설정합니다.

**ServiceRole**

네임스페이스: `aws:elasticbeanstalk:environment`

Elastic Beanstalk에서 사용하도록 구성된 서비스 역할의 이름으로 설정합니다.

**ConfigDocument**(선택 사항)

네임스페이스: `aws:elasticbeanstalk:healthreporting:system`

인스턴스와 환경 측정치를 정의하여 CloudWatch에 게시하는 JSON 문서입니다. 예:

```
{
  "CloudWatchMetrics":
    {
    "Environment":
      {
      "ApplicationLatencyP99.9":60,
      "InstancesSevere":60
      }
    "Instance":
      {
      "ApplicationLatencyP85":60,
      "CPUUser": 60
      }
    }
  "Version":1
}
```

**참고**  
Elastic Beanstalk에 구성 문서를 제공하는 방법에 따라 이스케이프 따옴표와 같은 특수 서식이 필요할 수 있습니다. [사용자 지정 지표 구성 문서 제공](health-enhanced-cloudwatch.md#health-enhanced-cloudwatch-configdocument)의 예제를 참조하세요.

# 향상된 상태 로그 형식
<a name="health-enhanced-serverlogs"></a>

AWS Elastic Beanstalk 플랫폼은 사용자 지정 웹 서버 로그 형식을 사용하여 HTTP 요청에 대한 정보를 향상된 상태 보고 시스템에 효율적으로 전달합니다. 시스템에서 로그를 분석하고 문제를 식별하며 그에 따라 인스턴스 및 환경 상태를 설정합니다. 환경에서 웹 서버 프록시를 비활성화하고 웹 컨테이너에서 요청을 직접 서비스하는 경우에도 [Elastic Beanstalk 상태 확인 에이전트](health-enhanced.md#health-enhanced-agent)가 사용하는 위치와 형식으로 로그를 출력하도록 서버를 구성하여 확장 상태 확인 보고를 최대한 활용할 수 있습니다.

**참고**  
이 페이지의 정보는 Linux 기반 플랫폼에만 관련되어 있습니다. Windows Server 플랫폼에서 Elastic Beanstalk가 IIS 웹 서버로부터 직접 HTTP 요청에 대한 정보를 수신합니다. 자세한 내용은 [Windows Server의 IIS에서 웹 서버 지표 캡처](health-enhanced-metrics-server-iis.md)을 참조하세요.

## 웹 서버 로그 구성
<a name="health-enhanced-serverlogs.configure"></a>

Elastic Beanstalk 플랫폼은 HTTP 요청에 대한 정보가 포함된 두 개의 로그를 출력하도록 구성됩니다. 첫 번째는 상세 표시 형식이며 요청자의 사용자 에이전트 정보 및 사람이 읽을 수 있는 타임스탬프를 포함하여 요청에 대한 세부 정보를 제공합니다.

**/var/log/nginx/access.log**  
다음 예제는 Ruby 웹 서버 환경에서 실행되는 nginx 프록시에서 나온 것이지만, 형식은 Apache와 비슷합니다.

```
172.31.24.3 - - [23/Jul/2015:00:21:20 +0000] "GET / HTTP/1.1" 200 11 "-" "curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3" "177.72.242.17"
172.31.24.3 - - [23/Jul/2015:00:21:21 +0000] "GET / HTTP/1.1" 200 11 "-" "curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3" "177.72.242.17"
172.31.24.3 - - [23/Jul/2015:00:21:22 +0000] "GET / HTTP/1.1" 200 11 "-" "curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3" "177.72.242.17"
172.31.24.3 - - [23/Jul/2015:00:21:22 +0000] "GET / HTTP/1.1" 200 11 "-" "curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3" "177.72.242.17"
172.31.24.3 - - [23/Jul/2015:00:21:22 +0000] "GET / HTTP/1.1" 200 11 "-" "curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3" "177.72.242.17"
```

두 번째 로그는 terse 형식입니다. 아 로그에는 확장 상태 보고에만 관련된 정보가 포함됩니다. 이 로그는 `healthd`라는 하위 폴더에 출력되며 매시간 교체됩니다. 기존 로그는 교체된 후 즉시 삭제됩니다.

**/var/log/nginx/healthd/application.log.2015-07-23-00**  
다음 예제에서는 머신 판독 가능 형식의 로그를 보여 줍니다.

```
1437609879.311"/"200"0.083"0.083"177.72.242.17
1437609879.874"/"200"0.347"0.347"177.72.242.17
1437609880.006"/bad/path"404"0.001"0.001"177.72.242.17
1437609880.058"/"200"0.530"0.530"177.72.242.17
1437609880.928"/bad/path"404"0.001"0.001"177.72.242.17
```

확장 상태 로그 형식에는 다음 정보가 포함됩니다.
+ Unix 시간으로 표시된 요청의 시간
+ 요청의 경로
+ 요청에 대한 HTTP 상태 코드
+ 요청 시간
+ 업스트림 시간
+ `X-Forwarded-For` HTTP 헤더

nginx 프록시의 경우 시간은 세 자리의 부동 소수점 초로 인쇄됩니다. Apache의 경우 전체 마이크로초가 사용됩니다.

**참고**  
로그 파일에서 다음과 같은 경고가 보이는 경우, 여기서 `DATE-TIME`은 날짜 및 시간이며, 멀티컨테이너 Docker 환경에서와 같이 사용자 지정 프록시를 사용합니다. 이 경우 `healthd`가 로그 파일을 읽을 수 있도록 .ebextension을 사용하여 환경을 구성해야 합니다.  

```
W, [DATE-TIME #1922] WARN -- : log file "/var/log/nginx/healthd/application.log.DATE-TIME" does not exist
```
[멀티컨테이너 Docker 샘플](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/samples/docker-multicontainer-v2.zip)에서 .ebextension으로 시작할 수 있습니다.

**/etc/nginx/conf.d/webapp\$1healthd.conf**  
다음 예제에서는 `healthd` 로그 형식이 강조 표시된 nginx에 대한 로그 구성을 보여 줍니다.

```
upstream my_app {
  server unix:///var/run/puma/my_app.sock;
}

log_format healthd '$msec"$uri"'
                '$status"$request_time"$upstream_response_time"'
                '$http_x_forwarded_for';

server {
  listen 80;
  server_name _ localhost; # need to listen to localhost for worker tier

  if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})T(\d{2})") {
    set $year $1;
    set $month $2;
    set $day $3;
    set $hour $4;
  }

  access_log  /var/log/nginx/access.log  main;
  access_log /var/log/nginx/healthd/application.log.$year-$month-$day-$hour healthd;

  location / {
    proxy_pass http://my_app; # match the name of upstream directive which is defined above
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }

  location /assets {
    alias /var/app/current/public/assets;
    gzip_static on;
    gzip on;
    expires max;
    add_header Cache-Control public;
  }

  location /public {
    alias /var/app/current/public;
    gzip_static on;
    gzip on;
    expires max;
    add_header Cache-Control public;
  }
}
```

**/etc/httpd/conf.d/healthd.conf**  
다음 예제는 Apache용 로그 구성을 보여 줍니다.

```
LogFormat "%{%s}t\"%U\"%s\"%D\"%D\"%{X-Forwarded-For}i" healthd
CustomLog "|/usr/sbin/rotatelogs /var/log/httpd/healthd/application.log.%Y-%m-%d-%H 3600" healthd
```

## 향상된 상태 보고를 위한 로그 생성
<a name="health-enhanced-serverlogs.generate"></a>

상태 에이전트에 로그를 제공하려면 다음을 수행해야 합니다.
+ 이전 단원의 설명과 같이 올바른 형식의 로그 출력
+ `/var/log/nginx/healthd/`에 로그 출력
+ 다음 형식을 사용하여 로그에 이름 지정. `application.log.$year-$month-$day-$hour` 
+ 시간당 한 번 로그 교체
+ 로그를 자르지 마세요.

# 알림 및 문제 해결
<a name="environments-health-enhanced-notifications"></a>

**AI 지원 문제 해결을 위해 Amazon Q Developer CLI 사용**  
 Amazon Q Developer CLI를 사용하면 환경 문제를 신속하게 해결할 수 있습니다. Q CLI는 환경 상태를 확인하고, 이벤트를 검토하고, 로그를 분석하고, 명확한 질문을 하여 솔루션을 제공합니다. 자세한 내용과 자세한 안내는 AWS 블로그의 [Amazon Q Developer CLI를 사용한 Elastic Beanstalk 환경 문제 해결을 ](https://aws.amazon.com/blogs/devops/troubleshooting-elastic-beanstalk-environments-with-amazon-q-developer-cli/) 참조하세요.

이 페이지에는 일반적인 문제에 대한 메시지 예와 추가 정보 링크가 나와 있습니다. Elastic Beanstalk 콘솔의 [환경 개요 창](environments-dashboard-envoverview.md)에 메시지가 표시되며, 여러 차례의 확인에서 상태 문제가 지속될 경우 [이벤트](using-features.events.md)에 기록됩니다.

## 배포
<a name="environments-health-enhanced-notifications-deployments"></a>

Elastic Beanstalk는 환경을 모니터링하여 배포 이후 일관성 여부를 확인합니다. 롤링 배포에 실패하면 환경의 인스턴스에서 실행되는 애플리케이션 버전이 다를 수 있습니다. 하나 이상의 배치에서 배포에 성공했으나 모든 배치가 완료되기 전에 실패한 경우 이 문제가 발생할 수 있습니다.

*인스턴스 5개 중 2개에서 잘못된 애플리케이션 버전이 발견되었습니다. 예상되는 버전은 "v1"(배포 1)입니다.*

*환경 인스턴스에 잘못된 애플리케이션 버전이 있습니다. 예상되는 버전은 "v1"(배포 1)입니다.*

예상되는 애플리케이션 버전이 환경의 일부 또는 모든 인스턴스에서 실행되지 않습니다.

*v2"(배포 2)는 잘못된 애플리케이션 버전입니다. 예상되는 버전은 "v1"(배포 1)입니다.*

인스턴스에 배포된 애플리케이션이 예상되는 버전과 다릅니다. 배포에 실패하면 예상되는 버전이 가장 최근에 성공한 배포의 버전으로 재설정됩니다. 위 예에서는 첫 번째 배포(버전 "v1")는 성공했으나 두 번째 배포(버전 "v2")는 실패했습니다. "v2"를 실행하는 모든 인스턴스가 비정상으로 간주됩니다.

이 문제를 해결하려면 다른 배포를 시작하세요. 작동하는 [이전 버전을 다시 배포](using-features.deploy-existing-version.md)하거나, 배포 중에 [상태 확인을 무시](using-features.rolling-version-deploy.md#environments-cfg-rollingdeployments-console)하고 새 버전을 다시 배포하여 배포를 강제로 완료하도록 환경을 구성할 수 있습니다.

잘못된 애플리케이션 버전을 실행하는 인스턴스를 찾아 이를 종료할 수도 있습니다. Elastic Beanstalk는 올바른 버전이 있는 인스턴스를 시작하여 사용자가 종료한 인스턴스를 바꿉니다. [EB CLI 상태 명령](health-enhanced-ebcli.md)을 사용하여 잘못된 애플리케이션 버전을 실행하는 인스턴스를 찾습니다.

## 애플리케이션 서버
<a name="environments-health-enhanced-notifications-webapp"></a>

*요청의 15%에 HTTP 4xx 오류 발생*

*ELB에 대한 요청의 20%에 HTTP 4xx 오류가 발생하고 있습니다.*

인스턴스 또는 환경에 대한 HTTP 요청 중 많은 수가 4xx 오류로 실패하고 있습니다.

400 시리즈 상태 코드는 사용자가 존재하지 않는 페이지 요청(404 파일 없음) 등의 잘못된 요청을 했거나 사용자에게 액세스 권한이 없음(403 사용 권한 없음)을 나타냅니다. 적은 수의 404 오류가 발생하는 것은 흔한 일이지만, 대부분은 사용할 수 없는 페이지로 연결되는 내부 또는 외부 링크가 있음을 의미합니다. 잘못된 내부 링크를 수정하고 잘못된 외부 링크에 대한 리디렉션을 추가하여 이러한 문제를 해결할 수 있습니다.

*요청의 5%가 HTTP 5xx로 실패*

*ELB에 대한 요청의 3%가 HTTP 5xx로 실패하고 있습니다.*

인스턴스 또는 환경에 대한 HTTP 요청 중 많은 수가 500 시리즈 상태 코드로 실패하고 있습니다.

500 시리즈 상태 코드는 애플리케이션 서버에 내부 오류가 발생했음을 나타냅니다. 이러한 문제는 애플리케이션 코드에 오류가 있으며 신속하게 발견하여 해결해야 함을 나타냅니다.

*CPU의 95%를 사용 중*

인스턴스에 대해 상태 에이전트가 매우 높은 CPU 사용량을 보고하고 있으며, 인스턴스 상태를 **경고** 또는 **성능 저하**로 설정합니다.

인스턴스의 로드를 줄이도록 환경을 조정하세요.

## 작업자 인스턴스
<a name="environments-health-enhanced-notifications-worker"></a>

*대기열에서 메시지 20개 대기 중(25초 전)*

요청을 처리할 수 있는 속도보다 더 빠르게 요청이 작업자 환경의 대기열에 추가되고 있습니다. 용량을 늘리도록 환경을 조정하세요.

*배달 못한 편지 대기열의 메시지 5개(15초 전)*

작업자 요청이 반복적으로 실패하여 [Dead Letter Queue(DLQ)](using-features-managing-env-tiers.md#worker-deadletter)에 추가되고 있습니다. 배달 못한 편지 대기열에서 요청을 확인하여 실패 이유를 알아보세요.

## 기타 리소스
<a name="environments-health-enhanced-notifications-other"></a>

*활성 인스턴스가 4개로 Auto Scaling 그룹 최소 크기인 5보다 작음*

환경에서 실행되는 인스턴스 수가 Auto Scaling 그룹에 대해 구성된 최소 수보다 작습니다.

*Auto Scaling 그룹(groupname) 알림이 삭제되었거나 수정됨*

Auto Scaling 그룹에 대해 구성된 알림이 Elastic Beanstalk 외부에서 수정되었습니다.

# AI 기반 환경 분석
<a name="health-ai-analysis"></a>

AWS Elastic Beanstalk의 AI 기반 분석은 근본 원인을 식별하고 환경 상태 문제에 대한 솔루션을 권장합니다. 환경에 문제가 발생하면 `analyze` 정보 유형과 함께 `RequestEnvironmentInfo` 및 `RetrieveEnvironmentInfo` API 작업을 사용하여 AI 분석을 요청하여 AI 생성 인사이트와 권장 솔루션을 얻을 수 있습니다.

**참고**  
AI 분석은 2026년 2월 16일 또는 그 이후에 릴리스된 지원되는 Amazon Linux 2 및 AL2023 플랫폼 버전에서만 사용할 수 있습니다.

## 작동 방식
<a name="health-ai-analysis-how-it-works"></a>

AI 분석을 요청하면 Elastic Beanstalk는 환경의 인스턴스에서 최근 이벤트, 인스턴스 상태 및 로그(최대 170,000개의 데이터 [토큰](https://docs.aws.amazon.com/bedrock/latest/userguide/key-definitions.html))를 수집하는 스크립트를 실행합니다. 그런 다음이 데이터를 계정의 Amazon Bedrock으로 전송하고 인사이트와 권장 다음 단계를 반환합니다.

## 사전 조건
<a name="health-ai-analysis-prereqs"></a>

AI 분석을 사용하기 전에 환경이 다음 요구 사항을 충족하는지 확인합니다.
+ [지원되는 플랫폼 버전을](#health-ai-analysis-supported-platforms) 실행하는 환경
+ 필요한 권한이 있는 [인스턴스 프로파일](iam-instanceprofile.md)([필수 권한](#health-ai-analysis-permissions)아래 참조)
+ **Anthropic 사용 사례 세부 정보** - AI 분석은 Amazon Bedrock을 통해 Anthropic Claude 모델을 사용합니다. Anthropic에서는 모델을 호출하기 전에 일회용 사용 사례 세부 정보 양식을 제출해야 합니다. 이 양식을 제출하려면 [Amazon Bedrock 콘솔](https://console.aws.amazon.com/bedrock/)의 모델 카탈로그에서 Anthropic 모델을 선택하거나 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_PutUseCaseForModelAccess.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_PutUseCaseForModelAccess.html) API를 호출합니다. 이 작업은 AWS 계정당 한 번만 수행하면 됩니다. AWS Organizations 관리 계정에서 양식을 제출하면 조직의 모든 멤버 계정이 자동으로 포함됩니다. 자세한 내용은 [Amazon Bedrock 파운데이션 모델 액세스를](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html) 참조하세요.
+ **GovCloud 리전** - AWS GovCloud(미국) 리전을 사용하는 경우 AI 분석을 사용하기 전에 Amazon Bedrock에서 최신 Anthropic Claude Sonnet 및/또는 Opus 모델에 대한 액세스를 활성화해야 합니다. GovCloud 리전에서 모델 액세스를 활성화[하는 방법에 대한 지침은 Amazon Bedrock 파운데이션 모델에 대한 액세스 관리를](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html#model-access-govcloud) 참조하세요. 사용 가능한 최신 Anthropic Claude Sonnet 및/또는 Opus 모델에 대한 자세한 내용은 [추론 프로파일에 대해 지원되는 리전 및 모델을 참조하세요](https://docs.aws.amazon.com/bedrock/latest/userguide/inference-profiles-support.html).

## 필수 권한
<a name="health-ai-analysis-permissions"></a>

AI 분석을 사용하려면 환경의 Amazon EC2 인스턴스 프로파일에 Amazon Bedrock을 호출할 권한이 있어야 합니다. 인스턴스 프로파일에 다음 권한을 추가합니다.
+ `bedrock:InvokeModel`
+ `bedrock:ListFoundationModels`
+ `elasticbeanstalk:DescribeEvents`
+ `elasticbeanstalk:DescribeEnvironmentHealth`

인스턴스 프로파일 구성에 대한 자세한 내용은 섹션을 참조하세요[Elastic Beanstalk 인스턴스 프로파일 관리](iam-instanceprofile.md).

## 콘솔에서 AI 분석 사용
<a name="health-ai-analysis-console"></a>

**환경 개요에서**  
환경의 상태가 **경고**, **성능 저하** 또는 **심각**이면 환경 개요 섹션에 **AI 분석** 버튼이 나타납니다. 환경에 대한 AI 분석을 시작하려면이 버튼을 클릭합니다.

**로그 페이지에서**  
탐색 창의 **로그** 페이지에서 AI 분석에 액세스할 수도 있습니다. **AI 분석** 버튼을 클릭하여 환경의 현재 상태에 대한 AI 기반 분석을 요청합니다.

## 에서 AI 분석 사용 AWS CLI
<a name="health-ai-analysis-api"></a>

를 통해 Elastic Beanstalk API AWS CLI 를 사용하여 프로그래밍 방식으로 AI 분석을 요청하고 검색할 수 있습니다.

**AI 분석 요청**  
`InfoType` 파라미터가 로 설정된 상태에서 [https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_RequestEnvironmentInfo.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_RequestEnvironmentInfo.html) 작업을 사용합니다`analyze`.

**Example AWS CLI - AI 분석 요청**  

```
aws elasticbeanstalk request-environment-info \
    --environment-name my-env \
    --info-type analyze \
    --region us-east-1
```

**AI 분석 검색**  
`InfoType` 파라미터가 로 설정된 [https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_RetrieveEnvironmentInfo.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_RetrieveEnvironmentInfo.html) 작업을 사용하여 분석 결과를 `analyze` 검색합니다.

**Example AWS CLI - AI 분석 검색**  

```
aws elasticbeanstalk retrieve-environment-info \
    --environment-name my-env \
    --info-type analyze \
    --region us-east-1
```

응답에는 식별된 문제에 대한 권장 솔루션과 함께 환경의 현재 상태에 대한 AI 생성 분석이 포함됩니다.

## EB CLI에서 AI 분석 사용
<a name="health-ai-analysis-ebcli"></a>

EB CLI를 사용하는 경우 **eb logs** 명령의 `--analyze` (`-ai`) 옵션을 사용하여 AI 분석을 요청할 수 있습니다. 명령은 분석을 요청하고 완료될 때까지 기다린 다음 결과를 표시합니다.

**Example EB CLI - AI 분석 요청**  

```
$ eb logs --analyze
```

`--analyze` 옵션은 `--instance`, `--all`, `--zip`또는와 호환되지 않습니다`--log-group`. 전체 명령 참조는 섹션을 참조하세요[**eb logs**](eb3-logs.md).

**참고**  
`--analyze` 옵션에는 EB CLI 버전 3.27 이상이 필요합니다.

## 중요 고려 사항
<a name="health-ai-analysis-considerations"></a>
+ **요금** - AI 분석은 Amazon Bedrock을 사용하여 환경 데이터를 처리하고 모델 호출에는 표준 Amazon Bedrock 요금이 적용됩니다. 요금 세부 정보는 [Amazon Bedrock 요금](https://aws.amazon.com/bedrock/pricing/)을 참조하세요.
+ **플랫폼 요구 사항** - AI 분석은 2026년 2월 16일 또는 그 이후에 릴리스된 Amazon Linux 2 및 AL2023 기반 플랫폼 버전에서만 사용할 수 있습니다. 이 기능을 사용하려면 환경을 지원되는 플랫폼 버전으로 업데이트합니다. 자세한 내용은 [Elastic Beanstalk 환경의 플랫폼 버전 업데이트](using-features.platform.upgrade.md) 단원을 참조하십시오.
+ **권한** - AI 분석을 사용하기 전에 인스턴스 프로파일에 필요한 Amazon Bedrock 권한(`bedrock:InvokeModel` 및 `bedrock:ListFoundationModels`)과 Elastic Beanstalk 권한(`elasticbeanstalk:DescribeEvents` 및 )이 있는지 확인합니다`elasticbeanstalk:DescribeEnvironmentHealth`.
+ **데이터 개인 정보 보호** - 분석은 처리를 위해 환경 이벤트와 로그를 계정의 Amazon Bedrock으로 전송합니다. Amazon Bedrock이 데이터를 처리하는 방법에 대한 자세한 내용은 [Amazon Bedrock 보안 및 규정 준수를](https://aws.amazon.com/bedrock/security-compliance/) 참조하세요.
+ **서비스 할당량 **- AI 분석은 분당 요청 수와 분당 토큰 수에 대한 기본 할당량이 있는 Amazon Bedrock의 Anthropic Claude 모델을 사용합니다. 제한 오류가 발생하면 할당량 증가를 요청할 수 있습니다. 자세한 내용은 [할당량 증가 요청](https://docs.aws.amazon.com/servicequotas/latest/userguide/request-quota-increase.html)을 참조하세요.

## 지원되는 플랫폼 버전
<a name="health-ai-analysis-supported-platforms"></a>

AI 분석은 2026년 2월 16일 또는 그 이후에 릴리스된 Amazon Linux 2 및 AL2023 기반 플랫폼 버전에서 지원됩니다. [RELEASE_NOTES_URL](RELEASE_NOTES_URL) 플랫폼 버전을 확인하려면 [Elastic Beanstalk 릴리스 정보를](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/welcome.html) 참조하세요.