

# 인프라 모니터링
<a name="CloudWatch-Insights-Sections"></a>

이 섹션의 주제에서는 AWS 리소스에 대한 운영 가시성을 확보하는 데 도움이 되는 CloudWatch 기능에 대해 설명합니다.

**Topics**
+ [Container Insights](ContainerInsights.md)
+ [Lambda Insights](Lambda-Insights.md)
+ [CloudWatch Database Insights](Database-Insights.md)
+ [Contributor Insights를 사용하여 카디널리티가 높은 데이터 분석하기](ContributorInsights.md)
+ [CloudWatch Application Insights로 일반적인 애플리케이션 문제 감지](cloudwatch-application-insights.md)
+ [CloudWatch 콘솔에서 리소스 상태 뷰 사용](servicelens_resource_health.md)

# Container Insights
<a name="ContainerInsights"></a>

CloudWatch Container Insights를 사용해 컨테이너화된 애플리케이션 및 마이크로서비스의 지표 및 로그를 수집하고 집계하며 요약할 수 있습니다. Container Insights는 Amazon Elastic Container Service(Amazon ECS), Amazon Elastic Kubernetes Service(Amazon EKS), RedHat OpenShift on AWS(ROSA) 및 Amazon EC2의 Kubernetes 플랫폼에서 사용할 수 있습니다. Container Insights는 Amazon ECS와 Amazon EKS 모두에 대해 AWS Fargate에 배포된 클러스터에서 지표를 수집하는 것을 지원합니다.

CloudWatch는 CPU, 메모리, 디스크, 네트워크와 같은 많은 리소스에 대한 메트릭를 자동으로 수집합니다. 또한 Container Insights는 컨테이너 재시작 오류 같은 진단 정보를 제공하여 문제를 격리하고 신속하게 해결할 수 있도록 도와줍니다. Container Insights가 수집하는 지표에 대해 CloudWatch 경보를 설정할 수도 있습니다.

Container Insights는 [임베디드 지표 형식](CloudWatch_Embedded_Metric_Format.md)을 사용하여 데이터를 **‘성능 로그 이벤트’로 수집합니다. 이러한 성능 로그 이벤트는 카디널리티가 높은 데이터를 대규모로 수집 및 저장할 수 있게 하는 구조화된 JSON 스키마를 사용하는 항목입니다. 이 데이터를 기반으로 CloudWatch는 클러스터, 노드, 포드, 태스크 및 서비스 수준에서 집계된 지표를 CloudWatch 지표로 생성합니다. Container Insights가 수집하는 지표는 CloudWatch 자동 대시보드에서 사용할 수 있으며 CloudWatch 콘솔의 **지표** 섹션에서도 볼 수 있습니다. 컨테이너 작업이 일정 시간 동안 실행될 때까지는 지표가 표시되지 않습니다.

컨테이너 인사이트를 배포하면 성능 로그 이벤트에 대한 로그 그룹이 자동으로 생성됩니다. 이 로그 그룹을 직접 생성할 필요는 없습니다.

Container Insights 비용 관리에 도움이 되도록 CloudWatch는 로그 데이터에서 가능한 모든 지표를 자동으로 생성하지 않습니다. 그러나 CloudWatch Logs Insights를 사용하여 원시 성능 로그 이벤트를 분석하면 추가 지표 및 추가 세부 수준을 확인할 수 있습니다.

Container Insights의 원래 버전에서는 수집된 지표와 로그가 사용자 지정 지표로 청구됩니다. Amazon EKS의 향상된 관찰 기능을 갖춘 Container Insights를 사용하면 Container Insights 지표 및 로그는 저장된 지표나 수집된 로그별로 요금이 부과되는 대신 관찰당 요금이 부과됩니다. CloudWatch 요금에 대한 자세한 내용은 [Amazon CloudWatch 요금](https://aws.amazon.com/cloudwatch/pricing/)을 참조하세요.

**[미리 보기]** Amazon EKS의 경우 OpenTelemetry를 사용하는 Container Insights는 OTLP(OpenTelemetry Protocol)를 사용하여 지표를 수집하고 PromQL 쿼리를 지원하는 추가 지표 모드를 제공합니다. 각 지표는 OpenTelemetry 시맨틱 규칙 속성과 Kubernetes 포드 및 노드 레이블을 포함하여 최대 150개의 레이블로 보강됩니다. 자세한 내용은 [Amazon EKS의 OpenTelemetry 지표가 포함된 Container Insights](container-insights-otel-metrics.md) 섹션을 참조하세요.

Amazon EKS, RedHatOpenshift on AWS 및 Kubernetes에서 Container Insights는 컨테이너화된 버전의 CloudWatch 에이전트를 사용하여 클러스터에서 실행 중인 모든 컨테이너를 검색합니다. 이어서 성능 스택의 모든 계층에서 성능 데이터를 수집합니다.

Container Insights는 자체적으로 수집하는 로그 및 지표에 대해 AWS KMS key를 이용한 암호화를 지원합니다. 이 암호화를 활성화하려면 Container Insights 데이터를 수신하는 로그 그룹에 대한 AWS KMS 암호화를 수동으로 활성화해야 합니다. 이렇게 하면 Container Insights가 제공된 KMS 키를 사용하여 이 데이터를 암호화합니다. 대칭 키만 지원됩니다. 비대칭 KMS 키를 사용하여 로그 그룹을 암호화하지 마세요.

자세한 내용은 [AWS KMS를 사용하여 CloudWatch Logs의 로그 데이터 암호화](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/encrypt-log-data-kms.html) 단원을 참조하세요.

## 지원하는 플랫폼
<a name="container-insights-platforms"></a>

Container Insights는 Amazon Elastic Container Service, Amazon Elastic Kubernetes Service, RedHat OpenShift on AWS 및 Amazon EC2 인스턴스의 Kubernetes 플랫폼에서 사용할 수 있습니다.
+ Amazon ECS의 경우 Container Insights는 Linux 인스턴스와 Windows Server 인스턴스 모두에서 클러스터, 태스크 및 서비스 수준의 지표를 수집합니다. Container Insights는 Linux 인스턴스에서만 인스턴스 레벨에서 지표를 수집할 수 있습니다. 네트워크 지표는 `bridge` 네트워크 모드와 `awsvpc` 네트워크 모드를 사용하는 컨테이너에 사용할 수 있지만, `host` 네트워크 모드를 사용하는 컨테이너에는 사용할 수 없습니다.
+ Amazon Elastic Kubernetes Service 및 Amazon EC2 인스턴스의 Kubernetes 플랫폼에서는 Linux 및 Windows 인스턴스 모두에서 Container Insights가 지원됩니다.
+ **[미리 보기]** Amazon EKS에서 OpenTelemetry 지표가 포함된 Container Insights를 사용할 수 있습니다. 자세한 내용은 [Amazon EKS의 OpenTelemetry 지표가 포함된 Container Insights](container-insights-otel-metrics.md) 섹션을 참조하세요.

# Amazon ECS의 향상된 관찰성을 갖춘 Container Insights
<a name="container-insights-detailed-ecs-metrics"></a>

2024년 12월 2일 AWS에서는 Amazon ECS의 향상된 관찰성을 갖춘 Container Insights를 출시했습니다. 이 버전은 Amazon EC2 및 Fargate 시작 유형을 사용하여 Amazon ECS 클러스터의 관찰성을 향상할 수 있도록 지원합니다. Amazon ECS에서 개선된 관찰성으로 Container Insights를 구성하면, Container Insights는 클러스터 수준에서 환경의 컨테이너 수준까지 상세한 인프라 원격 측정을 자동으로 수집하고, 이러한 중요한 성능 데이터를 큐레이트된 대시보드에 표시하므로 관찰성 설정에서 가중되는 과도한 부담을 없앱니다. 개선된 관찰성을 사용하여 Container Insights를 설정하는 방법에 대한 자세한 내용은 [Amazon ECS에서 Container Insights 설정](deploy-container-insights-ECS-cluster.md) 섹션을 참조하세요.

개선된 관찰성을 갖춘 Container Insights는 모든 Container Insights 지표와 더불어, 추가 작업 및 컨테이너 지표를 제공합니다. 자세한 내용은 [향상된 관찰성 지표를 갖춘 Amazon ECS Container Insights](Container-Insights-enhanced-observability-metrics-ECS.md) 섹션을 참조하세요.

향상된 관찰성을 갖춘 Container Insights는 CloudWatch 교차 계정 관찰성도 지원합니다. 단일 모니터링 계정을 사용하면 단일 리전 내의 여러 AWS 계정에 걸쳐 있는 애플리케이션을 모니터링하고 문제를 해결할 수 있습니다. 자세한 내용은 [CloudWatch 크로스 계정 관찰성](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Unified-Cross-Account.html)을 참조하세요.

# Amazon EKS의 향상된 관찰성을 갖춘 Container Insights
<a name="container-insights-detailed-metrics"></a>

2023년 11월 6일, Container Insights의 새 버전이 출시되었습니다. 이 버전은 Amazon EC2에서 실행되는 Amazon EKS 클러스터의 향상된 관찰 기능을 지원하며 이러한 클러스터에서 더 자세한 지표를 수집할 수 있습니다. 설치 후에는 Amazon EKS 클러스터에 대한 상세한 인프라 텔레메트리 및 컨테이너 로그를 자동으로 수집합니다. 그런 다음 즉시 사용할 수 있는 엄선된 대시보드를 사용하여 애플리케이션 및 인프라 텔레메트리를 자세히 살펴볼 수 있습니다.

Amazon EKS의 향상된 관찰 기능을 갖춘 Container Insights는 컨테이너 수준까지 세분화된 상태, 성능 및 상태 지표와 컨트롤 플레인 지표를 수집합니다. 추가 지표 및 차원의 수집에 대한 자세한 내용은 [Amazon EKS 및 향상된 관찰성 지표를 갖춘 Kubernetes Container Insights](Container-Insights-metrics-enhanced-EKS.md) 섹션을 참조하세요.

2023년 11월 6일 이후에 Amazon EC2의 Amazon EKS 클러스터에 CloudWatch 에이전트를 사용하여 Container Insights를 설치한 경우 Amazon EKS에 대한 관찰성이 향상된 Container Insights를 갖게 됩니다. 그렇지 않으면 [CloudWatch에서 Amazon EKS에 대한 향상된 관찰성을 갖춘 Container Insights로 업그레이드](Container-Insights-upgrade-enhanced.md)의 지침에 따라 Amazon EKS 클러스터를 새 버전으로 업그레이드할 수 있습니다.

Container Insights는 CloudWatch 크로스 계정 관찰성을 지원합니다. 단일 모니터링 계정을 사용하면 단일 리전 내의 여러 AWS 계정에 걸쳐 있는 애플리케이션을 모니터링하고 문제를 해결할 수 있습니다. 자세한 내용은 [CloudWatch 크로스 계정 관측성](CloudWatch-Unified-Cross-Account.md) 섹션을 참조하세요.

Amazon EKS의 향상된 관찰 기능을 갖춘 Container Insights는 Windows 워커 노드도 지원합니다.

Amazon EKS의 향상된 관찰 기능 포함된 Container Insights는 Fargate에서 지원되지 않습니다.

**참고**  
Container Insights 콘솔로 이동하여 Amazon EKS의 향상된 관찰 기능을 갖춘 Container Insights로 업그레이드할 수 있는 클러스터가 있는지 확인할 수 있습니다. 이렇게 하려면 CloudWatch 콘솔의 탐색 창에서 **Insights**, **Container Insights**를 선택합니다. Container Insights 콘솔에는 업그레이드할 수 있는 Amazon EKS 클러스터가 있는지 여부를 알려주는 배너와 업그레이드 페이지 링크가 표시됩니다.

# Amazon EKS의 OpenTelemetry 지표가 포함된 Container Insights
<a name="container-insights-otel-metrics"></a>

**미리 보기**  
OpenTelemetry 지표가 포함된 Container Insights를 통해 Amazon EKS 클러스터 인프라의 운영 상태를 파악할 수 있습니다. 미국 동부(버지니아 북부), 미국 서부(오리건), 유럽(아일랜드), 아시아 태평양(싱가포르), 아시아 태평양(시드니) 리전에서 추가 비용 없이 공개 미리 보기로 제공됩니다.

Amazon CloudWatch Observability EKS 추가 기능은 Amazon EKS 클러스터에서 오픈 소스 지표를 수집하고 30초 단위로 OTLP(OpenTelemetry Protocol)를 사용하여 CloudWatch로 전송합니다. 이러한 지표는 cAdvisor, Prometheus Node Exporter, NVIDIA DCGM, Kube State Metrics, AWS Neuron Monitor를 포함한 원본 소스의 지표 이름을 사용합니다. CloudWatch Query Studio의 PromQL을 사용하거나 Prometheus 호환 쿼리 API를 통해 이러한 지표를 쿼리할 수 있습니다.

각 지표는 OpenTelemetry 시맨틱 규칙 속성과 Kubernetes 포드 및 노드 레이블을 포함하여 최대 150개의 레이블로 자동 보강됩니다. PromQL은 쿼리 시간에 집계를 처리하므로 각 지표는 여러 집계 수준이 아닌 리소스당 한 번만 게시됩니다. 또한 추가 기능은 AWS Neuron 및 AWS Elastic Fabric Adapter의 액셀러레이터 지표를 이를 사용하는 특정 포드 및 컨테이너와 연관시켜 지표 소스만으로는 제공되지 않는 가시성을 제공합니다.

Amazon EKS 클러스터에서 OTel Container Insights를 활성화하려면 Amazon EKS 콘솔 또는 코드형 인프라를 통해 Amazon CloudWatch Observability EKS 추가 기능 `v6.0.1-eksbuild.1` 이상 버전을 설치합니다.

OTel Container Insights 설정에 대한 자세한 내용은 [Container Insights 설정](deploy-container-insights.md) 섹션을 참조하세요.

PromQL을 통한 이러한 지표의 쿼리에 대한 자세한 내용은 [PromQL 쿼리](CloudWatch-PromQL-Querying.md) 섹션을 참조하세요.

## OTel Container Insights와 Container Insights(기능 향상) 비교
<a name="container-insights-otel-comparison"></a>

다음 표에서는 Container Insights(기능 향상)와 OTel Container Insights의 차이점이 요약되어 있습니다.


| 기능 | Container Insights(기능 향상) | OTel Container Insights | 
| --- | --- | --- | 
| 지표 이름 | CloudWatch 형식 지표(예: pod\$1cpu\$1utilization) | 오픈 소스 네이티브(예: container\$1cpu\$1usage\$1seconds\$1total) | 
| 지표당 레이블 | 지표당 사전 정의된 차원 3\$16개 | 모든 Kubernetes 포드 및 노드 레이블을 포함하여 최대 150개 레이블 | 
| 집계 | 여러 수준(클러스터, 네임스페이스, 워크로드, 포드)에서 사전 집계 | 원시 리소스별 지표, PromQL을 사용하여 쿼리 시간에 집계 | 
| 쿼리 언어 | CloudWatch Metrics API | PromQL(Prometheus 호환) | 
| 지표 수집 | CloudWatch Logs(EMF 형식) | OTLP 엔드포인트 | 

## 지표의 레이블 지정 방법
<a name="container-insights-otel-labels"></a>

OTel Container Insights에서 수집되는 각 지표에는 세 가지 소스의 레이블이 있습니다.

텔레메트리 소스 네이티브 레이블  
원본 지표 소스의 레이블(예: cAdvisor는 `pod`, `namespace`, `container` 등의 레이블 제공). 이러한 레이블은 데이터 포인트 속성으로 보존됩니다.

OpenTelemetry 리소스 속성  
추가 기능은 [Kubernetes](https://opentelemetry.io/docs/specs/semconv/resource/k8s/), [호스트](https://opentelemetry.io/docs/specs/semconv/resource/host/) 및 [클라우드](https://opentelemetry.io/docs/specs/semconv/resource/cloud/)에 대한 OpenTelemetry 시맨틱 규칙에 따라 리소스 속성을 추가합니다(예: `k8s.pod.name`, `k8s.namespace.name`, `k8s.node.name`, `host.name`, `cloud.region`). 이러한 속성은 모든 지표 소스에서 일관적입니다.

Kubernetes 포드 및 노드 레이블  
Kubernetes API에서 검색된 모든 포드 레이블과 노드 레이블은 접두사 `k8s.pod.label` 및 `k8s.node.label`와 함께 리소스 속성으로 추가됩니다.

PromQL을 사용하여 이러한 속성을 쿼리하는 방법에 대한 자세한 내용은 [PromQL 쿼리](CloudWatch-PromQL-Querying.md) 섹션을 참조하세요.

## 지원되는 지표
<a name="container-insights-otel-supported-metrics"></a>

다음 표에는 OTel Container Insights에서 수집되는 지표 소스 및 범주가 나열되어 있습니다.


| 지표 소스 | 지표 범주 | 사전 조건 | 
| --- | --- | --- | 
| cAdvisor | CPU 지표 | - | 
| cAdvisor | 메모리 지표 | - | 
| cAdvisor | 네트워크 지표 | - | 
| cAdvisor | 디스크 및 파일 시스템 지표 | - | 
| Prometheus 익스포터 | CPU 지표 | - | 
| Prometheus 익스포터 | 메모리 지표 | - | 
| Prometheus 익스포터 | 디스크 지표 | - | 
| Prometheus 익스포터 | 파일 시스템 지표 | - | 
| Prometheus 익스포터 | 네트워크 지표 | - | 
| Prometheus 익스포터 | 시스템 지표 | - | 
| Prometheus 익스포터 | VMStat 지표 | - | 
| Prometheus 익스포터 | Netstat 및 소켓 지표 | - | 
| NVIDIA DCGM | GPU 사용률 및 성능 지표 | [NVIDIA 디바이스 플러그인](https://github.com/NVIDIA/k8s-device-plugin)과 [NVIDIA 컨테이너 툴킷](https://github.com/NVIDIA/nvidia-container-toolkit)을 설치해야 합니다. | 
| NVIDIA DCGM | GPU 메모리 지표 | [NVIDIA 디바이스 플러그인](https://github.com/NVIDIA/k8s-device-plugin)과 [NVIDIA 컨테이너 툴킷](https://github.com/NVIDIA/nvidia-container-toolkit)을 설치해야 합니다. | 
| NVIDIA DCGM | GPU 전력 및 열 지표 | [NVIDIA 디바이스 플러그인](https://github.com/NVIDIA/k8s-device-plugin)과 [NVIDIA 컨테이너 툴킷](https://github.com/NVIDIA/nvidia-container-toolkit)을 설치해야 합니다. | 
| NVIDIA DCGM | GPU 스로틀링 지표 | [NVIDIA 디바이스 플러그인](https://github.com/NVIDIA/k8s-device-plugin)과 [NVIDIA 컨테이너 툴킷](https://github.com/NVIDIA/nvidia-container-toolkit)을 설치해야 합니다. | 
| NVIDIA DCGM | GPU 오류 및 신뢰성 지표 | [NVIDIA 디바이스 플러그인](https://github.com/NVIDIA/k8s-device-plugin)과 [NVIDIA 컨테이너 툴킷](https://github.com/NVIDIA/nvidia-container-toolkit)을 설치해야 합니다. | 
| NVIDIA DCGM | GPU NVLink 지표 | [NVIDIA 디바이스 플러그인](https://github.com/NVIDIA/k8s-device-plugin)과 [NVIDIA 컨테이너 툴킷](https://github.com/NVIDIA/nvidia-container-toolkit)을 설치해야 합니다. | 
| NVIDIA DCGM | GPU 정보 지표 | [NVIDIA 디바이스 플러그인](https://github.com/NVIDIA/k8s-device-plugin)과 [NVIDIA 컨테이너 툴킷](https://github.com/NVIDIA/nvidia-container-toolkit)을 설치해야 합니다. | 
| AWS Neuron Monitor | NeuronCore 지표 | [Neuron 드라이버](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/general/setup/neuron-setup/pytorch/neuronx/ubuntu/torch-neuronx-ubuntu22.html)와 [Neuron 디바이스 플러그인](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/containers/kubernetes-getting-started.html)을 설치해야 합니다. | 
| AWS Neuron Monitor | NeuronDevice 지표 | [Neuron 드라이버](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/general/setup/neuron-setup/pytorch/neuronx/ubuntu/torch-neuronx-ubuntu22.html)와 [Neuron 디바이스 플러그인](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/containers/kubernetes-getting-started.html)을 설치해야 합니다. | 
| AWS Neuron Monitor | Neuron 시스템 지표 | [Neuron 드라이버](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/general/setup/neuron-setup/pytorch/neuronx/ubuntu/torch-neuronx-ubuntu22.html)와 [Neuron 디바이스 플러그인](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/containers/kubernetes-getting-started.html)을 설치해야 합니다. | 
| AWS Elastic Fabric Adapter | EFA 지표 | [EFA 디바이스 플러그인](https://github.com/aws/eks-charts/tree/master/stable/aws-efa-k8s-device-plugin)을 설치해야 합니다. | 
| NVMe | NVMe SMART 지표 | - | 
| Kube State Metrics | Pod, node, Deployment, DaemonSet, StatefulSet, ReplicaSet, Job, CronJob, Service, Namespace, PersistentVolume, PersistentVolumeClaim 지표 | - | 
| Kubernetes API 서버 | API 서버 및 etcd 지표 | - | 

## CloudWatch 에이전트 컨테이너 이미지
<a name="container-insights-download-limit"></a>

Amazon은 Amazon Elastic Container Registry의 CloudWatch 에이전트 컨테이너 이미지를 제공합니다. 자세한 내용은 Amazon ECR의 [cloudwatch-agent](https://gallery.ecr.aws/cloudwatch-agent/cloudwatch-agent)를 참조하세요.

# Container Insights 설정
<a name="deploy-container-insights"></a>

Amazon ECS, Amazon EKS, Kubernetes에 대한 Container Insights 설정 프로세스는 서로 다릅니다.
+ [Amazon EKS 및 Kubernetes에서 Container Insights 설정](deploy-container-insights-EKS.md)
+ [Amazon ECS에서 Container Insights 설정](deploy-container-insights-ECS.md)

**Topics**
+ [Amazon ECS에서 Container Insights 설정](deploy-container-insights-ECS.md)
+ [Amazon EKS 및 Kubernetes에서 Container Insights 설정](deploy-container-insights-EKS.md)
+ [RedHat OpenShift on AWS(ROSA)에서 Container Insights 설정](deploy-container-insights-RedHatOpenShift.md)

# Amazon ECS에서 Container Insights 설정
<a name="deploy-container-insights-ECS"></a>

다음 옵션 중 하나 또는 둘 다를 사용하여 Amazon ECS 클러스터에서 Container Insights를 사용 설정할 수 있습니다.
+ AWS Management Console 또는 AWS CLI를 사용하여 클러스터 레벨, 작업 레벨 및 서비스 레벨 지표 수집을 시작합니다.
+ CloudWatch 에이전트를 대몬(daemon) 서비스로 배포하여 Amazon EC2 인스턴스에서 호스트되는 클러스터에서 인스턴스 수준 지표 수집을 시작하세요.

**Topics**
+ [Amazon ECS에서 Container Insights 설정](deploy-container-insights-ECS-cluster.md)
+ [AWS Distro for OpenTelemetry를 사용하여 Amazon ECS에서 Container Insights 설정](deploy-container-insights-ECS-adot.md)
+ [CloudWatch 에이전트를 배포하여 Amazon ECS의 EC2 인스턴스 수준 지표 수집](deploy-container-insights-ECS-instancelevel.md)
+ [AWS Distro for OpenTelemetry를 배포하여 Amazon ECS 클러스터의 EC2 인스턴스 수준 지표 수집](deploy-container-insights-ECS-OTEL.md)
+ [CloudWatch Logs에 로그를 전송하도록 FireLens 설정](deploy-container-insights-ECS-logs.md)

# Amazon ECS에서 Container Insights 설정
<a name="deploy-container-insights-ECS-cluster"></a>

Amazon ECS 콘솔 또는 AWS CLI를 사용하면 새 Amazon ECS 클러스터와 기존 Amazon ECS 클러스터에서 향상된 관찰성을 갖춘 Container Insights 또는 Container Insights를 설정할 수 있습니다. Container Insights는 클러스터, 작업 및 서비스 레벨에서 지표를 수집합니다. 향상된 관찰성을 갖춘 Container Insights는 추가적인 차원과 지표를 제공하므로, 컨테이너 수준 가시성을 심층적으로 파악할 수 있습니다.

Amazon EC2 인스턴스에서 Amazon ECS를 사용하는 경우, Amazon ECS 에이전트 버전 1.29 이상이 포함된 AMI를 사용하여 해당 인스턴스를 시작합니다. 에이전트 버전 업데이트에 대한 자세한 내용은 [Amazon ECS 컨테이너 에이전트 업데이트](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-update.html) 섹션을 참조하세요.

**참고**  
Amazon ECS Container Insights 지표에 사용하는 고객 관리 AWS KMS 키가 CloudWatch와 함께 작동하도록 아직 구성되지 않은 경우, CloudWatch Logs에서 암호화된 로그를 허용하도록 키 정책을 업데이트해야 합니다. 또한 사용자 고유의 AWS KMS 키를 `/aws/ecs/containerinsights/ClusterName/performance`의 로그 그룹과 연결해야 합니다. 자세한 내용은 [AWS Key Management Service를 사용하여 CloudWatch Logs의 로그 데이터 암호화](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/encrypt-log-data-kms.html) 섹션을 참조하세요.

Container Insights 대신 개선된 관찰성을 갖춘 Container Insights를 사용하는 것이 좋습니다. 컨테이너 환경에서 세부적인 가시성을 제공하여 평균 해결 시간을 단축하기 때문입니다.

## 향상된 관찰 기능을 갖춘 Container Insights 설정
<a name="set-container-insights-ECS-cluster-enhanced"></a>

Amazon ECS 콘솔 또는 AWS CLI를 사용하여 향상된 관찰성을 갖춘 Container Insights를 켤 수 있습니다.

------
#### [ AWS CLI ]

다음 명령을 사용하여 향상된 관찰성을 갖춘 Container Insights를 켭니다.

 `containerInsights` 계정 설정을 `enhanced`로 설정

```
aws ecs put-account-setting --name containerInsights --value enhanced
```

출력 예시

```
{
    "setting": {
        "name": "containerInsights",
        "value": "enhanced",
        "principalArn": "arn:aws:iam::123456789012:johndoe",
         "type": user
    }
}
```

**참고**  
기본적으로는 현재 인증된 사용자에게만 `put-account-setting`이 적용됩니다. 모든 사용자 및 역할에 대해 계정 전체로 설정을 활성화하려면 다음 예제와 같이 루트 사용자를 사용합니다.  

```
aws ecs put-account-setting --name containerInsights --value enhanced --principal-arn arn:aws:iam::accountID:root
```

이 계정 설정을 설정하면 모든 새 클러스터가 향상된 관찰성을 갖춘 Container Insights를 자동으로 사용합니다. `update-cluster-settings` 명령을 사용하여 기존 클러스터에 향상된 관찰성을 갖춘 Container Insights를 추가하거나, 현재 Container Insights를 사용하는 클러스터를 향상된 관찰성을 갖춘 Container Insights로 업그레이드합니다.

```
aws ecs update-cluster-settings --cluster cluster-name --settings name=containerInsights,value=enhanced
```

------
#### [ Amazon ECS console ]

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

1. 상단의 탐색 모음에서 계정 설정을 보려는 리전을 선택합니다.

1. 탐색 페이지에서 **Account Settings**(계정 설정)를 선택합니다.

1. **업데이트**를 선택합니다.

1. 향상된 관찰성을 갖춘 Container Insights를 사용하려면 **Container Insights with enhanced observability**를 선택합니다.

1. **변경 사항 저장**을 선택합니다.

1. 확인 화면에서 **확인(Confirm)**을 선택해 해당 선택을 저장합니다.

이를 설정하면 모든 새 클러스터가 향상된 관찰성을 갖춘 Container Insights를 자동으로 사용합니다. 향상된 관찰성을 갖춘 Container Insights를 기존 클러스터에 추가하거나, 현재 Container Insights를 사용하는 클러스터를 향상된 관찰성을 갖춘 Container Insights로 업데이트합니다. 자세한 내용을 알아보려면 **Amazon Elastic Container Service 개발자 안내서의 [Amazon ECS 클러스터 업데이트](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/update-cluster-v2.html) 섹션을 참조하세요.

------

## Container Insights 설정
<a name="set-container-insights-ECS-cluster"></a>

Amazon ECS 콘솔 또는 AWS CLI를 사용하여 Container Insights를 켤 수 있습니다.

------
#### [ AWS CLI ]

Container Insights를 사용하려면 `container Insights` 계정 설정을 `enabled`로 설정합니다. 다음 명령 중 하나를 사용하여 Container Insights를 켭니다.

```
aws ecs put-account-setting --name containerInsights --value enabled
```

출력 예시

```
{
    "setting": {
        "name": "container Insights",
        "value": "enabled",
        "principalArn": "arn:aws:iam::123456789012:johndoe",
         "type": user
    }
}
```

`container Insights` 계정 설정을 `enabled`로 설정할 경우, 기본적으로 모든 새 클러스터에 Container Insights가 활성화됩니다. `update-cluster-settings` 명령을 사용하여 기존 클러스터에 Container Insights를 추가합니다.

```
aws ecs update-cluster-settings --cluster cluster-name --settings name=containerInsights,value=enabled
```

------
#### [ Amazon ECS console ]

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

1. 상단의 탐색 모음에서 계정 설정을 보려는 리전을 선택합니다.

1. 탐색 페이지에서 **Account Settings**(계정 설정)를 선택합니다.

1. **업데이트**를 선택합니다.

1. Container Insights를 사용하려면 **Container Insights**를 선택합니다.

1. **변경 사항 저장**을 선택합니다.

1. 확인 화면에서 **확인(Confirm)**을 선택해 해당 선택을 저장합니다.

이를 설정하면 모든 새 클러스터가 Container Insights를 자동으로 사용합니다. 기존 클러스터를 Container Insights에 추가하도록 업데이트합니다. 자세한 내용을 알아보려면 **Amazon Elastic Container Service 개발자 안내서의 [Amazon ECS 클러스터 업데이트](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/update-cluster-v2.html) 섹션을 참조하세요.

------

# AWS Distro for OpenTelemetry를 사용하여 Amazon ECS에서 Container Insights 설정
<a name="deploy-container-insights-ECS-adot"></a>

AWS Distro for OpenTelemetry를 사용하여 Amazon ECS 클러스터에서 CloudWatch Container Insights를 설정하려는 경우 이 단원을 참조하세요. AWS Distro for Open Telemetry에 대한 자세한 내용은 [AWS Distro for OpenTelemetry](https://aws.amazon.com/otel/)를 참조하세요.

다음 단계에서는 Amazon ECS를 실행 중인 클러스터가 이미 있다고 가정합니다. Amazon ECS와 함께 AWS Distro for Open Telemetry를 사용하고 이러한 용도로 Amazon ECS 클러스터를 설정하는 방법에 대한 자세한 내용은 [Amazon Elastic Container Service에서 AWS Distro for OpenTelemetry Collector 설정](https://aws-otel.github.io/docs/setup/ecs)을 참조하세요.

## 1단계: 태스크 역할 생성
<a name="deploy-container-insights-ECS-adot-CreateTaskRole"></a>

첫 번째 단계는 AWS OpenTelemetry Collector가 사용할 클러스터에서 태스크 역할을 생성하는 것입니다.

**AWS Distro for OpenTelemetry에 대한 태스크 역할을 생성하려면**

1. IAM 콘솔([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/))을 엽니다.

1. 탐색 창에서 **정책**을 선택한 후 **정책 생성**을 선택합니다.

1. [**JSON**] 탭을 선택하고 다음 정책을 복사합니다.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "logs:PutLogEvents",
                   "logs:CreateLogGroup",
                   "logs:CreateLogStream",
                   "logs:DescribeLogStreams",
                   "logs:DescribeLogGroups",
                   "ssm:GetParameters"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

1. **정책 검토**를 선택합니다.

1. 이름에 **AWSDistroOpenTelemetryPolicy**를 입력한 다음, [**정책 생성(Create policy)**]을 선택합니다.

1. 왼쪽 탐색 창에서 [**역할(Roles)**]을 선택한 다음, [**역할 생성(Create role)**]을 선택합니다.

1. 서비스 목록에서 [**Elastic Container Service**]를 선택합니다.

1. 페이지 하단에서 [**Elastic Container Service 태스크(Elastic Container Service Task)**]를 선택한 후 [**다음: 권한(Next: Permissions)**]을 선택합니다.

1. 정책 목록에서 **AWSDistroOpenTelemetryPolicy**를 검색합니다.

1. [**AWSDistroOpenTelemetryPolicy**] 옆의 확인란을 선택합니다.

1. [**다음: 태그(Next: Tags)**]를 선택한 후 [**다음: 검토(Next: Review)**]를 선택합니다.

1. [**역할 이름(Role name)**]에 **AWSOpenTelemetryTaskRole**을 입력한 다음, [**역할 생성(Create role)**]을 선택합니다.

## 2단계: 태스크 실행 역할 생성
<a name="deploy-container-insights-ECS-adot-CreateTaskExecutionRole"></a>

다음 단계는 AWS OpenTelemetry Collector에 대한 태스크 실행 역할을 생성하는 것입니다.

**AWS Distro for OpenTelemetry에 대한 태스크 실행 역할을 생성하려면**

1. IAM 콘솔([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/))을 엽니다.

1. 왼쪽 탐색 창에서 [**역할(Roles)**]을 선택한 다음, [**역할 생성(Create role)**]을 선택합니다.

1. 서비스 목록에서 [**Elastic Container Service**]를 선택합니다.

1. 페이지 하단에서 [**Elastic Container Service 태스크(Elastic Container Service Task)**]를 선택한 후 [**다음: 권한(Next: Permissions)**]을 선택합니다.

1. 정책 목록에서 **AmazonECSTaskExecutionRolePolicy**를 검색한 다음, [**AmazonECSTaskExecutionRolePolicy**] 옆의 확인란을 선택합니다.

1. 정책 목록에서 **CloudWatchLogsFullAccess**를 검색한 다음, [**CloudWatchLogsFullAccess**] 옆의 확인란을 선택합니다.

1. 정책 목록에서 **AmazonSSMReadOnlyAccess**를 검색한 다음, [**AmazonSSMReadOnlyAccess**] 옆의 확인란을 선택합니다.

1. [**다음: 태그(Next: Tags)**]를 선택한 후 [**다음: 검토(Next: Review)**]를 선택합니다.

1. [**역할 이름(Role name)**]에 **AWSOpenTelemetryTaskExecutionRole**을 입력한 다음, [**역할 생성(Create role)**]을 선택합니다.

## 3단계: 태스크 정의 생성
<a name="deploy-container-insights-ECS-adot-CreateTaskDefinition"></a>

다음 단계는 태스크 정의를 생성하는 것입니다.

**AWS Distro for OpenTelemetry에 대한 태스크 정의를 생성하려면**

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

1. 탐색 창에서 **태스크 정의(Task definitions)**를 선택합니다.

1. **새 태스크 정의 생성(Create new Task Definition)**, **새 태스크 정의 생성(Create new Task Definition)**을 선택합니다.

1. **태스크 정의 패밀리(Task definition family)**에서 태스크 정의에 대해 고유한 이름을 지정합니다.

1. 컨테이너를 구성한 후 **다음**을 선택합니다.

1. **지표 및 로깅**에서 **지표 수집 사용**을 선택합니다.

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

1. **생성(Create)**을 선택합니다.

Amazon ECS와 함께 AWS OpenTelemetry Collector를 사용하는 방법에 대한 자세한 내용은 [Amazon Elastic Container Service에서 AWS Distro for OpenTelemetry Collector 설정](https://aws-otel.github.io/docs/setup/ecs)을 참조하세요.

## 4단계: 태스크 실행
<a name="deploy-container-insights-ECS-adot-CreateTaskDefinition"></a>

마지막 단계는 생성한 태스크를 실행하는 것입니다.

**AWS Distro for OpenTelemetry에 대한 태스크를 실행하려면**

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

1. 왼쪽 탐색 창에서 [**태스크 정의(Task Definitions)**]를 선택한 다음, 방금 생성한 태스크를 선택합니다.

1. **작업**, **배포**, **태스크 실행**을 선택합니다.

1. **배포(Deploy)**, **태스크 실행(Run task)**을 선택합니다.

1. **컴퓨팅 옵션** 섹션의 **기존 클러스터**에서 클러스터를 선택합니다.

1. **생성(Create)**을 선택합니다.

1. 그런 다음, CloudWatch 콘솔에서 새 지표를 확인할 수 있습니다.

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

1. 왼쪽 탐색 창에서 **Metrics**를 선택합니다.

   **ECS/ContainerInsights** 네임스페이스가 표시됩니다. 해당 네임스페이스를 선택하면 8개의 지표가 표시됩니다.

# CloudWatch 에이전트를 배포하여 Amazon ECS의 EC2 인스턴스 수준 지표 수집
<a name="deploy-container-insights-ECS-instancelevel"></a>

CloudWatch 에이전트를 배포하여 EC2 인스턴스에서 호스트되는 Amazon ECS 클러스터에서 인스턴스 수준 지표를 수집하려면 기본 구성으로 빠른 시작 설정을 사용하거나 에이전트를 수동으로 설치해 사용자 지정하면 됩니다.

두 방법 모두 EC2 시작 유형으로 배포된 Amazon ECS 클러스터가 하나 이상 있고 CloudWatch 에이전트 컨테이너가 Amazon EC2 인스턴스 메타데이터 서비스(IMDS)에 액세스할 수 있어야 합니다. IMDS에 대한 자세한 내용은 [인스턴스 메타데이터 및 사용자 데이터](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html)를 참조하세요.

이러한 방법은 AWS CLI도 설치되어 있다고 가정합니다. 또한 다음 절차에서 명령을 실행하려면 **IAMFullAccess** 및 **AmazonECS\$1FullAccess** 정책이 있는 계정 또는 역할에 로그인해야 합니다.

**중요**  
작업 정의에서 CloudWatch Agent 컨테이너를 정의하는 경우 `essential: false`를 설정합니다. 이렇게 하면 CloudWatch Agent 컨테이너에서 장애가 발생할 경우 전체 Amazon ECS 서비스가 중지되지 않습니다. 에이전트를 일시적으로 사용할 수 없는 경우에도 다른 중요한 애플리케이션 컨테이너는 계속 실행됩니다.

**Topics**
+ [CloudFormation을 사용한 빠른 설정](#deploy-container-insights-ECS-instancelevel-quickstart)
+ [수동 설치 및 사용자 지정](#deploy-container-insights-ECS-instancelevel-manual)

## CloudFormation을 사용한 빠른 설정
<a name="deploy-container-insights-ECS-instancelevel-quickstart"></a>

빠른 설정을 사용하려면 다음 명령을 입력하여 CloudFormation을 사용해 에이전트를 설치합니다. *cluster-name* 및 *cluster-region*을 Amazon ECS 클러스터의 이름 및 리전으로 바꿉니다.

이 명령은 IAM 역할인 **CWAgentECSTaskRole** 및 **CWAgentECSExecutionRole**을 생성합니다. 이러한 역할이 계정에 이미 있는 경우 명령을 입력할 때 `ParameterKey=CreateIAMRoles,ParameterValue=True` 대신 `ParameterKey=CreateIAMRoles,ParameterValue=False`를 사용합니다. 그렇지 않으면 명령이 실패합니다.

```
ClusterName=cluster-name
Region=cluster-region
curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/ecs-task-definition-templates/deployment-mode/daemon-service/cwagent-ecs-instance-metric/cloudformation-quickstart/cwagent-ecs-instance-metric-cfn.json
aws cloudformation create-stack --stack-name CWAgentECS-${ClusterName}-${Region} \
    --template-body file://cwagent-ecs-instance-metric-cfn.json \
    --parameters ParameterKey=ClusterName,ParameterValue=${ClusterName} \
                 ParameterKey=CreateIAMRoles,ParameterValue=True \
    --capabilities CAPABILITY_NAMED_IAM \
    --region ${Region}
```

**(대안) 자체 IAM 역할 사용**

**CWAgentECSTaskRole** 및 **CWAgentECSExecutionRole** 역할 대신 고유한 사용자 지정 ECS 작업 역할 및 ECS 작업 실행 역할을 사용하려면 먼저 ECS 작업 역할로 사용할 역할에 **CloudWatchAgentServerPolicy**가 연결되어 있는지 확인합니다. 또한 ECS 작업 실행 역할로 사용할 역할에 **CloudWatchAgentServerPolicy** 및 **AmazonECSTaskExecutionRolePolicy** 정책이 모두 연결되어 있는지 확인합니다. 이어서 다음 명령을 입력합니다. 명령에서 *task-role-arn*을 사용자 지정 ECS 작업 역할의 ARN으로 바꾸고 *execution-role-arn*을 사용자 지정 ECS 작업 실행 역할의 ARN으로 바꿉니다.

```
ClusterName=cluster-name
Region=cluster-region
TaskRoleArn=task-role-arn
ExecutionRoleArn=execution-role-arn
curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/ecs-task-definition-templates/deployment-mode/daemon-service/cwagent-ecs-instance-metric/cloudformation-quickstart/cwagent-ecs-instance-metric-cfn.json
aws cloudformation create-stack --stack-name CWAgentECS-${ClusterName}-${Region} \
    --template-body file://cwagent-ecs-instance-metric-cfn.json \
    --parameters ParameterKey=ClusterName,ParameterValue=${ClusterName} \
                 ParameterKey=TaskRoleArn,ParameterValue=${TaskRoleArn} \
                 ParameterKey=ExecutionRoleArn,ParameterValue=${ExecutionRoleArn} \
    --capabilities CAPABILITY_NAMED_IAM \
    --region ${Region}
```

**빠른 설정 문제 해결**

CloudFormation 스택의 상태를 확인하려면 다음 명령을 입력합니다.

```
ClusterName=cluster-name
Region=cluster-region
aws cloudformation describe-stacks --stack-name CWAgentECS-$ClusterName-$Region --region $Region
```

`CREATE_COMPLETE` 또는 `CREATE_IN_PROGRESS` 이외의 `StackStatus`가 표시되면 스택 이벤트를 확인하여 오류를 찾습니다. 다음 명령을 입력합니다.

```
ClusterName=cluster-name
Region=cluster-region
aws cloudformation describe-stack-events --stack-name CWAgentECS-$ClusterName-$Region --region $Region
```

`cwagent` 데몬 서비스의 상태를 확인하려면 다음 명령을 입력합니다. 출력에서 `runningCount`가 `deployment` 섹션의 `desiredCount`와 같은 것을 볼 수 있습니다. 같지 않은 경우 출력에서 `failures` 섹션을 확인합니다.

```
ClusterName=cluster-name
Region=cluster-region
aws ecs describe-services --services cwagent-daemon-service --cluster $ClusterName --region $Region
```

CloudWatch Logs 콘솔을 사용하여 에이전트 로그를 확인할 수도 있습니다. **/ecs/ecs-cwagent-daemon-service** 로그 그룹을 찾습니다.

**CloudWatch 에이전트의 CloudFormation 스택 삭제**

CloudFormation 스택을 삭제해야 하는 경우 다음 명령을 입력합니다.

```
ClusterName=cluster-name
Region=cluster-region
aws cloudformation delete-stack --stack-name CWAgentECS-${ClusterName}-${Region} --region ${Region}
```

## 수동 설치 및 사용자 지정
<a name="deploy-container-insights-ECS-instancelevel-manual"></a>

이 단원의 단계에 따라 CloudWatch 에이전트를 수동으로 배포하여 EC2 인스턴스에서 호스트되는 Amazon ECS 클러스터에서 인스턴스 수준 지표를 수집합니다.

### 필요한 IAM 역할 및 정책
<a name="deploy-container-insights-ECS-instancelevel-IAMRoles"></a>

두 가지 IAM 역할이 필요합니다. 아직 존재하지 않는 경우 생성해야 합니다. 이러한 역할에 대한 자세한 내용은 [IAM roles for Tasks](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html)(태스크에 대한 IAM 역할)와 [Amazon ECS Task Execution Role](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html)(Amazon ECS 태스크 실행 역할)을 참조하세요.
+ CloudWatch 에이전트가 지표를 게시하는 데 사용하는 **‘ECS 태스크 역할’. 이 역할이 이미 있는 경우 `CloudWatchAgentServerPolicy` 정책이 연결되어 있는지 확인해야 합니다.
+ Amazon ECS 에이전트가 CloudWatch 에이전트를 시작하는 데 사용하는 **‘ECS 태스크 실행 역할’. 이 역할이 이미 있는 경우 `AmazonECSTaskExecutionRolePolicy` 및 `CloudWatchAgentServerPolicy` 정책이 연결되어 있는지 확인해야 합니다.

이러한 역할이 아직 없는 경우 다음 명령을 사용하여 역할을 생성하고 필요한 정책을 연결할 수 있습니다. 이 첫 번째 명령은 ECS 작업 역할을 생성합니다.

```
aws iam create-role --role-name CWAgentECSTaskRole \
    --assume-role-policy-document "{\"Version\": \"2012-10-17\",		 	 	 \"Statement\": [{\"Sid\": \"\",\"Effect\": \"Allow\",\"Principal\": {\"Service\": \"ecs-tasks.amazonaws.com\"},\"Action\": \"sts:AssumeRole\"}]}"
```

위 명령을 입력한 후 명령 출력에서 `Arn` 값을 “TaskRoleArn”으로 기록해 둡니다. 나중에 태스크 정의를 생성할 때 사용해야 합니다. 이어서 다음 명령을 입력하여 필요한 정책을 연결합니다.

```
aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy \
    --role-name CWAgentECSTaskRole
```

다음 명령은 ECS 작업 실행 역할을 생성합니다.

```
aws iam create-role --role-name CWAgentECSExecutionRole \
    --assume-role-policy-document "{\"Version\": \"2012-10-17\",		 	 	 \"Statement\": [{\"Sid\": \"\",\"Effect\": \"Allow\",\"Principal\": {\"Service\": \"ecs-tasks.amazonaws.com\"},\"Action\": \"sts:AssumeRole\"}]}"
```

위 명령을 입력한 후 명령 출력에서 `Arn` 값을 “ExecutionRoleArn”으로 기록해 둡니다. 나중에 태스크 정의를 생성할 때 사용해야 합니다. 이어서 다음 명령을 입력하여 필요한 정책을 연결합니다.

```
aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy \
    --role-name CWAgentECSExecutionRole
          
aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy \
    --role-name CWAgentECSExecutionRole
```

### 태스크 정의 생성 및 데몬 서비스 시작
<a name="deploy-container-insights-ECS-instancelevel-taskdefinition"></a>

태스크 정의를 생성하고 이를 사용하여 CloudWatch 에이전트를 데몬 서비스로 시작합니다. 작업 정의를 생성하려면 다음 명령을 입력합니다. 첫 번째 줄에서 자리 표시자를 배포의 실제 값으로 바꿉니다. *logs-region*은 CloudWatch Logs가 있는 리전이고 *cluster-region*은 클러스터가 있는 리전입니다. *task-role-arn*은 사용 중인 ECS 태스크 역할의 ARN이고 *execution-role-arn*은 ECS 태스크 실행 역할의 ARN입니다.

```
TaskRoleArn=task-role-arn
ExecutionRoleArn=execution-role-arn
AWSLogsRegion=logs-region
Region=cluster-region
curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/ecs-task-definition-templates/deployment-mode/daemon-service/cwagent-ecs-instance-metric/cwagent-ecs-instance-metric.json \
    | sed "s|{{task-role-arn}}|${TaskRoleArn}|;s|{{execution-role-arn}}|${ExecutionRoleArn}|;s|{{awslogs-region}}|${AWSLogsRegion}|" \
    | xargs -0 aws ecs register-task-definition --region ${Region} --cli-input-json
```

이어서 다음 명령을 실행하여 데몬 서비스를 시작합니다. *cluster-name* 및 *cluster-region*을 Amazon ECS 클러스터의 이름 및 리전으로 바꿉니다.

**중요**  
이 명령을 실행하기 전에 모든 용량 공급자 전략을 제거하세요. 그러지 않으면 명령이 작동하지 않습니다.

```
ClusterName=cluster-name
Region=cluster-region
aws ecs create-service \
    --cluster ${ClusterName} \
    --service-name cwagent-daemon-service \
    --task-definition ecs-cwagent-daemon-service \
    --scheduling-strategy DAEMON \
    --region ${Region}
```

`An error occurred (InvalidParameterException) when calling the CreateService operation: Creation of service was not idempotent` 오류 메시지가 표시되면 `cwagent-daemon-service`라는 데몬 서비스를 이미 생성한 것입니다. 다음 명령을 예로 사용하여 먼저 해당 서비스를 삭제해야 합니다.

```
ClusterName=cluster-name
Region=cluster-region
aws ecs delete-service \
    --cluster ${ClusterName} \
    --service cwagent-daemon-service \
    --region ${Region} \
    --force
```

### (선택 사항) 고급 구성
<a name="deploy-container-insights-ECS-instancelevel-advanced"></a>

선택적으로 SSM을 사용하여 EC2 인스턴스에서 호스트되는 Amazon ECS 클러스터의 CloudWatch 에이전트에 대한 다른 구성 옵션을 지정할 수 있습니다. 이러한 옵션은 다음과 같습니다.
+ `metrics_collection_interval` – CloudWatch 에이전트가 지표를 수집하는 빈도(초)입니다. 기본값은 60입니다. 범위는 1\$1172,000입니다.
+ `endpoint_override` – (선택 사항) 로그를 전송할 다른 엔드포인트를 지정합니다. VPC의 클러스터에서 게시하는 중이고 로그 데이터를 VPC 엔드포인트로 이동하려는 경우 이 작업을 원할 수 있습니다.

  `endpoint_override`의 값은 URL인 문자열이어야 합니다.
+ `force_flush_interval` – 로그가 서버로 전송되기 전에 메모리 버퍼에 남아 있는 최대 시간(초)을 지정합니다. 이 필드에 대한 설정과 상관없이 버퍼 내 로그의 크기가 1MB에 도달하면 로그가 즉시 서버로 전송됩니다. 기본값은 5초입니다.
+ `region` – 기본적으로 에이전트는 Amazon ECS 컨테이너 인스턴스가 있는 리전과 동일한 리전에 지표를 게시합니다. 이를 무시하려면 여기에서 다른 리전을 지정합니다. 예: `"region" : "us-east-1"`

다음은 사용자 지정된 구성의 예입니다.

```
{
    "agent": {
        "region": "us-east-1"
    },
    "logs": {
        "metrics_collected": {
            "ecs": {
                "metrics_collection_interval": 30
            }
        },
        "force_flush_interval": 5
    }
}
```

**Amazon ECS 컨테이너에서 CloudWatch 에이전트 구성을 사용자 지정하려면**

1. **AmazonSSMReadOnlyAccess** 정책이 Amazon ECS 태스크 실행 역할에 연결되어 있는지 확인합니다. 이렇게 하려면 다음 명령을 입력합니다. 이 예에서는 Amazon ECS 태스크 실행 역할이 CWAgentECSExecutionRole이라고 가정합니다. 다른 역할을 사용하는 경우 다음 명령에서 해당 역할 이름으로 바꿉니다.

   ```
   aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonSSMReadOnlyAccess \
           --role-name CWAgentECSExecutionRole
   ```

1. 앞의 예제와 비슷한 사용자 지정된 구성 파일을 생성합니다. 이 파일의 이름을 `/tmp/ecs-cwagent-daemon-config.json`으로 지정합니다.

1. 다음 명령을 실행하여 이 구성을 파라미터 스토어에 넣습니다. *cluster-region*을 Amazon ECS 클러스터의 리전으로 바꿉니다. 이 명령을 실행하려면 **AmazonSSMFullAccess** 정책이 있는 사용자 또는 역할에 로그인해야 합니다.

   ```
   Region=cluster-region
   aws ssm put-parameter \
       --name "ecs-cwagent-daemon-service" \
       --type "String" \
       --value "`cat /tmp/ecs-cwagent-daemon-config.json`" \
       --region $Region
   ```

1. 작업 정의 파일을 로컬 파일(예 `/tmp/cwagent-ecs-instance-metric.json`)로 다운로드합니다.

   ```
   curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/ecs-task-definition-templates/deployment-mode/daemon-service/cwagent-ecs-instance-metric/cwagent-ecs-instance-metric.json -o /tmp/cwagent-ecs-instance-metric.json
   ```

1. 작업 정의 파일을 수정합니다. 다음 섹션을 삭제합니다.

   ```
   "environment": [
                   {
                       "name": "USE_DEFAULT_CONFIG",
                       "value": "True"
                   }
               ],
   ```

   해당 섹션을 다음으로 바꿉니다.

   ```
   "secrets": [
                   {
                       "name": "CW_CONFIG_CONTENT",
                       "valueFrom": "ecs-cwagent-daemon-service"
                   }
               ],
   ```

1. 다음 단계에 따라 에이전트를 데몬 서비스로 다시 시작합니다.

   1. 다음 명령을 실행합니다.

      ```
      TaskRoleArn=task-role-arn
      ExecutionRoleArn=execution-role-arn
      AWSLogsRegion=logs-region
      Region=cluster-region
      cat /tmp/cwagent-ecs-instance-metric.json \
          | sed "s|{{task-role-arn}}|${TaskRoleArn}|;s|{{execution-role-arn}}|${ExecutionRoleArn}|;s|{{awslogs-region}}|${AWSLogsRegion}|" \
          | xargs -0 aws ecs register-task-definition --region ${Region} --cli-input-json
      ```

   1. 데몬 서비스를 시작하려면 다음 명령을 실행합니다. *cluster-name* 및 *cluster-region*을 Amazon ECS 클러스터의 이름 및 리전으로 바꿉니다.

      ```
      ClusterName=cluster-name
      Region=cluster-region
      aws ecs create-service \
          --cluster ${ClusterName} \
          --service-name cwagent-daemon-service \
          --task-definition ecs-cwagent-daemon-service \
          --scheduling-strategy DAEMON \
          --region ${Region}
      ```

      `An error occurred (InvalidParameterException) when calling the CreateService operation: Creation of service was not idempotent` 오류 메시지가 표시되면 `cwagent-daemon-service`라는 데몬 서비스를 이미 생성한 것입니다. 다음 명령을 예로 사용하여 먼저 해당 서비스를 삭제해야 합니다.

      ```
      ClusterName=cluster-name
      Region=Region
      aws ecs delete-service \
          --cluster ${ClusterName} \
          --service cwagent-daemon-service \
          --region ${Region} \
          --force
      ```

# AWS Distro for OpenTelemetry를 배포하여 Amazon ECS 클러스터의 EC2 인스턴스 수준 지표 수집
<a name="deploy-container-insights-ECS-OTEL"></a>

이 단원의 단계에 따라 AWS Distro for OpenTelemetry를 사용하여 Amazon ECS 클러스터의 EC2 인스턴스 수준 지표를 수집할 수 있습니다. AWS Distro for OpenTelemetry에 대한 자세한 내용은 [AWS Distro for OpenTelemetry](https://aws.amazon.com/otel/)를 참조하세요.

다음 단계에서는 Amazon ECS를 실행 중인 클러스터가 이미 있다고 가정합니다. 이 클러스터는 EC2 시작 유형으로 배포되어야 합니다. Amazon ECS와 함께 AWS Distro for Open Telemetry를 사용하고 이러한 용도로 Amazon ECS 클러스터를 설정하는 방법에 대한 자세한 내용은 [Amazon Elastic Container Service에서 ECS EC2 인스턴스 수준 지표에 대해 AWS Distro for OpenTelemetry Collector 설정](https://aws-otel.github.io/docs/setup/ecs#3-setup-the-aws-otel-collector-for-ecs-ec2-instance-metrics)을 참조하세요.

**Topics**
+ [CloudFormation을 사용한 빠른 설정](#container-insights-ECS-OTEL-quicksetup)
+ [수동 설치 및 사용자 지정](#container-insights-ECS-OTEL-custom)

## CloudFormation을 사용한 빠른 설정
<a name="container-insights-ECS-OTEL-quicksetup"></a>

EC2에서 Amazon ECS용 AWS Distro for OpenTelemetry Collector를 설치하기 위한 CloudFormation 템플릿 파일을 다운로드합니다. 다음 curl 명령을 실행합니다.

```
curl -O https://raw.githubusercontent.com/aws-observability/aws-otel-collector/main/deployment-template/ecs/aws-otel-ec2-instance-metrics-daemon-deployment-cfn.yaml
```

템플릿 파일을 다운로드한 후 파일을 열고 *PATH\$1TO\$1CloudFormation\$1TEMPLATE*을 템플릿 파일을 저장한 경로로 바꿉니다. 그런 후, 다음 명령과 같이 다음 파라미터를 내보내고 CloudFormation 명령을 실행합니다.
+ **Cluster\$1Name** – Amazon ECS 클러스터 이름
+ **AWS\$1Region** – 데이터를 전송할 리전
+ **PATH\$1TO\$1CloudFormation\$1TEMPLATE** – CloudFormation 템플릿 파일을 저장한 경로
+ **command** – AWS Distro for OpenTelemetry Collector가 Amazon EC2에서 Amazon ECS의 인스턴스 수준 지표를 수집하도록 하려면 이 파라미터에 `--config=/etc/ecs/otel-instance-metrics-config.yaml`을 지정해야 합니다.

```
ClusterName=Cluster_Name
Region=AWS_Region
command=--config=/etc/ecs/otel-instance-metrics-config.yaml
aws cloudformation create-stack --stack-name AOCECS-${ClusterName}-${Region} \
--template-body file://PATH_TO_CloudFormation_TEMPLATE \
--parameters ParameterKey=ClusterName,ParameterValue=${ClusterName} \
ParameterKey=CreateIAMRoles,ParameterValue=True \
ParameterKey=command,ParameterValue=${command} \
--capabilities CAPABILITY_NAMED_IAM \
--region ${Region}
```

이 명령을 실행한 후 Amazon ECS 콘솔을 사용하여 태스크가 실행 중인지 확인합니다.

### 빠른 설정 문제 해결
<a name="container-insights-ECS-OTEL-quicksetup-troubleshooting"></a>

CloudFormation 스택의 상태를 확인하려면 다음 명령을 입력합니다.

```
ClusterName=cluster-name
Region=cluster-region
aws cloudformation describe-stack --stack-name AOCECS-$ClusterName-$Region --region $Region
```

`StackStatus`의 값이 `CREATE_COMPLETE` 또는 `CREATE_IN_PROGRESS`가 아닌 경우 스택 이벤트를 확인하여 오류를 찾습니다. 다음 명령을 입력합니다.

```
ClusterName=cluster-name
Region=cluster-region
aws cloudformation describe-stack-events --stack-name AOCECS-$ClusterName-$Region --region $Region
```

`AOCECS` 데몬 서비스의 상태를 확인하려면 다음 명령을 입력합니다. 출력에서 `runningCount`가 배포 섹션의 `desiredCount`와 같은 것을 확인해야 합니다. 같지 않으면 출력에서 ​​실패 섹션을 확인합니다.

```
ClusterName=cluster-name
Region=cluster-region
aws ecs describe-services --services AOCECS-daemon-service --cluster $ClusterName --region $Region
```

CloudWatch Logs 콘솔을 사용하여 에이전트 로그를 확인할 수도 있습니다. **/aws/ecs/containerinsights/\$1ClusterName\$1/performance** 로그 그룹을 찾습니다.

## 수동 설치 및 사용자 지정
<a name="container-insights-ECS-OTEL-custom"></a>

이 단원의 단계에 따라 AWS Distro for OpenTelemetry를 수동으로 배포하여 Amazon EC2 인스턴스에서 호스트되는 Amazon ECS 클러스터에서 인스턴스 수준 지표를 수집합니다.

### 1단계: 필요한 역할 및 정책
<a name="container-insights-ECS-OTEL-custom-iam"></a>

두 가지 IAM 역할이 필요합니다. 아직 존재하지 않는 경우 생성해야 합니다. 이러한 역할에 대한 자세한 내용은 [IAM 정책 생성](https://aws-otel.github.io/docs/setup/ecs/create-iam-policy) 및 [IAM 역할 생성](https://aws-otel.github.io/docs/setup/ecs/create-iam-role)을 참조하세요.

### 2단계: 태스크 정의 생성
<a name="container-insights-ECS-OTEL-custom-task"></a>

태스크 정의를 생성하고 이를 사용하여 AWS Distro for OpenTelemetry를 데몬 서비스로 시작합니다.

태스크 정의 템플릿을 사용하여 태스크 정의를 생성하려면 [AWS OTel Collector를 사용하여 EC2 인스턴스의 ECS EC2 태스크 정의 생성](https://aws-otel.github.io/docs/setup/ecs/task-definition-for-ecs-ec2-instance)의 지침을 따르세요.

Amazon ECS 콘솔을 사용하여 태스크 정의를 생성하려면 [AWS 콘솔을 통해 Amazon ECS EC2 인스턴스 지표에 대한 태스크 정의를 생성하여 AWS OTel Collector 설치](https://aws-otel.github.io/docs/setup/ecs/create-task-definition-instance-console)의 지침을 따르세요.

### 3단계: 데몬 서비스 시작
<a name="container-insights-ECS-OTEL-custom-launch"></a>

AWS Distro for OpenTelemetry를 데몬 서비스로 시작하려면 [데몬 서비스를 사용하여 Amazon Elastic Container Service(Amazon ECS)에서 태스크 실행](https://aws-otel.github.io/docs/setup/ecs/run-daemon-service)의 지침을 따르세요.

### (선택 사항) 고급 구성
<a name="container-insights-ECS-OTEL-custom-advancdeconfig"></a>

선택적으로 SSM을 사용하여 Amazon EC2 인스턴스에서 호스트되는 Amazon ECS 클러스터의 AWS Distro for OpenTelemetry에 대한 다른 구성 옵션을 지정할 수 있습니다. 구성 파일 생성에 대한 자세한 내용은 [사용자 지정 OpenTelemetry 구성](https://aws-otel.github.io/docs/setup/ecs#5-custom-opentelemetry-configuration)을 참조하세요. 구성 파일에서 사용할 수 있는 옵션에 대한 자세한 내용은 [AWS Container Insights Receiver](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/receiver/awscontainerinsightreceiver/README.md)를 참조하세요.

# CloudWatch Logs에 로그를 전송하도록 FireLens 설정
<a name="deploy-container-insights-ECS-logs"></a>

Amazon ECS용 FireLens를 통해 태스크 정의 파라미터를 사용하여 로그를 Amazon CloudWatch Logs로 경로 지정함으로써 로그를 저장 및 분석할 수 있습니다. FireLens는 [Fluent Bit](https://fluentbit.io/) 및 [Fluentd](https://www.fluentd.org/)와 함께 작동합니다. AWS for Fluent Bit 이미지를 제공하므로 이를 사용하거나 자체 Fluent Bit 또는 Fluentd 이미지를 사용할 수 있습니다. FireLens 구성을 사용한 Amazon ECS 태스크 정의 생성은 AWS SDK, AWS CLI, AWS Management Console을 통해 지원됩니다. CloudWatch Logs에 대한 자세한 내용은 [CloudWatch Logs란?](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) 단원을 참조하세요.

Amazon ECS용 FireLens를 사용할 때 고려할 주요 사항이 있습니다. 자세한 내용은 [고려 사항](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_firelens.html#firelens-considerations) 단원을 참조하세요.

AWS for Fluent Bit 이미지를 찾으려면 [AWS for Fluent Bit 이미지 사용](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/firelens-using-fluentbit.html) 단원을 참조하세요.

FireLens 구성을 사용하는 태스크 정의를 생성하려면 [FireLens 구성을 사용하는 태스크 정의 생성](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/firelens-taskdef.html) 단원을 참조하세요.

**예제**

다음 태스크 정의 예에서는 로그를 CloudWatch Logs 로그 그룹에 전달하는 로그 구성을 지정하는 방법을 보여 줍니다. 자세한 내용은 *Amazon CloudWatch Logs 사용 설명서*의 [Amazon CloudWatch Logs란?](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) 섹션을 참조하세요.

로그 구성 옵션에서 로그 그룹 이름과 이 그룹이 속한 리전을 지정합니다. 사용자를 대신하여 Fluent Bit가 로그 그룹을 생성하게 하려면 `"auto_create_group":"true"`를 지정합니다. 또한 필터링을 지원하는 로그 스트림 접두사로 태스크 ID를 지정할 수도 있습니다. 자세한 정보는 [Fluent Bit Plugin for CloudWatch Logs](https://github.com/aws/amazon-cloudwatch-logs-for-fluent-bit/blob/mainline/README.md)를 참조하세요.

```
{
	"family": "firelens-example-cloudwatch",
	"taskRoleArn": "arn:aws:iam::123456789012:role/ecs_task_iam_role",
	"containerDefinitions": [
		{
			"essential": true,
			"image": "906394416424.dkr.ecr.us-west-2.amazonaws.com/aws-for-fluent-bit:latest",
			"name": "log_router",
			"firelensConfiguration": {
				"type": "fluentbit"
			},
			"logConfiguration": {
				"logDriver": "awslogs",
				"options": {
					"awslogs-group": "firelens-container",
					"awslogs-region": "us-west-2",
					"awslogs-create-group": "true",
					"awslogs-stream-prefix": "firelens"
				}
			},
			"memoryReservation": 50
		 },
		 {
			 "essential": true,
			 "image": "nginx",
			 "name": "app",
			 "logConfiguration": {
				 "logDriver":"awsfirelens",
				 "options": {
					"Name": "cloudwatch_logs",
					"region": "us-west-2",
					"log_key": "log",
                                 "log_group_name": "/aws/ecs/containerinsights/my-cluster/application",
					"auto_create_group": "true",
					"log_stream_name": "my-task-id"
				}
			},
			"memoryReservation": 100
		}
	]
}
```

# Amazon EKS 및 Kubernetes에서 Container Insights 설정
<a name="deploy-container-insights-EKS"></a>

Container Insights는 Amazon EKS 버전 1.23 이상에서 지원됩니다. 빠른 시작 설치 방법은 버전 1.24 이상에서만 지원됩니다.

Amazon EKS 또는 Kubernetes에서 Container Insights를 설정하는 전반적인 프로세스는 다음과 같습니다.

1. 필요한 사전 조건을 갖추었는지 확인합니다.

1. 클러스터의 Amazon CloudWatch Observability EKS 추가 기능, CloudWatch 에이전트 또는 AWS Distro for OpenTelemetry를 설정하여 CloudWatch에 지표를 전송합니다.
**참고**  
Amazon EKS의 향상된 관찰 기능과 함께 Container Insights를 사용하려면 Amazon CloudWatch Observability EKS 애드온 또는 CloudWatch 에이전트를 사용해야 합니다. 이 버전의 Container Insights에 대한 자세한 정보는 [Amazon EKS의 향상된 관찰성을 갖춘 Container Insights](container-insights-detailed-metrics.md) 섹션을 참조하세요.  
Fargate에서 Container Insights를 사용하려면 AWS Distro for OpenTelemetry를 사용해야 합니다. Amazon EKS의 향상된 관찰 기능 포함된 Container Insights는 Fargate에서 지원되지 않습니다.
**참고**  
Container Insights는 이제 Amazon EKS 클러스터의 Windows 워커 노드를 지원합니다. Amazon EKS의 향상된 관찰 기능을 갖춘 Container Insights는 Windows에서도 지원됩니다. Windows의 Container Insights 활성화에 대한 자세한 정보는 [Container Insights와 함께 CloudWatch 에이전트를 사용하고 관찰 기능 활성화](Container-Insights-EKS-agent.md) 섹션을 참조하세요.

   OpenTelemetry 지표가 포함된 Container Insights를 사용하려면 Amazon CloudWatch Observability EKS 추가 기능 `v6.0.1-eksbuild.1` 이상 버전을 설치합니다. 자세한 내용은 [Amazon EKS의 OpenTelemetry 지표가 포함된 Container Insights](container-insights-otel-metrics.md) 섹션을 참조하세요.

   CloudWatch Logs에 로그를 전송하도록 Fluent Bit 또는 Fluentd를 설정합니다. (Amazon CloudWatch Observability EKS 애드온을 설치하면 기본적으로 활성화됩니다.)

   이러한 단계를 빠른 시작 설정의 일부로 동시에 수행하거나(CloudWatch 에이전트를 사용하는 경우), 별도로 수행할 수 있습니다.

1. (선택 사항) Amazon EKS 제어 영역 로깅을 설정합니다.

1. (선택 사항) CloudWatch 에이전트를 클러스터의 StatsD 엔드포인트로 설정하여 CloudWatch에 StatsD 지표를 전송합니다.

1. (선택 사항) App Mesh Envoy 액세스 로그를 사용 설정합니다.

Container Insights의 원래 버전에서는 수집된 지표와 로그가 사용자 지정 지표로 청구됩니다. Amazon EKS의 향상된 관찰 기능을 갖춘 Container Insights를 사용하면 Container Insights 지표 및 로그는 저장된 지표나 수집된 로그별로 요금이 부과되는 대신 관찰당 요금이 부과됩니다. CloudWatch 요금에 대한 자세한 내용은 [Amazon CloudWatch 요금](https://aws.amazon.com/cloudwatch/pricing/)을 참조하세요.

**Topics**
+ [CloudWatch에서 Container Insights에 대한 사전 요구 사항 확인](Container-Insights-prerequisites.md)
+ [Container Insights와 함께 CloudWatch 에이전트를 사용하고 관찰 기능 활성화](Container-Insights-EKS-agent.md)
+ [AWS Distro for OpenTelemetry 사용](Container-Insights-EKS-otel.md)
+ [CloudWatch Logs에 로그 전송](Container-Insights-EKS-logs.md)
+ [Amazon EKS 및 Kubernetes에서 Container Insights 업데이트 또는 삭제](ContainerInsights-update-delete.md)

# CloudWatch에서 Container Insights에 대한 사전 요구 사항 확인
<a name="Container-Insights-prerequisites"></a>

Amazon EKS 또는 Kubernetes에서 Container Insights를 설치하기 전에 다음을 확인합니다. 이러한 사전 조건은 Amazon EKS 클러스터에서 Container Insights를 설정하는 데 CloudWatch 에이전트를 사용하든 AWS Distro for OpenTelemetry를 사용하든 상관없이 적용됩니다.
+ Amazon EKS 및 Kubernetes의 Container Insights를 지원하는 리전 중 하나에 노드가 연결되어 작동하는 Amazon EKS 또는 Kubernetes 클러스터가 있습니다. 지원되는 리전 목록은 [Container Insights](ContainerInsights.md) 단원을 참조하세요.
+ `kubectl`을 설치하여 실행하고 있습니다. 자세한 내용은 *Amazon EKS 사용 설명서*의 [`kubectl` 설치](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html) 단원을 참조하세요.
+ Amazon EKS를 사용하는 대신 AWS에서 실행되는 Kubernetes를 사용하는 경우 다음 사전 조건도 충족해야 합니다.
  + Kubernetes 클러스터가 역할 기반 액세스 제어(RBAC)를 지원하는지 확인합니다. 자세한 내용은 Kubernetes 참조 문서의 [RBAC 승인 사용](https://kubernetes.io/docs/reference/access-authn-authz/rbac/)을 참조하세요.
  + 여러분의 Kubelet에서는 Webhook 인증 모드를 지원해왔습니다. 자세한 내용은 Kubernetes 참조 문서의 [Kubelet 인증/권한 부여](https://kubernetes.io/docs/reference/access-authn-authz/kubelet-authn-authz/)를 참조하세요.

또한 Amazon EKS 작업자 노드가 지표 및 로그를 CloudWatch에 전송할 수 있도록 IAM 권한을 부여해야 합니다. 이렇게 하는 방법은 두 가지입니다.
+ 작업자 노드의 IAM 역할에 정책을 연결합니다. 이는 Amazon EKS 클러스터와 다른 Kubernetes 클러스터 모두에 적용됩니다.
+ 클러스터 서비스 계정의 IAM 역할을 사용하고 이 역할에 정책을 연결합니다. 이는 Amazon EKS 클러스터에만 적용됩니다.

첫 번째 옵션은 전체 노드의 CloudWatch에 권한을 부여하며, 서비스 계정의 IAM 역할을 사용하면 CloudWatch에 적절한 DaemonSet 포드에 대한 액세스 권한만 부여됩니다.

**작업자 노드의 IAM 역할에 정책 연결**

다음 단계에 따라 작업자 노드의 IAM 역할에 정책을 연결합니다. 이는 Amazon EKS 클러스터와 Amazon EKS 외부의 Kubernetes 클러스터 모두에 적용됩니다.

**작업자 노드의 IAM 역할에 필요한 정책을 연결하려면**

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

1. 작업자 노드 인스턴스 중 하나를 선택하고 설명에서 IAM 역할을 선택합니다.

1. IAM 역할 페이지에서 [**정책 연결(Attach policies)**]을 선택합니다.

1. 정책 목록에서 **CloudWatchAgentServerPolicy** 옆의 확인란을 선택합니다. 필요한 경우 검색 상자를 사용하여 이 정책을 찾습니다.

1. **정책 연결**을 선택합니다.

Amazon EKS 외부에서 Kubernetes 클러스터를 실행하는 경우 작업자 노드에 연결된 IAM 역할이 아직 없을 수 있습니다. 이렇게 없는 경우에는 먼저, IAM 역할을 인스턴스에 연결한 다음, 이전 단계에서 설명한 대로 정책을 추가해야 합니다. 인스턴스에 역할을 연결하는 방법에 대한 자세한 내용은 **Amazon EC2 사용 설명서의 [인스턴스에 IAM 역할 연결](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/iam-roles-for-amazon-ec2.html#attach-iam-role) 섹션을 참조하세요.

Amazon EKS 외부에서 Kubernetes 클러스터를 실행 중인데 지표에서 EBS 볼륨 ID를 수집하려는 경우 인스턴스에 연결된 IAM 역할에 다른 정책을 추가해야 합니다. 다음 내용을 인라인 정책으로 추가합니다. 자세한 내용은 **‘IAM 사용 설명서’의 [IAM 자격 증명 권한 추가 및 제거](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html) 단원을 참조하세요.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "ec2:DescribeVolumes"
            ],
            "Resource": "*",
            "Effect": "Allow"
        }
    ]
}
```

------

**IAM 서비스 계정 역할 사용**

이 방법은 Amazon EKS 클러스터에서만 작동합니다.

**IAM 서비스 계정 역할을 사용하여 CloudWatch에 권한을 부여하려면**

1. 아직 설정하지 않았다면 클러스터에서 서비스 계정의 IAM 역할을 사용 설정합니다. 자세한 내용은 [클러스터의 서비스 계정에 대한 IAM 역할 활성화](https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html)를 참조하세요.

1. 아직 구성하지 않은 경우 IAM 역할을 사용하도록 서비스 계정을 구성합니다. 자세한 내용을 알아보려면 [IAM 역할을 수임하도록 Kubernetes 서비스 계정 구성](https://docs.aws.amazon.com/eks/latest/userguide/associate-service-account-role.html)을 참조하세요.

   역할을 생성할 경우 역할에 대해 생성한 정책 외에도 **CloudWatchAgentServerPolicy** IAM 정책을 역할에 연결합니다. 또한 이 역할에 연결된 Kubernetes 서비스 계정은 CloudWatch 및 Fluent Bit daemonsets가 다음 단계에서 배포될 `amazon-cloudwatch` 네임스페이스에 생성되어야 합니다

1. 아직 연결하지 않았다면 IAM 역할을 클러스터의 서비스 계정과 연결합니다. 자세한 내용을 알아보려면 [IAM 역할을 수임하도록 Kubernetes 서비스 계정 구성](https://docs.aws.amazon.com/eks/latest/userguide/associate-service-account-role.html)을 참조하세요.

# Container Insights와 함께 CloudWatch 에이전트를 사용하고 관찰 기능 활성화
<a name="Container-Insights-EKS-agent"></a>

CloudWatch 에이전트를 사용하여 Amazon EKS 클러스터 또는 Kubernetes 클러스터에 Container Insights를 설정하려면 다음 섹션 중 하나의 지침을 따르세요. 빠른 시작 지침은 Amazon EKS 버전 1.24 이상에서만 지원됩니다.

**참고**  
다음 섹션 중 하나의 지침에 따라 Container Insights를 설치할 수 있습니다. 세 가지 지침을 모두 따를 필요는 없습니다.

**Topics**
+ [Amazon CloudWatch Observability EKS 추가 기능 빠른 시작](Container-Insights-setup-EKS-addon.md)
+ [Amazon EKS 및 Kubernetes에서 Container Insights의 빠른 시작 설정](Container-Insights-setup-EKS-quickstart.md)
+ [클러스터 지표를 수집하도록 CloudWatch 에이전트 설정](Container-Insights-setup-metrics.md)

# Amazon CloudWatch Observability EKS 추가 기능 빠른 시작
<a name="Container-Insights-setup-EKS-addon"></a>

Amazon EKS 추가 기능을 사용하여 Amazon EKS의 관찰 기능이 향상된 Container Insights를 설치할 수 있습니다. 추가 기능은 CloudWatch 에이전트를 설치하여 클러스터에서 인프라 지표를 전송하고, Fluent Bit를 설치하여 컨테이너 로그를 전송하고, CloudWatch [Application Signals](CloudWatch-Application-Monitoring-Sections.md)를 활성화하여 애플리케이션 성능 텔레메트리를 전송합니다.

Amazon EKS 추가 기능 버전 1.5.0 이상을 사용하는 경우 클러스터의 Linux 및 Windows 워커 노드 모두에서 Container Insights가 활성화됩니다. Windows에서는 Amazon EKS에서 Application Signals가 지원되지 않습니다.

Amazon EKS 추가 기능은 Amazon EKS 대신 Kubernetes를 실행하는 클러스터에서는 지원되지 않습니다.

Amazon CloudWatch Observability EKS 추가 기능에 대한 자세한 내용은 [Amazon CloudWatch Observability EKS 추가 기능 또는 헬름 차트를 사용하여 CloudWatch 에이전트 설치](install-CloudWatch-Observability-EKS-addon.md) 섹션을 참조하세요.

추가 기능의 버전 3.1.0 이상을 사용하는 경우 EKS Pod Identity를 사용하여 추가 기능에 필요한 권한을 부여할 수 있습니다. EKS Pod Identity는 권장 옵션이며 최소 권한, 자격 증명 교체 및 감사 가능성과 같은 이점을 제공합니다. 또한 EKS Pod Identity를 사용하면 클러스터 생성 중에 EKS 추가 기능을 설치할 수 있습니다.

**Amazon CloudWatch Observability EKS 추가 기능 설치**

1. [EKS Pod Identity 연결](https://docs.aws.amazon.com/eks/latest/userguide/pod-id-association.html#pod-id-association-create/) 단계에 따라 IAM 역할을 생성하고 EKS Pod Identity 에이전트를 설정하세요.

1. 역할에 필요한 권한을 부여하는 IAM 정책을 연결하세요. *my-role*을 이전 단계의 IAM 역할 이름으로 바꾸세요.

   ```
   aws iam attach-role-policy \
    --role-name my-role \
   --policy-arn=arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy
   ```

1. 이전 단계에서 생성한 IAM 역할을 함께 사용하여 다음 명령을 입력하세요.

   ```
   aws eks create-addon \
   --addon-name amazon-cloudwatch-observability \
   --cluster-name my-cluster-name \
   --pod-identity-associations serviceAccount=cloudwatch-agent,roleArn=arn:aws:iam::111122223333:role/my-role
   ```

# Amazon EKS 및 Kubernetes에서 Container Insights의 빠른 시작 설정
<a name="Container-Insights-setup-EKS-quickstart"></a>

**중요**  
Amazon EKS 클러스터에 Container Insights를 설치하는 경우 이 섹션의 지침을 따르는 대신 Amazon CloudWatch Observability EKS 추가 기능을 사용하여 설치하는 것이 좋습니다. 또한 가속화된 컴퓨팅 네트워크를 검색하려면 Amazon CloudWatch Observability EKS 추가 기능을 사용해야 합니다. 자세한 정보와 지침은 [Amazon CloudWatch Observability EKS 추가 기능 빠른 시작](Container-Insights-setup-EKS-addon.md) 섹션을 참조하십시오.

Container Insights 설정을 완료하려면 이 단원의 빠른 시작 지침을 따르세요. Amazon EKS 클러스터에 설치하고 2023년 11월 6일 또는 그 이후에 이 섹션의 지침을 사용하는 경우 Amazon EKS의 관찰 기능이 향상된 Container Insights를 클러스터에 설치합니다.

**중요**  
이 단원의 단계를 완료하기 전에 먼저, IAM 권한을 포함한 사전 조건을 확인해야 합니다. 자세한 내용은 [CloudWatch에서 Container Insights에 대한 사전 요구 사항 확인](Container-Insights-prerequisites.md) 섹션을 참조하세요.

또는 [클러스터 지표를 수집하도록 CloudWatch 에이전트 설정](Container-Insights-setup-metrics.md) 및 [CloudWatch Logs에 로그 전송](Container-Insights-EKS-logs.md) 단원의 지침을 따를 수 있습니다. 이러한 단원에서는 CloudWatch 에이전트가 Amazon EKS 및 Kubernetes와 작동하는 방식에 대한 추가 구성 세부 정보를 제공하지만, 추가 설치 단계를 수행해야 합니다.

Container Insights의 원래 버전에서는 수집된 지표와 로그가 사용자 지정 지표로 청구됩니다. Amazon EKS의 향상된 관찰 기능을 갖춘 Container Insights를 사용하면 Container Insights 지표 및 로그는 저장된 지표나 수집된 로그별로 요금이 부과되는 대신 관찰당 요금이 부과됩니다. CloudWatch 요금에 대한 자세한 내용은 [Amazon CloudWatch 요금](https://aws.amazon.com/cloudwatch/pricing/)을 참조하세요.

**참고**  
Amazon은 이제 Container Insights의 기본 로그 솔루션으로 상당한 성능 향상을 제공하는 Fluent Bit를 출시했습니다. 따라서 Fluentd 대신 Fluent Bit를 사용하는 것이 좋습니다.

## CloudWatch 에이전트 운영자 및 Fluent Bit를 사용한 빠른 시작
<a name="Container-Insights-setup-EKS-quickstart-FluentBit"></a>

Fluent Bit에는 두 가지 구성, 즉 최적화된 버전 및 Fluentd와 더 유사한 환경을 제공하는 버전이 있습니다. 빠른 시작 구성은 최적화된 버전을 사용합니다. Fluentd 호환 구성에 대한 자세한 내용은 [Fluent Bit를 DaemonSet로 설정하여 CloudWatch Logs에 로그 전송](Container-Insights-setup-logs-FluentBit.md) 섹션을 참조하세요.

CloudWatch 에이전트 운영자는 Amazon EKS 클러스터에 설치되는 추가 컨테이너입니다. OpenTelemetry Operator for Kubernetes를 따라 모델링됩니다. 운영자는 클러스터에서 Kubernetes 리소스의 수명 주기를 관리합니다. Amazon EKS 클러스터에 CloudWatch 에이전트, DCGM Exporter(NVIDIA), AWS Neuron Monitor를 설치하고 관리합니다. Fluent Bit와 Windows용 CloudWatch 에이전트는 운영자가 관리하지 않아도 Amazon EKS 클러스터에 직접 설치됩니다.

보다 안전하고 기능이 풍부한 인증 기관 솔루션을 위해 CloudWatch 에이전트 운영자는 cert-manager를 요구하는데, 이는 Kubernetes에서의 TLS 인증서 관리를 위해 널리 채택되고 있는 솔루션입니다. cert-manager를 사용하면 이러한 인증서를 획득, 갱신, 관리 및 사용하는 프로세스가 간소화됩니다. 인증서가 유효하고 최신 상태인지 확인하고 만료되기 전에 구성된 시간에 인증서 갱신을 시도합니다. cert-manager는 또한 AWS Certificate Manager Private Certificate Authority를 포함하여 지원되는 다양한 소스에서 인증서 발급을 용이하게 합니다.

**빠른 시작을 사용하여 Container Insights 배포**

1. 클러스터에 아직 설치되지 않은 경우 cert-manager를 설치합니다. 자세한 내용은 [cert-manager Installation](https://cert-manager.io/docs/installation/)을 참조하세요.

1. 다음 명령을 입력하여 사용자 지정 리소스 정의(CRD)를 설치합니다.

   ```
   curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/main/k8s-quickstart/cwagent-custom-resource-definitions.yaml | kubectl apply --server-side -f -
   ```

1. 다음 명령을 입력하여 운영자를 설치합니다. *my-cluster-name*을 Amazon EKS 또는 Kubernetes 클러스터의 이름으로 바꾸고, *my-cluster-region*을 로그가 게시되는 리전의 이름으로 바꿉니다. AWS 아웃바운드 데이터 전송 비용을 줄이기 위해 클러스터가 배포되는 리전과 동일한 리전을 사용하는 것이 좋습니다.

   ```
   ClusterName=my-cluster-name
   RegionName=my-cluster-region
   curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/main/k8s-quickstart/cwagent-operator-rendered.yaml | sed 's/{{cluster_name}}/'${ClusterName}'/g;s/{{region_name}}/'${RegionName}'/g' | kubectl apply -f -
   ```

   예를 들어 `MyCluster`라는 클러스터에서 Container Insights를 배포하고 로그 및 지표를 미국 서부(오리건)에 게시하려면 다음 명령을 입력합니다.

   ```
   ClusterName='MyCluster'
   RegionName='us-west-2'
   curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/main/k8s-quickstart/cwagent-operator-rendered.yaml | sed 's/{{cluster_name}}/'${ClusterName}'/g;s/{{region_name}}/'${RegionName}'/g' | kubectl apply -f -
   ```

**Container Insights에서 마이그레이션**

Amazon EKS 클러스터에 Container Insights가 이미 구성되어 있고 Amazon EKS의 향상된 관찰 기능을 갖춘 Container Insights로 마이그레이션하려는 경우 [CloudWatch에서 Amazon EKS에 대한 향상된 관찰성을 갖춘 Container Insights로 업그레이드](Container-Insights-upgrade-enhanced.md) 섹션을 참조하세요.

**Container Insights 삭제**

빠른 시작 설정을 사용한 후 Container Insights를 제거하려면 다음 명령을 입력합니다.

```
ClusterName=my-cluster-name 
RegionName=my-cluster-region
curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/main/k8s-quickstart/cwagent-operator-rendered.yaml | sed 's/{{cluster_name}}/'${ClusterName}'/g;s/{{region_name}}/'${RegionName}'/g' | kubectl delete -f -
curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/main/k8s-quickstart/cwagent-custom-resource-definitions.yaml | kubectl delete -f -
```

# 클러스터 지표를 수집하도록 CloudWatch 에이전트 설정
<a name="Container-Insights-setup-metrics"></a>

**중요**  
Amazon EKS 클러스터에 Container Insights를 설치하는 경우 이 섹션의 지침을 따르는 대신 Amazon CloudWatch Observability EKS 추가 기능을 사용하여 설치하는 것이 좋습니다. 자세한 정보와 지침은 [Amazon CloudWatch Observability EKS 추가 기능 빠른 시작](Container-Insights-setup-EKS-addon.md) 섹션을 참조하십시오.

Container Insights를 설정하여 지표를 수집하려면 [Amazon EKS 및 Kubernetes에서 Container Insights의 빠른 시작 설정](Container-Insights-setup-EKS-quickstart.md)의 절차를 따르거나 이 단원의 절차를 따르면 됩니다. 다음 단계에서는 클러스터에서 지표를 수집할 수 있도록 CloudWatch 에이전트를 설정합니다.

Amazon EKS 클러스터에 설치하고 2023년 11월 6일 또는 그 이후에 이 섹션의 지침을 사용하는 경우 Amazon EKS의 관찰 기능이 향상된 Container Insights를 클러스터에 설치합니다.

## 1단계: CloudWatch의 네임스페이스 생성
<a name="create-namespace-metrics"></a>

다음 단계를 통해 CloudWatch에 대해 `amazon-cloudwatch`라는 Kubernetes 네임스페이스를 생성합니다. 이 네임스페이스를 이미 생성했다면 이 단계를 건너뛸 수 있습니다.

**CloudWatch의 네임스페이스를 생성하려면**
+ 다음 명령을 입력합니다.

  ```
  kubectl apply -f https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights-monitoring/cloudwatch-namespace.yaml
  ```

## 2단계: 클러스터에서 서비스 계정 생성
<a name="create-service-account"></a>

아직 서비스 계정이 없다면 다음 방법 중 하나를 사용하여 CloudWatch 에이전트의 서비스 계정을 생성합니다.
+ `kubectl` 사용
+ `kubeconfig` 파일 사용

### 인증에 `kubectl` 사용
<a name="use-kubectl"></a>

**`kubectl`을 사용하여 CloudWatch 에이전트의 서비스 계정을 생성하려면**
+ 다음 명령을 입력합니다.

  ```
  kubectl apply -f https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights-monitoring/cwagent/cwagent-serviceaccount.yaml
  ```

이전 단계를 따르지 않았지만 사용하려는 CloudWatch 에이전트에 대한 서비스 계정이 이미 있는 경우에는 다음 규칙이 있는지 확인해야 합니다. 뿐만 아니라 Container Insights 설치를 위한 나머지 단계에서 `cloudwatch-agent` 대신 이 서비스 계정의 이름을 사용해야 합니다.

```
rules:
  - apiGroups: [""]
    resources: ["pods", "nodes", "endpoints"]
    verbs: ["list", "watch"]
  - apiGroups: [ "" ]
    resources: [ "services" ]
    verbs: [ "list", "watch" ]
  - apiGroups: ["apps"]
    resources: ["replicasets", "daemonsets", "deployments", "statefulsets"]
    verbs: ["list", "watch"]
  - apiGroups: ["batch"]
    resources: ["jobs"]
    verbs: ["list", "watch"]
  - apiGroups: [""]
    resources: ["nodes/proxy"]
    verbs: ["get"]
  - apiGroups: [""]
    resources: ["nodes/stats", "configmaps", "events"]
    verbs: ["create", "get"]
  - apiGroups: [""]
    resources: ["configmaps"]
    resourceNames: ["cwagent-clusterleader"]
    verbs: ["get","update"]
  - nonResourceURLs: ["/metrics"]
    verbs: ["get", "list", "watch"]
  - apiGroups: [ "discovery.k8s.io" ]
    resources: [ "endpointslices" ]
    verbs: [ "list", "watch", "get" ]
```

### 인증에 `kubeconfig` 사용
<a name="use-kubeconfig"></a>

또는 `kubeconfig` 파일을 인증에 사용할 수 있습니다. 이 방법을 사용하면 CloudWatch 에이전트 구성에서 `kubeconfig` 경로를 직접 지정하여 서비스 계정에 대한 필요성을 우회할 수 있습니다. 또한 인증을 위한 Kubernetes 컨트롤 플레인 API에 대한 종속성을 제거하여 설정을 간소화하고 kubeconfig 파일을 통해 인증을 관리함으로써 보안을 강화할 수 있습니다.

이 방법을 사용하려면 다음 예와 같이 CloudWatch 에이전트 구성 파일을 업데이트하여 `kubeconfig` 파일 경로를 지정합니다.

```
{
  "logs": {
    "metrics_collected": {
      "kubernetes": {
        "cluster_name": "YOUR_CLUSTER_NAME",
        "enhanced_container_insights": false,
        "accelerated_compute_metrics": false,
        "tag_service": false,
        "kube_config_path": "/path/to/your/kubeconfig" 
        "host_ip": "HOSTIP"
      }
    }
  }
}
```

`kubeconfig` 파일을 생성하려면 `system:masters` Kubernetes 역할을 가진 `admin/{create_your_own_user}` 사용자에 대한 인증서 서명 요청(CSR)을 생성합니다. 그런 다음 Kubernetes 클러스터의 인증 기관(CA)에 서명하고 `kubeconfig` 파일을 생성합니다.

## 3단계: CloudWatch 에이전트에 대한 ConfigMap 생성
<a name="create-configmap"></a>

다음 단계를 통해 CloudWatch 에이전트에 대한 ConfigMap을 생성합니다.

**CloudWatch 에이전트에 대한 ConfigMap을 생성하려면**

1. 다음 명령을 실행하여 `kubectl` 클라이언트 호스트로 ConfigMap YAML을 다운로드합니다.

   ```
   curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights-monitoring/cwagent/cwagent-configmap-enhanced.yaml
   ```

1. 다운로드한 YAML 파일을 다음과 같이 편집합니다.
   + **cluster\$1name** – `kubernetes` 섹션에서 `{{cluster_name}}`을 클러스터 이름으로 바꿉니다. `{{}}` 문자를 제거합니다. 또는 Amazon EKS 클러스터를 사용하는 경우 `"cluster_name"` 필드 및 값을 삭제할 수 있습니다. 그렇게 하면 CloudWatch 에이전트가 Amazon EC2 태그에서 클러스터 이름을 감지합니다.

1. (선택 사항) 다음과 같이 모니터링 요구사항에 따라 ConfigMap을 추가로 변경합니다.
   + **metrics\$1collection\$1interval** – `kubernetes` 섹션에서 에이전트가 지표를 수집하는 빈도를 지정할 수 있습니다. 기본값은 60초입니다. Kubelet의 기본 cadvisor 수집 간격은 15초이기 때문에 이 값을 15초 미만으로 설정해서는 안 됩니다.
   + **endpoint\$1override** – `logs` 섹션에서 기본 엔드포인트를 재정의하려는 경우 CloudWatch Logs 엔드포인트를 지정할 수 있습니다. VPC의 클러스터에서 게시 중인 데이터를 VPC 종단점으로 이동시키고 싶은 경우에 재정의를 원할 수 있습니다.
   + **force\$1flush\$1interval** – `logs` 섹션에서 로그 이벤트를 CloudWatch Logs에 게시하기 전에 배치 처리하는 간격을 지정할 수 있습니다. 기본값은 5초입니다.
   + **region** – 기본적으로 에이전트는 작업자 노드가 있는 리전에 지표를 게시합니다. 이를 재정의하기 위해 `"region":"us-west-2"`처럼 `agent` 섹션에서 `region` 필드를 추가할 수 있습니다.
   + **statsd** 섹션 - CloudWatch Logs 에이전트가 클러스터의 각 작업자 노드에서 StatsD 리스너로도 실행되도록 하려는 경우 다음 예와 같이 `statsd` 섹션을 `metrics` 섹션에 추가할 수 있습니다. 이 섹션의 다른 StatsD 옵션에 대한 자세한 내용은 [StatsD를 사용하여 사용자 지정 지표 검색](CloudWatch-Agent-custom-metrics-statsd.md) 단원을 참조하세요.

     ```
     "metrics": {
       "metrics_collected": {
         "statsd": {
           "service_address":":8125"
         }
       }
     }
     ```

     JSON 섹션에 대한 전체 예는 다음과 같습니다. 인증에 `kubeconfig` 파일을 사용하는 경우, `kube_config_path` 파라미터를 추가하여 kubeconfig 파일의 경로를 지정합니다.

     ```
     {
         "agent": {
             "region": "us-east-1"
         },
         "logs": {
             "metrics_collected": {
                 "kubernetes": {
                     "cluster_name": "MyCluster",
                     "metrics_collection_interval": 60,
                     "kube_config_path": "/path/to/your/kubeconfig" //if using kubeconfig for authentication
                 }
             },
             "force_flush_interval": 5,
             "endpoint_override": "logs.us-east-1.amazonaws.com"
         },
         "metrics": {
             "metrics_collected": {
                 "statsd": {
                     "service_address": ":8125"
                 }
             }
         }
     }
     ```

1. 다음 명령을 실행하여 클러스터에서 ConfigMap을 생성합니다.

   ```
   kubectl apply -f cwagent-configmap-enhanced.yaml
   ```

## 4단계: DaemonSet로 CloudWatch 에이전트 배포
<a name="deploy-agent-yaml"></a>

CloudWatch 에이전트의 설치를 완료하고 컨테이너 지표 수집을 시작하려면 다음 단계를 따르세요.

**CloudWatch 에이전트를 DaemonSet로 배포하려면**

1. 
   + 클러스터에서 StatsD를 사용하려면 다음 명령을 입력하세요.

     ```
     kubectl apply -f https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights-monitoring/cwagent/cwagent-daemonset.yaml
     ```
   + StatsD를 사용하지 않으려면 다음 절차를 따르세요.

     1. 다음 명령을 실행하여 `kubectl` 클라이언트 호스트에 DaemonSet YAML을 다운로드합니다.

        ```
        curl -O  https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights-monitoring/cwagent/cwagent-daemonset.yaml
        ```

     1. 다음과 같이 `cwagent-daemonset.yaml` 파일에서 `port` 섹션의 주석 처리를 해제합니다.

        ```
        ports:
          - containerPort: 8125
            hostPort: 8125
            protocol: UDP
        ```

     1. 다음 명령을 실행하여 클러스터에서 CloudWatch 에이전트를 배포합니다.

        ```
        kubectl apply -f cwagent-daemonset.yaml
        ```

     1. 다음 명령을 실행하여 클러스터의 Windows 노드에서 CloudWatch 에이전트를 배포합니다. StatsD 리스너는 Windows의 CloudWatch 에이전트에서 지원되지 않습니다.

        ```
        kubectl apply -f cwagent-daemonset-windows.yaml
        ```

1. 다음 명령을 실행하여 에이전트가 배포되었는지 확인합니다.

   ```
   kubectl get pods -n amazon-cloudwatch
   ```

완료되면 CloudWatch 에이전트는 `/aws/containerinsights/Cluster_Name/performance`라는 로그 그룹을 생성하고 이 로그 그룹에 성능 로그 이벤트를 전송합니다. 또한 StatsD 리스너로서 에이전트를 설정하는 경우, 에이전트는 애플리케이션 Pod가 예약된 노드의 IP 주소를 통해 포트 8125에서 StatsD 지표를 수신합니다.

### 문제 해결
<a name="ContainerInsights-deploy-troubleshooting"></a>

에이전트에서 배포가 올바르게 되지 않으면 다음을 수행해 보세요.
+ 다음 명령을 실행하여 Pod 목록을 가져옵니다.

  ```
  kubectl get pods -n amazon-cloudwatch
  ```
+ 다음 명령을 실행하고 출력 하단에서 이벤트를 확인합니다.

  ```
  kubectl describe pod pod-name -n amazon-cloudwatch
  ```
+ 다음 명령을 실행하여 로그를 확인합니다.

  ```
  kubectl logs pod-name  -n amazon-cloudwatch
  ```

# AWS Distro for OpenTelemetry 사용
<a name="Container-Insights-EKS-otel"></a>

AWS Distro for OpenTelemetry Collector를 사용하여 Amazon EKS 클러스터에서 지표를 수집하도록 Container Insights를 설정할 수 있습니다. AWS Distro for OpenTelemetry에 대한 자세한 내용은 [AWS Distro for OpenTelemetry](https://aws.amazon.com/otel/)를 참조하세요.

**중요**  
AWS Distro for OpenTelemetry를 사용하여 설치하는 경우 Container Insights는 설치하지만 Amazon EKS의 관찰 기능이 향상된 Container Insights는 얻을 수 없습니다. Amazon EKS의 향상된 관찰 기능을 통해 Container Insights에서 지원되는 세부 지표는 수집할 수 없습니다.

Container Insights를 설정하는 방법은 클러스터가 Amazon EC2 인스턴스 또는 AWS Fargate 중 어디에서 호스팅되는지에 따라 결정됩니다.

## Amazon EC2에서 호스팅되는 Amazon EKS 클러스터
<a name="Container-Insights-EKS-otel-EC2"></a>

사전 조건 충족을 아직 확인하지 않은 경우 필요한 IAM 역할을 포함한 사전 조건을 충족했는지 확인합니다. 자세한 내용은 [CloudWatch에서 Container Insights에 대한 사전 요구 사항 확인](Container-Insights-prerequisites.md) 섹션을 참조하세요.

Amazon은 Amazon EC2에서 Amazon Elastic Kubernetes Service 모니터링을 설정하는 데 사용할 수 있는 Helm 차트를 제공합니다. 이 모니터링은 지표의 경우 AWS Distro for OpenTelemetry(ADOT) Collector를 사용하고 로그의 경우 Fluent Bit를 사용합니다. 따라서 Helm 차트는 Amazon EC2에서 Amazon EKS를 사용하고 CloudWatch Container Insights로 전송하기 위해 지표 및 로그를 수집하려는 고객에게 유용합니다. 이 Helm 차트에 대한 자세한 내용은 [Amazon CloudWatch Container Insights에 대한 EC2 지표 및 로그의 EKS용 ADOT Helm 차트](https://github.com/aws-observability/aws-otel-helm-charts/tree/main/charts/adot-exporter-for-eks-on-ec2)를 참조하세요.

또는 이 섹션에 있는 지침을 사용할 수 있습니다.

먼저, 다음 명령을 입력하여 AWS Distro for OpenTelemetry Collector를 DaemonSet로 배포합니다.

```
curl https://raw.githubusercontent.com/aws-observability/aws-otel-collector/main/deployment-template/eks/otel-container-insights-infra.yaml |
kubectl apply -f -
```

Collector가 실행 중인지 확인하려면 다음 명령을 입력합니다.

```
kubectl get pods -l name=aws-otel-eks-ci -n aws-otel-eks
```

이 명령의 출력에 `Running` 상태의 포드가 여러 개 포함되어 있다면 Collector가 실행 중이며 클러스터에서 지표를 수집 중입니다. Collector는 `aws/containerinsights/cluster-name/performance`라는 로그 그룹을 생성하고 이 그룹에 성능 로그 이벤트를 전송합니다.

CloudWatch에서 Container Insights 지표를 보는 방법에 대한 자세한 내용은 [Container Insights 지표 보기](Container-Insights-view-metrics.md) 단원을 참조하세요.

AWS는 이 시나리오에 대한 GitHub 문서도 제공했습니다. Container Insights에서 게시한 지표 및 로그를 사용자 지정하려면 [https://aws-otel.github.io/docs/getting-started/container-insights/eks-infra](https://aws-otel.github.io/docs/getting-started/container-insights/eks-infra)를 참조하세요.

## Fargate에서 호스팅되는 Amazon EKS 클러스터
<a name="Container-Insights-EKS-otel-Fargate"></a>

Fargate의 Amazon EKS 클러스터에 배포된 워크로드에서 시스템 지표를 수집하여 CloudWatch Container Insights로 전송하도록 ADOT Collector를 구성 및 배포하는 방법에 대한 지침은 AWS Distro for OpenTelemetry 설명서의 [Container Insights EKS Fargate](https://aws-otel.github.io/docs/getting-started/container-insights/eks-fargate)를 참조하세요.

# CloudWatch Logs에 로그 전송
<a name="Container-Insights-EKS-logs"></a>

컨테이너에서 Amazon CloudWatch Logs로 로그를 전송하려면 Fluent Bit를 사용하면 됩니다. 자세한 내용은 [Fluent Bit](https://fluentbit.io/)를 참조하세요.

**참고**  
AWS는 2025년 2월 10일에 CloudWatch Logs에 대한 로그 전달자인 FluentD에 대한 지원을 중단했습니다. 간편하고 리소스 효율이 우수한 대안인 Fluent Bit를 사용하는 것이 좋습니다. 기존 FluentD 배포는 계속 작동합니다. 로깅 파이프라인을 Fluent Bit로 마이그레이션하여 지속적인 지원과 최적 성능을 확보하세요.  
Container Insights는 이전에 FluentD를 사용하여 컨테이너에서 로그를 전송하는 것도 지원했습니다. FluentD는 사용 중지되었으며 이제 Container Insights에서 지원되지 않습니다. 그 대신에 Fluent Bit를 사용합니다.

**Topics**
+ [Fluent Bit를 DaemonSet로 설정하여 CloudWatch Logs에 로그 전송](Container-Insights-setup-logs-FluentBit.md)
+ [(선택 사항) Amazon EKS 제어 영역 로깅 설정](Container-Insights-setup-control-plane-logging.md)
+ [(선택 사항) 대규모 클러스터에 Use\$1Kubelet 기능 활성화](ContainerInsights-use-kubelet.md)

# Fluent Bit를 DaemonSet로 설정하여 CloudWatch Logs에 로그 전송
<a name="Container-Insights-setup-logs-FluentBit"></a>

다음 단원을 통해 Fluent Bit를 배포하여 컨테이너에서 CloudWatch Logs로 로그를 전송할 수 있습니다.

**Topics**
+ [Fluent Bit 설정](#Container-Insights-FluentBit-setup)
+ [여러 줄 로그 지원](#ContainerInsights-fluentbit-multiline)
+ [(선택 사항) Fluent Bit의 로그 볼륨 축소](#ContainerInsights-fluentbit-volume)
+ [문제 해결](#Container-Insights-FluentBit-troubleshoot)
+ [대시보드](#Container-Insights-FluentBit-dashboard)

## Fluent Bit 설정
<a name="Container-Insights-FluentBit-setup"></a>

Fluent Bit를 설정하여 컨테이너에서 로그를 수집하려면 [Amazon EKS 및 Kubernetes에서 Container Insights의 빠른 시작 설정](Container-Insights-setup-EKS-quickstart.md)의 절차를 따르거나 이 단원의 절차를 따르면 됩니다.

어느 방법이든 클러스터 노드에 첨부된 IAM 역할에 충분한 권한이 있어야 합니다. Amazon EKS 클러스터를 실행하는 데 필요한 권한에 대한 자세한 내용은 *Amazon EKS 사용 설명서*의 [Amazon EKS IAM 정책, 역할 및 권한](https://docs.aws.amazon.com/eks/latest/userguide/IAM_policies.html) 단원을 참조하세요.

다음 단계에서는 Fluent Bit를 daemonSet로 설정하여 CloudWatch Logs에 로그를 전송합니다. 이 단계를 완료하면 Fluent Bit가 다음 로그 그룹을 생성합니다(아직 없는 경우).

**중요**  
Container Insights에 이미 FluentD가 구성되어 있고 FluentD DaemonSet가 예상대로 실행되지 않는 경우(`containerd` 런타임을 사용하는 경우 발생할 수 있음), Fluent Bit를 설치하기 전에 Fluent Bit를 제거해야 Fluent Bit가 FluentD 오류 로그 메시지를 처리하지 않습니다. 그러지 않으면 Fluent Bit를 성공적으로 설치한 후 즉시 FluentD를 제거해야 합니다. Fluent Bit를 설치한 후 Fluentd를 제거해도 이 마이그레이션 과정에서 로깅을 계속 유지할 수 있습니다. CloudWatch Logs로 로그를 전송하는 데 Fluent Bit 또는 FluentD 중 하나만 필요합니다.


| 로그 그룹 이름 | 로그 소스 | 
| --- | --- | 
|  `/aws/containerinsights/Cluster_Name/application`  |  `/var/log/containers`의 모든 로그 파일  | 
|  `/aws/containerinsights/Cluster_Name/host`  |  `/var/log/dmesg`, `/var/log/secure` 및 `/var/log/messages`에서의 로그  | 
|  `/aws/containerinsights/Cluster_Name/dataplane`  |  `kubelet.service`, `kubeproxy.service` 및 `docker.service`에 대한 `/var/log/journal`에서의 로그.  | 

**Fluent Bit를 설치하여 컨테이너에서 CloudWatch Logs로 로그를 전송하려면**

1. `amazon-cloudwatch`라는 네임스페이스가 아직 없는 경우 다음 명령을 입력하여 네임스페이스를 생성합니다.

   ```
   kubectl apply -f https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights-monitoring/cloudwatch-namespace.yaml
   ```

1. 다음 명령을 실행하여 로그를 전송할 클러스터 이름 및 리전이 포함된 `cluster-info`라는 ConfigMap을 생성합니다. *cluster-name* 및 *cluster-region*을 클러스터의 이름 및 리전으로 바꿉니다.

   ```
   ClusterName=cluster-name
   RegionName=cluster-region
   FluentBitHttpPort='2020'
   FluentBitReadFromHead='Off'
   [[ ${FluentBitReadFromHead} = 'On' ]] && FluentBitReadFromTail='Off'|| FluentBitReadFromTail='On'
   [[ -z ${FluentBitHttpPort} ]] && FluentBitHttpServer='Off' || FluentBitHttpServer='On'
   kubectl create configmap fluent-bit-cluster-info \
   --from-literal=cluster.name=${ClusterName} \
   --from-literal=http.server=${FluentBitHttpServer} \
   --from-literal=http.port=${FluentBitHttpPort} \
   --from-literal=read.head=${FluentBitReadFromHead} \
   --from-literal=read.tail=${FluentBitReadFromTail} \
   --from-literal=logs.region=${RegionName} -n amazon-cloudwatch
   ```

   이 명령에서 플러그 인 지표 모니터링을 위한 `FluentBitHttpServer`는 기본적으로 활성화되어 있습니다. 명령에서 이를 비활성화하려면 명령의 세 번째 줄을 `FluentBitHttpPort=''`(빈 문자열)로 변경합니다.

   또한 기본적으로 Fluent Bit는 테일에서 로그 파일을 읽으며 배포된 후 새 로그만 캡처합니다. 반대를 원하는 경우 `FluentBitReadFromHead='On'`으로 설정하면 파일 시스템의 모든 로그를 수집합니다.

1. 다음 명령 중 하나를 실행하여 Fluent Bit 데몬 세트를 다운로드한 후 클러스터에 배포합니다.
   + Linux 컴퓨터에 대한 Fluent Bit 최적화 구성을 원하는 경우 이 명령을 실행합니다.

     ```
     kubectl apply -f https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights-monitoring/fluent-bit/fluent-bit.yaml
     ```
   + Windows 컴퓨터에 대한 Fluent Bit 최적화 구성을 원하는 경우 이 명령을 실행합니다.

     ```
     kubectl apply -f https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights-monitoring/fluent-bit/fluent-bit-windows.yaml
     ```
   + Linux 컴퓨터를 사용 중이고 Fluentd와 더 유사한 Fluent Bit 구성을 원하는 경우 이 명령을 실행합니다.

     ```
     kubectl apply -f https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights-monitoring/fluent-bit/fluent-bit-compatible.yaml
     ```
**중요**  
Fluent Bit DaemonSet 구성은 기본적으로 로그 수준을 INFO로 설정하므로 CloudWatch Logs 수집 비용이 높아질 수 있습니다. 로그 수집 볼륨과 비용을 줄이려면 로그 수준을 오류로 변경하면 됩니다.  
로그 볼륨을 줄이는 방법에 대한 자세한 내용은 [(선택 사항) Fluent Bit의 로그 볼륨 축소](#ContainerInsights-fluentbit-volume) 섹션을 참조하세요.

1. 다음 명령을 입력하여 배포를 검증합니다. 각 노드에는 **fluent-bit-\$1**라는 포드가 하나 있어야 합니다.

   ```
   kubectl get pods -n amazon-cloudwatch
   ```

위 단계는 클러스터에 다음 리소스를 생성합니다.
+ `amazon-cloudwatch` 네임스페이스의 `Fluent-Bit`이라는 서비스 계정. 이 서비스 계정은 Fluent Bit daemonSet를 실행하는 데 사용됩니다. 자세한 내용은 Kubernetes 참조 문서의 [서비스 계정 관리](https://kubernetes.io/docs/reference/access-authn-authz/service-accounts-admin/)를 참조하세요.
+ `amazon-cloudwatch` 네임스페이스의 `Fluent-Bit-role`이라는 클러스터 역할. 이 클러스터 역할은 `Fluent-Bit` 서비스 계정에 대해 Pod 로그에서 `get`, `list` 및 `watch` 권한을 부여합니다. 자세한 내용은 Kubernetes 참조 문서의 [API 개요](https://kubernetes.io/docs/reference/access-authn-authz/rbac/#api-overview/)를 참조하세요.
+ `amazon-cloudwatch` 네임스페이스의 `Fluent-Bit-config`이라는 ConfigMap. 이 ConfigMap에는 Fluent Bit에서 사용할 구성이 포함되어 있습니다. 자세한 내용은 Kubernetes 작업 설명서의 [ConfigMap을 사용하도록 Pod 구성](https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/)을 참조하세요.

Fluent Bit 설정을 확인하려면 다음 단계를 따르세요.

**Fluent Bit 설정 확인**

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

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

1. Fluent Bit를 배포한 리전에 있는지 확인합니다.

1. 리전의 로그 그룹 목록을 확인합니다. 다음과 같은 모양이어야 합니다.
   + `/aws/containerinsights/Cluster_Name/application`
   + `/aws/containerinsights/Cluster_Name/host`
   + `/aws/containerinsights/Cluster_Name/dataplane`

1. 이러한 로그 그룹 중 하나로 이동하여 로그 스트림의 **마지막 이벤트 시간**을 확인합니다. 해당 시간이 Fluent Bit를 배포한 시점을 기준으로 최근인 경우 설정이 확인됩니다.

   `/dataplane` 로그 그룹을 생성하는 데 약간의 지연이 있을 수 있습니다. 이러한 로그 그룹은 Fluent Bit가 해당 로그 그룹에 대한 로그 전송을 시작할 때만 생성되기 때문에 약간의 지연 현상은 정상입니다.

## 여러 줄 로그 지원
<a name="ContainerInsights-fluentbit-multiline"></a>

여러 줄 로그와 함께 Fluent Bit를 사용하는 방법에 대한 자세한 내용은 Fluent Bit 설명서의 다음 섹션을 참조하세요.
+ [여러 줄 구문 분석](https://docs.fluentbit.io/manual/administration/configuring-fluent-bit/multiline-parsing)
+ [여러 줄 및 컨테이너(v1.8)](https://docs.fluentbit.io/manual/pipeline/inputs/tail#multiline-and-containers-v1.8)
+ [여러 줄 코어(v1.8)](https://docs.fluentbit.io/manual/pipeline/inputs/tail#multiline-core-v1.8)
+ [테일 입력에는 항상 여러 줄 사용](https://github.com/aws/aws-for-fluent-bit/blob/mainline/troubleshooting/debugging.md#always-use-multiline-the-tail-input)

## (선택 사항) Fluent Bit의 로그 볼륨 축소
<a name="ContainerInsights-fluentbit-volume"></a>

기본적으로 CloudWatch에 Fluent Bit 애플리케이션 로그와 Kubernetes 메타데이터가 전송됩니다. CloudWatch에 전송되는 데이터의 볼륨을 줄이려면 이러한 데이터 원본 중 하나 또는 둘 모두가 CloudWatch에 전송되지 못하게 막으면 됩니다. 이 페이지의 단계에 따라 Fluent Bit를 설정했다면, 이전에 실행한 kubectl `apply` 명령에서 Kubernetes 매니페스트 YAML 파일을 다운로드하고 변경 사항으로 수정한 다음 클러스터에 다시 적용할 수 있습니다. 또는 Amazon CloudWatch Observability EKS 추가 기능 또는 차트 Helm을 사용하는 경우, 추가 기능의 고급 구성 또는 차트 Helm을 사용하여 Fluent Bit 구성을 관리하는 방법에 대한 자세한 내용은 [(선택 사항) 추가 구성](install-CloudWatch-Observability-EKS-addon.md#install-CloudWatch-Observability-EKS-addon-configuration) 섹션을 참조하세요.

Fluent Bit 애플리케이션 로그를 중지하려면 `Fluent Bit configuration` 파일에서 다음 섹션을 제거합니다.

```
[INPUT]
        Name                tail
        Tag                 application.*
        Path                /var/log/containers/fluent-bit*
        Parser              docker
        DB                  /fluent-bit/state/flb_log.db
        Mem_Buf_Limit       5MB
        Skip_Long_Lines     On
        Refresh_Interval    10
```

Kubernetes 메타데이터를 제거하여 CloudWatch로 전송되는 로그 이벤트에 추가되지 못하게 하려면 Fluent Bit 구성의 `application-log.conf` 섹션에 다음 필터를 추가합니다. *<Metadata\$11>* 및 유사한 필드를 실제 메타데이터 식별자로 바꾸세요.

```
application-log.conf: |
    [FILTER]
        Name                nest
        Match               application.*
        Operation           lift
        Nested_under        kubernetes
        Add_prefix          Kube.

    [FILTER]
        Name                modify
        Match               application.*
        Remove              Kube.<Metadata_1>
        Remove              Kube.<Metadata_2>
        Remove              Kube.<Metadata_3>
    
    [FILTER]
        Name                nest
        Match               application.*
        Operation           nest
        Wildcard            Kube.*
        Nested_under        kubernetes
        Remove_prefix       Kube.
```

## 문제 해결
<a name="Container-Insights-FluentBit-troubleshoot"></a>

이러한 로그 그룹이 표시되지 않으며 리전이 올바른지 살펴보고 있는 경우 Fluent Bit daemonSet 포드의 로그를 확인하여 오류를 찾습니다.

다음 명령을 실행하여 상태가 `Running`인지 확인합니다.

```
kubectl get pods -n amazon-cloudwatch
```

로그에 IAM 권한과 관련된 오류가 있다면 클러스터 노드에 연결된 IAM 역할을 확인합니다. Amazon EKS 클러스터를 실행하는 데 필요한 권한에 대한 자세한 내용은 *Amazon EKS 사용 설명서*의 [Amazon EKS IAM 정책, 역할 및 권한](https://docs.aws.amazon.com/eks/latest/userguide/IAM_policies.html) 단원을 참조하세요.

Pod 상태가 `CreateContainerConfigError`이면 다음 명령을 실행하여 정확한 오류를 가져옵니다.

```
kubectl describe pod pod_name -n amazon-cloudwatch
```

## 대시보드
<a name="Container-Insights-FluentBit-dashboard"></a>

대시보드를 생성하여 실행 중인 각 플러그 인의 지표를 모니터링할 수 있습니다. 출력 오류 및 재시도/실패 비율 관련 데이터뿐만 아니라 입력 및 출력 바이트 관련 데이터, 레코드 처리 속도 관련 데이터를 확인할 수 있습니다. 이러한 지표를 보려면 Amazon EKS 및 Kubernetes 클러스터용 Prometheus 지표 수집과 함께 CloudWatch 에이전트를 설치해야 합니다. 대시보드 설정 방법에 대한 자세한 내용은 [Amazon EKS 및 Kubernetes 클러스터에 Prometheus 지표 수집과 함께 CloudWatch 에이전트 설치Amazon EKS 및 Kubernetes 클러스터에 Prometheus 지표 수집과 함께 CloudWatch 에이전트 설치](ContainerInsights-Prometheus-Setup.md) 단원을 참조하세요.

**참고**  
이 대시보드를 설정하려면 먼저, Prometheus 지표에 대한 Container Insights를 설정해야 합니다. 자세한 내용은 [Container Insights Prometheus 지표 모니터링](ContainerInsights-Prometheus.md) 섹션을 참조하세요.

**Fluent Bit Prometheus 지표에 대한 대시보드를 생성하려면**

1. 환경 변수를 만들어서 다음 줄의 오른쪽에 있는 값을 배포와 일치하도록 바꿉니다.

   ```
   DASHBOARD_NAME=your_cw_dashboard_name
   REGION_NAME=your_metric_region_such_as_us-west-1
   CLUSTER_NAME=your_kubernetes_cluster_name
   ```

1. 다음 명령을 실행하여 대시보드를 생성합니다.

   ```
   curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/sample_cloudwatch_dashboards/fluent-bit/cw_dashboard_fluent_bit.json \
   | sed "s/{{YOUR_AWS_REGION}}/${REGION_NAME}/g" \
   | sed "s/{{YOUR_CLUSTER_NAME}}/${CLUSTER_NAME}/g" \
   | xargs -0 aws cloudwatch put-dashboard --dashboard-name ${DASHBOARD_NAME} --dashboard-body
   ```

# (선택 사항) Amazon EKS 제어 영역 로깅 설정
<a name="Container-Insights-setup-control-plane-logging"></a>

Amazon EKS를 사용하는 경우 선택적으로 Amazon EKS 제어 영역 로깅을 사용 설정하여 Amazon EKS 제어 영역에서 CloudWatch Logs로 직접 감사 및 진단 로그를 제공할 수 있습니다. 자세한 내용은 [Amazon EKS 제어 영역 로깅](https://docs.aws.amazon.com/eks/latest/userguide/control-plane-logs.html) 단원을 참조하세요.

# (선택 사항) 대규모 클러스터에 Use\$1Kubelet 기능 활성화
<a name="ContainerInsights-use-kubelet"></a>

기본적으로 Use\$1Kubelet 기능은 FluentBit Kubernetes 플러그 인에서 비활성화되어 있습니다. 이 기능을 활성화하면 API 서버에 대한 트래픽이 줄어들고 API 서버에 병목 현상이 발생하는 문제를 완화할 수 있습니다. 대규모 클러스터에 해당 기능을 활성화하는 것이 좋습니다.

Use\$1Kubelet을 활성화하려면 먼저 노드와 노드 및 프록시 권한을 ClusterRole 구성에 추가합니다.

```
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: fluent-bit-role
rules:
  - nonResourceURLs:
      - /metrics
    verbs:
      - get
  - apiGroups: [""]
    resources:
      - namespaces
      - pods
      - pods/logs
      - nodes
      - nodes/proxy
    verbs: ["get", "list", "watch"]
```

DaemonSet 구성에서 이 기능을 사용하려면 호스트 네트워크 액세스 권한이 필요합니다. `amazon/aws-for-fluent-bit`의 이미지 버전이 2.12.0 이상이거나 fluent bit 이미지 버전이 1.7.2 이상이어야 합니다.

```
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: fluent-bit
  namespace: amazon-cloudwatch
  labels:
    k8s-app: fluent-bit
    version: v1
    kubernetes.io/cluster-service: "true"
spec:
  selector:
    matchLabels:
      k8s-app: fluent-bit
  template:
    metadata:
      labels:
        k8s-app: fluent-bit
        version: v1
        kubernetes.io/cluster-service: "true"
    spec:
      containers:
      - name: fluent-bit
        image: amazon/aws-for-fluent-bit:2.19.0
        imagePullPolicy: Always
        env:
            - name: AWS_REGION
              valueFrom:
                configMapKeyRef:
                  name: fluent-bit-cluster-info
                  key: logs.region
            - name: CLUSTER_NAME
              valueFrom:
                configMapKeyRef:
                  name: fluent-bit-cluster-info
                  key: cluster.name
            - name: HTTP_SERVER
              valueFrom:
                configMapKeyRef:
                  name: fluent-bit-cluster-info
                  key: http.server
            - name: HTTP_PORT
              valueFrom:
                configMapKeyRef:
                  name: fluent-bit-cluster-info
                  key: http.port
            - name: READ_FROM_HEAD
              valueFrom:
                configMapKeyRef:
                  name: fluent-bit-cluster-info
                  key: read.head
            - name: READ_FROM_TAIL
              valueFrom:
                configMapKeyRef:
                  name: fluent-bit-cluster-info
                  key: read.tail
            - name: HOST_NAME
              valueFrom:
                fieldRef:
                  fieldPath: spec.nodeName
            - name: HOSTNAME
              valueFrom:
                fieldRef:
                  apiVersion: v1
                  fieldPath: metadata.name      
            - name: CI_VERSION
              value: "k8s/1.3.8"
        resources:
            limits:
              memory: 200Mi
            requests:
              cpu: 500m
              memory: 100Mi
        volumeMounts:
        # Please don't change below read-only permissions
        - name: fluentbitstate
          mountPath: /var/fluent-bit/state
        - name: varlog
          mountPath: /var/log
          readOnly: true
        - name: varlibdockercontainers
          mountPath: /var/lib/docker/containers
          readOnly: true
        - name: fluent-bit-config
          mountPath: /fluent-bit/etc/
        - name: runlogjournal
          mountPath: /run/log/journal
          readOnly: true
        - name: dmesg
          mountPath: /var/log/dmesg
          readOnly: true
      terminationGracePeriodSeconds: 10
      hostNetwork: true
      dnsPolicy: ClusterFirstWithHostNet
      volumes:
      - name: fluentbitstate
        hostPath:
          path: /var/fluent-bit/state
      - name: varlog
        hostPath:
          path: /var/log
      - name: varlibdockercontainers
        hostPath:
          path: /var/lib/docker/containers
      - name: fluent-bit-config
        configMap:
          name: fluent-bit-config
      - name: runlogjournal
        hostPath:
          path: /run/log/journal
      - name: dmesg
        hostPath:
          path: /var/log/dmesg
      serviceAccountName: fluent-bit
      tolerations:
      - key: node-role.kubernetes.io/master
        operator: Exists
        effect: NoSchedule
      - operator: "Exists"
        effect: "NoExecute"
      - operator: "Exists"
        effect: "NoSchedule"
```

쿠버네티스 플러그 인 구성은 다음과 유사합니다.

```
[FILTER]
        Name                kubernetes
        Match               application.*
        Kube_URL            https://kubernetes.default.svc:443
        Kube_Tag_Prefix     application.var.log.containers.
        Merge_Log           On
        Merge_Log_Key       log_processed
        K8S-Logging.Parser  On
        K8S-Logging.Exclude Off
        Labels              Off
        Annotations         Off
        Use_Kubelet         On
        Kubelet_Port        10250 
        Buffer_Size         0
```

# Amazon EKS 및 Kubernetes에서 Container Insights 업데이트 또는 삭제
<a name="ContainerInsights-update-delete"></a>

이 단원의 절차를 통해 CloudWatch 에이전트 컨테이너 이미지를 업데이트하거나 Amazon EKS 또는 Kubernetes 클러스터에서 Container Insights를 제거할 수 있습니다.

**Topics**
+ [CloudWatch에서 Amazon EKS에 대한 향상된 관찰성을 갖춘 Container Insights로 업그레이드](Container-Insights-upgrade-enhanced.md)
+ [CloudWatch 에이전트 컨테이너 이미지 업데이트](ContainerInsights-update-image.md)
+ [Container Insights의 CloudWatch 에이전트 및 Fluent Bit 삭제](ContainerInsights-delete-agent.md)

# CloudWatch에서 Amazon EKS에 대한 향상된 관찰성을 갖춘 Container Insights로 업그레이드
<a name="Container-Insights-upgrade-enhanced"></a>

**중요**  
Amazon EKS 클러스터에 Container Insights를 업그레이드 또는 설치하는 경우 이 섹션의 지침을 따르는 대신 Amazon CloudWatch Observability EKS 추가 기능을 사용하여 설치하는 것이 좋습니다. 또한 가속화된 컴퓨팅 지표를 검색하려면 Amazon CloudWatch Observability EKS 추가 기능을 사용해야 합니다. 자세한 정보와 지침은 [Amazon CloudWatch Observability EKS 추가 기능 빠른 시작](Container-Insights-setup-EKS-addon.md) 섹션을 참조하십시오.

Amazon EKS의 향상된 관찰 기능을 갖춘 Container Insights는 Container Insights의 최신 버전입니다. Amazon EKS를 실행하는 클러스터에서 세부 지표를 수집하고, 애플리케이션 및 인프라 텔레메트리를 자세히 살펴볼 수 있도록 즉시 사용할 수 있는 선별된 대시보드를 제공합니다. 이 버전의 Container Insights에 대한 자세한 정보는 [Amazon EKS의 향상된 관찰성을 갖춘 Container Insights](container-insights-detailed-metrics.md) 섹션을 참조하세요.

Amazon EKS 클러스터에 원래 버전의 Container Insights를 설치한 후 관찰 기능이 향상된 새 버전으로 업그레이드하려면 이 섹션의 지침을 따르세요.

**중요**  
이 섹션의 단계를 완료하기 전에 먼저, cert-manager를 포함한 사전 조건을 확인해야 합니다. 자세한 내용은 [CloudWatch 에이전트 운영자 및 Fluent Bit를 사용한 빠른 시작](Container-Insights-setup-EKS-quickstart.md#Container-Insights-setup-EKS-quickstart-FluentBit) 섹션을 참조하세요.

**Amazon EKS 클러스터를 Amazon EKS의 향상된 관찰 기능을 갖춘 Container Insights로 업그레이드**

1. 다음 명령을 입력하여 CloudWatch 에이전트 운영자를 설치합니다. *my-cluster-name*을 Amazon EKS 또는 Kubernetes 클러스터의 이름으로 바꾸고, *my-cluster-region*을 로그가 게시되는 리전의 이름으로 바꿉니다. AWS 아웃바운드 데이터 전송 비용을 줄이기 위해 클러스터가 배포되는 리전과 동일한 리전을 사용하는 것이 좋습니다.

   ```
   ClusterName=my-cluster-name
   RegionName=my-cluster-region
   curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/main/k8s-quickstart/cwagent-operator-rendered.yaml | sed 's/{{cluster_name}}/'${ClusterName}'/g;s/{{region_name}}/'${RegionName}'/g' | kubectl apply -f -
   ```

   리소스 충돌로 인해 장애가 발생하는 경우 이는 CloudWatch 에이전트와 Fluent Bit 및 ServiceAccount, ClusterRole, ClusterRoleBinding 등 Fluent Bit 구성 요소가 클러스터에 설치되어 있기 때문일 수 있습니다. CloudWatch 에이전트 운영자가 CloudWatch 에이전트 및 연결된 구성 요소를 설치하려고 할 때 콘텐츠의 변경 사항이 탐지되면 기본적으로 클러스터의 리소스 상태를 덮어쓰지 않도록 설치 또는 업데이트가 실패합니다. 이전에 클러스터에 설치한 Container Insights 설정을 포함하여 기존 CloudWatch 에이전트를 삭제한 다음 CloudWatch 에이전트 운영자를 설치하는 것이 좋습니다.

1. (선택 사항) 기존 사용자 지정 Fluent Bit 구성을 적용하려면 Fluent Bit 데몬셋과 연결된 Configmap을 업데이트해야 합니다. CloudWatch 에이전트 운영자는 Fluent Bit의 기본 구성을 제공하며, 사용자는 필요에 따라 기본 구성을 재정의 또는 수정할 수 있습니다. 사용자 지정 구성을 적용하려면 다음 단계를 따릅니다.

   1. 다음 명령을 입력하여 기존 구성을 엽니다.

      ```
      kubectl edit cm fluent-bit-config -n amazon-cloudwatch
      ```

   1. 파일을 변경한 다음 `:wq`를 입력하여 파일을 저장하고 편집 모드를 종료합니다.

   1. 다음 명령을 입력하여 Fluent Bit를 다시 시작합니다.

      ```
      kubectl rollout restart ds fluent-bit -n amazon-cloudwatch
      ```

# CloudWatch 에이전트 컨테이너 이미지 업데이트
<a name="ContainerInsights-update-image"></a>

**중요**  
Amazon EKS 클러스터에 Container Insights를 업그레이드 또는 설치하는 경우 이 섹션의 지침을 따르는 대신 Amazon CloudWatch Observability EKS 추가 기능을 사용하여 설치하는 것이 좋습니다. 또한 가속화된 컴퓨팅 지표를 검색하려면 Amazon CloudWatch Observability EKS 추가 기능 또는 CloudWatch 에이전트 운영자를 사용해야 합니다. 자세한 정보와 지침은 [Amazon CloudWatch Observability EKS 추가 기능 빠른 시작](Container-Insights-setup-EKS-addon.md) 섹션을 참조하십시오.

컨테이너 이미지를 최신 버전으로 업데이트해야 하는 경우 이 단원의 절차를 따르세요.

**컨테이너 이미지를 업데이트하려면**

1. 다음 명령을 입력하여 `amazoncloudwatchagent` 사용자 지정 리소스 정의(CRD)가 이미 존재하는지 확인합니다.

   ```
   kubectl get crds amazoncloudwatchagents.cloudwatch.aws.amazon.com -n amazon-cloudwatch
   ```

   이 명령에서 CRD가 누락되었다는 오류를 반환하는 경우 클러스터에는 CloudWatch 에이전트 운영자로 구성된 Amazon EKS의 향상된 관찰 기능을 갖춘 Container Insights가 없는 것입니다. 이 경우 [CloudWatch에서 Amazon EKS에 대한 향상된 관찰성을 갖춘 Container Insights로 업그레이드](Container-Insights-upgrade-enhanced.md) 섹션을 참조하세요.

1. 다음 명령을 입력하여 최신 `cwagent-version.yaml` 파일을 적용합니다.

   ```
   curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/main/k8s-quickstart/cwagent-version.yaml | kubectl apply -f -
   ```

# Container Insights의 CloudWatch 에이전트 및 Fluent Bit 삭제
<a name="ContainerInsights-delete-agent"></a>

Amazon EKS용 CloudWatch Observability 추가 기능 설치를 사용하여 Container Insights를 설치한 경우, 다음 명령을 입력하여 Container Insights와 CloudWatch 에이전트를 삭제할 수 있습니다.

**참고**  
Amazon EKS 추가 기능은 이제 Windows 워커 노드의 Container Insights를 지원합니다. Amazon EKS 추가 기능을 삭제하면 Windows용 Container Insights도 삭제됩니다.

```
aws eks delete-addon —cluster-name my-cluster —addon-name amazon-cloudwatch-observability
```

또는 CloudWatch 에이전트 및 Fluent Bit와 관련된 모든 리소스를 삭제하려면 다음 명령을 입력합니다. 이 명령에서 *My\$1Cluster\$1Name*은 Amazon EKS 또는 Kubernetes 클러스터의 이름이며, *My\$1Region*은 로그가 게시되는 리전의 이름입니다.

```
ClusterName=My_Cluster_Name
RegionName=My-Region
curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/main/k8s-quickstart/cwagent-operator-rendered.yaml | sed 's/{{cluster_name}}/'${ClusterName}'/g;s/{{region_name}}/'${RegionName}'/g' | kubectl delete -f -
curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/main/k8s-quickstart/cwagent-custom-resource-definitions.yaml | kubectl delete -f -
```

# RedHat OpenShift on AWS(ROSA)에서 Container Insights 설정
<a name="deploy-container-insights-RedHatOpenShift"></a>

관찰성이 향상된 CloudWatch Container Insights에서는 RedHat OpenShift on AWS(ROSA)가 지원됩니다. 이 버전에서는 ROSA 클러스터에 대한 향상된 관찰성이 지원됩니다. CloudWatch 에이전트 연산자 헬름 차트를 설치하면 Container Insights에서는 클러스터 수준부터 환경의 컨테이너 수준까지 상세한 인프라 원격 측정을 자동으로 수집합니다. 그런 다음 큐레이션된 대시보드에이 성능 데이터를 표시하여 관찰성 설정에서 과도한 부담을 제거합니다.

**참고**  
RedHat for OpenShift on AWS(ROSA)의 경우 헬름 차트를 사용하여 CloudWatch 에이전트 연산자를 설치하면 CloudWatch 에이전트도 기본적으로 활성화되어 Application Signals에 대해 계측된 애플리케이션에서 지표와 트레이스를 모두 수신할 수 있습니다. 사용자 지정 구성 규칙을 선택적으로 전달하려면 [(선택 사항) 추가 구성](install-CloudWatch-Observability-EKS-addon.md#install-CloudWatch-Observability-EKS-addon-configuration)에 간략히 설명된 대로, (선택 사항) [추가 구성]에 간략히 설명된 대로, 헬름 차트를 사용하여 사용자 지정 에이전트 구성을 전달하면 됩니다.

**관찰성이 향상된 Container Insights를 RedHat OpenShift on AWS(ROSA)에 설치하는 방법**

1. 필요한 경우 헬름을 설치합니다. 자세한 내용은 헬름 설명서의 [빠른 시작 안내서](https://helm.sh/docs/intro/quickstart/)를 참조하세요.

1. 다음과 같은 명령을 입력하여 CloudWatch 에이전트 연산자를 설치합니다. *my-cluster-name*을 클러스터 이름으로 바꾸고, *my-cluster-region*을 클러스터가 실행되는 리전으로 바꿉니다.

   ```
   helm repo add aws-observability https://aws-observability.github.io/helm-charts
   helm repo update aws-observability
   helm install --wait --create-namespace \
       --namespace amazon-cloudwatch amazon-cloudwatch-observability \
       aws-observability/amazon-cloudwatch-observability \
       --set clusterName=my-cluster-name \
       --set region=my-cluster-region \
       --set k8sMode=ROSA
   ```

1. [Amazon CloudWatch Observability EKS 추가 기능 또는 헬름 차트를 사용하여 CloudWatch 에이전트 설치](install-CloudWatch-Observability-EKS-addon.md)의 옵션 1, 옵션 2 또는 옵션 3의 단계에 따라 에이전트 연산자에 대한 권한 부여를 설정합니다.

# Container Insights 지표 보기
<a name="Container-Insights-view-metrics"></a>

Container Insights를 설정하고 지표를 수집한 후에는 CloudWatch 콘솔에서 해당 지표를 볼 수 있습니다.

대시보드에 Container Insights 지표를 표시하려면 Container Insights 설정을 완료해야 합니다. 자세한 내용은 [Container Insights 설정](deploy-container-insights.md) 섹션을 참조하세요.

이 절차에서는 Container Insights가 수집된 로그 데이터에서 자동으로 생성하는 지표를 보는 방법을 설명합니다. 이 단원의 나머지 부분에서는 데이터를 심층적으로 분석하고 CloudWatch Logs Insights를 사용하여 더 세분화된 수준에서 더 많은 지표를 확인하는 방법을 설명합니다.

**Container Insights 지표를 보려면**

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

1. 탐색 창에서 **인사이트**를 선택한 다음 **Container Insights**를 선택합니다.

1. 맨 위 근처의 드롭다운 상자를 사용하여 보려는 리소스 유형과 특정 리소스를 선택합니다.

Container Insights가 수집하는 지표에 대해 CloudWatch 경보를 설정할 수 있습니다. 자세한 내용은 [Amazon CloudWatch 경보 사용](CloudWatch_Alarms.md) 섹션을 참조하세요.

**참고**  
컨테이너화된 애플리케이션을 모니터링하도록 CloudWatch Application Insights를 이미 설정한 경우 Application Insights 대시보드가 Container Insights 대시보드 아래에 표시됩니다. 아직 Application Insights를 활성화하지 않은 경우 Container Insights 대시보드의 성능 보기 아래에 있는 **Application Insights 자동 구성(Auto-configure Application Insights)**을 선택해 활성화할 수 있습니다.  
Application Insights 및 컨테이너화 애플리케이션에 대한 자세한 내용은 [Amazon ECS 및 Amazon EKS 리소스 모니터링을 위한 Application Insights 활성화](appinsights-setting-up-console.md#appinsights-container-insights) 섹션을 참조하세요.

## 상위 기여자 보기
<a name="Container-Insights-view-metrics-topn"></a>

Container Insights 성능 모니터링의 일부 보기에서는 메모리나 CPU 또는 가장 최근의 활성 리소스를 기준으로 상위 기여자를 확인할 수도 있습니다. 페이지 상단 근처의 드롭다운 상자에서 다음 대시보드 중 하나를 선택할 경우 사용할 수 있습니다.
+ ECS 서비스
+ ECS 태스크
+ EKS 네임스페이스
+ EKS 서비스
+ EKS 포드

이러한 유형의 리소스 중 하나를 살펴볼 때 페이지 하단에 처음에 CPU 사용량별로 정렬된 테이블이 표시됩니다. 메모리 사용량 또는 최근 활동별로 정렬되도록 변경할 수 있습니다. 테이블의 행 중 하나에 대해 자세히 보려면 해당 행 옆의 확인란을 선택한 다음, [**작업(Actions)**]을 선택하고 [**작업(Actions)** 메뉴의 옵션 중 하나를 선택합니다.

## CloudWatch Logs Insights를 사용하여 Container Insights 데이터 보기
<a name="Container-Insights-CloudWatch-Logs-Insights"></a>

Container Insights는 [임베디드 지표 형식](CloudWatch_Embedded_Metric_Format.md)을 사용한 성능 로그 이벤트를 사용하여 지표를 수집합니다. 로그는 CloudWatch Logs에 저장됩니다. CloudWatch는 CloudWatch 콘솔에서 볼 수 있는 로그에서 여러 지표를 자동으로 생성합니다. CloudWatch Logs Insights 쿼리를 사용하면 수집된 성능 데이터를 더 심층적으로 분석할 수도 있습니다.

CloudWatch Logs Insights에 대한 자세한 내용은 [CloudWatch Logs Insights를 사용한 로그 데이터 분석](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AnalyzingLogData.html) 단원을 참조하세요. 쿼리에서 사용할 수 있는 로그 필드에 대한 자세한 내용은 [Amazon EKS 및 Kubernetes의 Container Insights 성능 로그 이벤트](Container-Insights-reference-performance-logs-EKS.md) 단원을 참조하세요.

**CloudWatch Logs Insights를 사용하여 컨테이너 지표 데이터를 쿼리하려면**

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

1. 탐색 창에서 **로그**, **로그 인사이트**를 선택합니다.

   화면 상단 근처에 쿼리 편집기가 있습니다. CloudWatch Logs Insights를 처음 열면 이 상자에는 최신 로그 이벤트 20개를 반환하는 기본 쿼리가 포함되어 있습니다.

1. 쿼리 편집기 위의 상자에서 쿼리할 Container Insights 로그 그룹을 선택합니다. 작업할 다음 예제 쿼리에서는 로그 그룹 이름이 **performance**로 끝나야 합니다.

   로그 그룹을 선택하면 CloudWatch Logs Insights가 로그 그룹의 데이터에서 필드를 자동으로 감지하고 오른쪽 창의 [**검색된 필드(Discovered fields)**]에 해당 필드를 표시합니다. 또한 이 로그 그룹의 로그 이벤트를 시간의 흐름에 따라 보여주는 막대 그래프도 표시합니다. 이 막대 그래프에서는 테이블에 표시된 이벤트뿐만 아니라 쿼리 및 시간 범위와 일치하는 로그 그룹 내 이벤트의 분포를 보여줍니다.

1. 쿼리 편집기에서 기본 쿼리를 다음 쿼리로 바꾸고 **쿼리 실행**을 선택합니다.

   ```
   STATS avg(node_cpu_utilization) as avg_node_cpu_utilization by NodeName
   | SORT avg_node_cpu_utilization DESC
   ```

   이 쿼리는 노드 목록을 평균적인 노드 CPU 이용률에 따라 정렬하여 보여줍니다.

1. 또 다른 예를 시도하려면 쿼리를 다음 쿼리로 바꾸고 **쿼리 실행**을 선택합니다. 추가 샘플 쿼리는 이 페이지 후반부에 나열되어 있습니다.

   ```
   STATS avg(number_of_container_restarts) as avg_number_of_container_restarts by PodName
   | SORT avg_number_of_container_restarts DESC
   ```

   이 쿼리는 Pod 목록을 평균적인 컨테이너 재시작 횟수에 따라 정렬하여 보여줍니다.

1. 또 다른 쿼리를 시도하고 싶은 경우에는 화면 오른쪽의 목록에 필드를 포함시킬 수 있습니다. 쿼리 구문에 대한 자세한 내용은 [CloudWatch Logs Insights 쿼리 구문](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax.html) 단원을 참조하세요.

**리소스 목록을 보려면**

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

1. 탐색 창에서 **Resources**를 선택합니다.

1. 기본 보기는 Container Insights에서 모니터링하는 리소스 목록과 이러한 리소스에 대해 설정한 경보입니다. 리소스의 시각적 맵을 보려면 **맵 보기**를 선택합니다.

1. 맵 보기에서 맵의 리소스 위에 포인터를 일시 중지하여 해당 리소스에 대한 기본 지표를 볼 수 있습니다. 리소스를 선택하여 리소스에 대한 자세한 그래프를 볼 수 있습니다.

## 사용 사례: Amazon ECS 컨테이너의 태스크 수준 지표 보기
<a name="Container-Insights-CloudWatch-Logs-Insights-example"></a>

다음 예에서는 CloudWatch Logs Insights를 사용하여 Container Insights 로그를 더 심층적으로 분석하는 방법을 보여 줍니다. 더 많은 예는 [Amazon ECS의 Amazon CloudWatch Container Insights 소개](https://aws.amazon.com/blogs/mt/introducing-container-insights-for-amazon-ecs/) 블로그를 참조하세요.

 Container Insights는 세분화된 태스크 수준에서 지표를 자동으로 생성하지 않습니다. 다음 쿼리는 CPU 및 메모리 사용량에 대한 태스크 수준 지표를 표시합니다.

```
stats avg(CpuUtilized) as CPU, avg(MemoryUtilized) as Mem by TaskId, ContainerName
| sort Mem, CPU desc
```

## Container Insights에 대한 기타 샘플 쿼리
<a name="Container-Insights-sample-queries"></a>

**평균적인 컨테이너 재시작 횟수에 따라 정렬된 Pod 목록**

```
STATS avg(number_of_container_restarts) as avg_number_of_container_restarts by PodName
| SORT avg_number_of_container_restarts DESC
```

**요청된 Pod와 실행 중인 Pod 간 비교**

```
fields @timestamp, @message 
| sort @timestamp desc 
| filter Type="Pod" 
| stats min(pod_number_of_containers) as requested, min(pod_number_of_running_containers) as running, ceil(avg(pod_number_of_containers-pod_number_of_running_containers)) as pods_missing by kubernetes.pod_name 
| sort pods_missing desc
```

**클러스터 노드 실패 횟수**

```
stats avg(cluster_failed_node_count) as CountOfNodeFailures 
| filter Type="Cluster" 
| sort @timestamp desc
```

**컨테이너 이름별 애플리케이션 로그 오류**

```
stats count() as countoferrors by kubernetes.container_name 
| filter stream="stderr" 
| sort countoferrors desc
```

# Container Insights에서 수집한 지표
<a name="Container-Insights-metrics"></a>

Container Insights에서는 Amazon ECS 및 Amazon ECS의 AWS Fargate에 대한 하나의 지표 세트와 Amazon EKS, Amazon EKS의 AWS Fargate, RedHat OpenShift on AWS(ROSA) 및 Kubernetes에 대한 다른 세트를 수집합니다.

컨테이너 작업이 일정 시간 동안 실행될 때까지는 지표가 표시되지 않습니다.

**Topics**
+ [향상된 관찰성 지표를 갖춘 Amazon ECS Container Insights](Container-Insights-enhanced-observability-metrics-ECS.md)
+ [Amazon ECS Container Insights 지표](Container-Insights-metrics-ECS.md)
+ [Amazon EKS 및 향상된 관찰성 지표를 갖춘 Kubernetes Container Insights](Container-Insights-metrics-enhanced-EKS.md)
+ [Amazon EKS 및 Kubernetes Container Insights 지표](Container-Insights-metrics-EKS.md)
+ [Container Insights 성능 로그 참조](Container-Insights-reference.md)
+ [Container Insights Prometheus 지표 모니터링](ContainerInsights-Prometheus.md)
+ [Application Insights와 통합](container-insights-appinsights.md)
+ [Container Insights 내에서 Amazon ECS 수명 주기 이벤트 보기](container-insights-ECS-lifecycle-events.md)
+ [Container Insights 문제 해결](ContainerInsights-troubleshooting.md)
+ [자체 CloudWatch 에이전트 Docker 이미지 구축](ContainerInsights-build-docker-image.md)
+ [컨테이너에 다른 CloudWatch 에이전트 기능 배포](ContainerInsights-other-agent-features.md)

# 향상된 관찰성 지표를 갖춘 Amazon ECS Container Insights
<a name="Container-Insights-enhanced-observability-metrics-ECS"></a>

향상된 관찰성을 갖춘 Container Insights는 다음 기능을 제공하여 컨테이너화된 워크로드에 대한 심층적인 가시성을 제공합니다.
+ 작업 및 컨테이너 수준 모두에서 보다 높은 지표 세분화
+ 모니터링 및 문제 해결 기능 개선
+ CloudWatch Logs와 통합으로 지원되는 기능:
  + 로그 항목에 지표 이상 연관
  + 더 빠른 근본 원인 분석 수행
  + 복잡한 컨테이너 문제의 해결 시간 단축

**사용 사례**

향상된 관찰성을 갖춘 Container Insights는 표준 Container Insights의 기능을 확장합니다. 다음 사용 사례를 지원합니다.
+ **태스크 수준 문제 해결** - 태스크 수준에서 성능 병목 현상을 식별합니다. 태스크 수준 지표를 분석하고 예약된 리소스와 비교하여 태스크에 충분한 처리 용량이 있는지 확인합니다.
+ **컨테이너 수준 리소스 최적화** - 예약 수준 대비 사용률을 추적하여 리소스가 제한되거나 과다 프로비저닝된 컨테이너 식별 
+ **컨테이너 상태 평가** - 재시작 수 및 상태 전환을 모니터링하여 개입이 필요한 불안정한 컨테이너 감지 
+ **애플리케이션 성능 모니터링** - 애플리케이션이 서로 통신하는 방식을 추적하고, 리소스 사용 패턴을 모니터링하며, 데이터 스토리지 성능 최적화
+ **작업 모니터링** - 배포를 모니터링하고, 블루 또는 그린 배포에 대한 태스크 세트를 추적하며, 서비스 지표를 통해 플랫폼 상태 유지

Amazon ECS 지표에 대한 자세한 내용은 [Amazon ECS 서비스 사용률 지표 사용 사례](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service_utilization-metrics-explanation.html), 향상된 관찰성을 갖춘 Container Insights에 대한 자세한 내용은 [향상된 관찰성 지표를 갖춘 Amazon ECS Container Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Container-Insights-enhanced-observability-metrics-ECS.html)를 참조하세요.

또한 Container Insights는 모든 태스크의 데이터를 평균화하여 클러스터, 서비스 및 대몬 전반의 통계도 표시합니다. 이를 통해 서비스 및 대몬 상태를 더 개략적으로 파악할 수 있으므로 환경 모니터링과 용량 계획에 모두 유용합니다.

**참고**  
Amazon ECS 관리형 대몬 지표는 서비스 지표와 동일한 `ECS/ContainerInsights` 네임스페이스와 `ServiceName` 차원을 사용합니다. 대몬 지표의 경우 `ServiceName` 차원 값은 `daemon:daemon-name` 형식을 사용합니다. 예를 들어 `my-daemon` 대몬에서 `ServiceName` 차원 값이 `daemon:my-daemon`입니다. `ServiceName` 차원을 포함하는 아래 표의 모든 지표는 관리형 대몬에도 적용됩니다.

아래 표에는 향상된 관찰성을 갖춘 Container Insights가 Amazon ECS에 대해 수집하는 지표 및 측정기준이 나와 있습니다. 이러한 지표는 `ECS/ContainerInsights` 네임스페이스에 있습니다. 자세한 내용은 [Metrics](cloudwatch_concepts.md#Metric) 섹션을 참조하세요.

콘솔에 Container Insights 지표가 표시되지 않는 경우, 향상된 관찰성을 갖춘 Container Insights 설정을 완료했는지 확인합니다. 향상된 관찰성을 갖춘 Container Insights 설정이 완료되기 전에는 지표가 표시되지 않습니다. 자세한 내용은 [향상된 관찰 기능을 갖춘 Container Insights 설정](deploy-container-insights-ECS-cluster.md#set-container-insights-ECS-cluster-enhanced) 섹션을 참조하세요.

아래의 지표는 모든 시작 유형에 사용 가능합니다.


| 지표 이름 | 측정 기준 | 설명 | 
| --- | --- | --- | 
|  `ContainerInstanceCount`  |  `ClusterName`  |  클러스터에 등록된 Amazon ECS 에이전트를 실행하는 EC2 인스턴스의 수입니다. 이 지표는 클러스터에서 Amazon ECS 작업을 실행하는 컨테이너 인스턴스에 대해서만 수집됩니다. Amazon ECS 작업이 없는 빈 컨테이너 인스턴스에 대해서는 수집되지 않습니다. 단위: 수  | 
|  `ContainerCpuUtilized`  |  `ClusterName` `ContainerName`, `TaskId`, `ServiceName`, `ClusterName` `ContainerName`, `TaskDefinitionFamily`, `ClusterName`, `TaskId` `TaskDefinitionFamily`, `ClusterName`, `ContainerName` `ServiceName`, `ClusterName`, `ContainerName`  |  사용 중인 측정기준 세트로 지정된 리소스의 컨테이너에서 사용하는 CPU 단위입니다. 관리형 대몬에도 적용됩니다. 단위: 없음  | 
|  `ContainerCpuReserved`  |  `ClusterName` `ContainerName`, `TaskId`, `ServiceName`, `ClusterName` `ContainerName`, `TaskDefinitionFamily`, `ClusterName`, `TaskId` `TaskDefinitionFamily`, `ClusterName`, `ContainerName` `ServiceName`, `ClusterName`, `ContainerName`  |  사용 중인 측정기준 세트에서 지정한 리소스의 컨테이너에서 예약된 CPU 단위입니다. 이 지표는 작업 또는 모든 컨테이너 수준과 같이 작업 정의에 정의된 CPU 예약을 기반으로 수집됩니다. 작업 정의에 지정되지 않은 경우 인스턴스 CPU 예약이 사용됩니다. 관리형 대몬에도 적용됩니다. 단위: 없음  | 
|  `ContainerCpuUtilization`  |  `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName` `ClusterName` `ClusterName`, `ServiceName`, `TaskId` `ClusterName`, `TaskDefinitionFamily`, `TaskId`   | 사용 중인 측정기준 세트로 지정된 리소스의 컨테이너에서 사용 중인 총 CPU 단위의 비율입니다. 단위: 퍼센트 | 
|  `ContainerMemoryUtilized`  |  `ClusterName` `ContainerName`, `TaskId`, `ServiceName`, `ClusterName` `ContainerName`, `TaskDefinitionFamily`, `ClusterName`, `TaskId` `TaskDefinitionFamily`, `ClusterName`, `ContainerName` `ServiceName`, `ClusterName`, `ContainerName`  |  사용 중인 측정기준 세트로 지정된 리소스의 컨테이너에서 사용 중인 메모리입니다. 관리형 대몬에도 적용됩니다. 단위: 메가바이트  | 
|  `ContainerMemoryReserved`  |  `ClusterName` `ContainerName`, `TaskId`, `ServiceName`, `ClusterName` `ContainerName`, `TaskDefinitionFamily`, `ClusterName`, `TaskId` `TaskDefinitionFamily`, `ClusterName`, `ContainerName` `ServiceName`, `ClusterName`, `ContainerName`  |  사용 중인 측정기준 세트에서 지정한 리소스의 컨테이너에서 예약된 메모리입니다. 이 지표는 작업 또는 모든 컨테이너 수준과 같이 작업 정의에 정의된 메모리 예약을 기반으로 수집됩니다. 작업 정의에 지정되지 않은 경우 인스턴스 메모리 예약이 사용됩니다. 관리형 대몬에도 적용됩니다. 단위: 메가바이트  | 
|  `ContainerMemoryUtilization`  |  `ClusterName` `ContainerName`, `TaskId`, `ServiceName`, `ClusterName` `ContainerName`, `TaskDefinitionFamily`, `ClusterName`, `TaskId` `TaskDefinitionFamily`, `ClusterName`, `ContainerName` `ServiceName`, `ClusterName`, `ContainerName`  | 사용 중인 측정기준 세트로 지정된 리소스의 컨테이너에서 사용 중인 총 메모리 비율입니다. 관리형 대몬에도 적용됩니다. 단위: 퍼센트 | 
|  `ContainerNetworkRxBytes`  |  `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName` `ClusterName` `ClusterName`, `ServiceName`, `TaskId` `ClusterName`, `TaskDefinitionFamily`, `TaskId`  |  사용 중인 측정기준에서 지정한 컨테이너에서 수신된 바이트의 숫자입니다. 이 지표는 Docker 런타임에서 가져옵니다. 이 지표는 `awsvpc` 또는 `bridge` 네트워크 모드를 사용하는 태스크의 컨테이너에 대해서만 제공됩니다. 관리형 대몬에도 적용됩니다. 단위: 바이트/초  | 
|  `ContainerNetworkTxBytes`  |  `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName` `ClusterName` `ClusterName`, `ServiceName`, `TaskId` `ClusterName`, `TaskDefinitionFamily`, `TaskId`  |  사용 중인 측정기준에서 지정한 컨테이너에서 전송된 바이트의 숫자입니다. 이 지표는 Docker 런타임에서 가져옵니다. 이 지표는 `awsvpc` 또는 `bridge` 네트워크 모드를 사용하는 태스크의 컨테이너에 대해서만 제공됩니다. 관리형 대몬에도 적용됩니다. 단위: 바이트/초  | 
|  `ContainerStorageReadBytes`  |  `ClusterName` `ClusterName`, `ServiceName`, `ContainerName` `ClusterName`, `TaskDefinitionFamily`, `ContainerName` `ClusterName`, `ServiceName`, `TaskId`, `ContainerName` `ClusterName`, `TaskDefinitionFamily`, `TaskId`, `ContainerName`  |  사용 중인 측정기준에서 지정한 리소스의 컨테이너에 있는 스토리지에서 읽힌 바이트의 숫자입니다. 스토리지 디바이스의 읽기 바이트는 여기에 포함되지 않습니다. 이 지표는 Docker 런타임에서 가져옵니다. 관리형 대몬에도 적용됩니다. 단위: 바이트  | 
|  `ContainerStorageWriteBytes`  |  `ClusterName` `ClusterName`, `ServiceName`, `ContainerName` `ClusterName`, `TaskDefinitionFamily`, `ContainerName` `ClusterName`, `ServiceName`, `TaskId`, `ContainerName` `ClusterName`, `TaskDefinitionFamily`, `TaskId`, `ContainerName`  |  사용 중인 측정기준에서 지정한 컨테이너의 스토리지에서 쓰여진 바이트의 숫자입니다. 이 지표는 Docker 런타임에서 가져옵니다. 관리형 대몬에도 적용됩니다. 단위: 바이트  | 
|  `CpuUtilized`  |  `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName` `ClusterName` `ClusterName`, `ServiceName`, `TaskId` `ClusterName`, `TaskDefinitionFamily`, `TaskId`   |  사용 중인 측정기준 세트로 지정된 리소스의 작업에서 사용하는 CPU 단위입니다. 관리형 대몬에도 적용됩니다. 단위: 없음  | 
|  `CpuReserved`  |  `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName` `ClusterName` `ClusterName`, `ServiceName`, `TaskId` `ClusterName`, `TaskDefinitionFamily`, `TaskId`  |  사용 중인 측정기준 세트에서 지정한 리소스의 작업에서 예약된 CPU 단위입니다. 이 지표는 작업 또는 모든 컨테이너 수준과 같이 작업 정의에 정의된 CPU 예약을 기반으로 수집됩니다. 작업 정의에 지정되지 않은 경우 인스턴스 CPU 예약이 사용됩니다. 관리형 대몬에도 적용됩니다. 단위: 없음  | 
|  `DeploymentCount`  |  `ServiceName`, `ClusterName`  |  Amazon ECS 서비스의 배포 수입니다. 단위: 수  | 
|  `DesiredTaskCount`  |  `ServiceName`, `ClusterName`  |  Amazon ECS 서비스에 대해 원하는 태스크 수입니다. 단위: 수  | 
|  `EBSFilesystemSize`  |  `ClusterName` ,`TaskDefinitionFamily`, `VolumeName` `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName`  |  사용 중인 차원으로 지정된 리소스에 할당된 Amazon EBS 파일 시스템 스토리지의 총량(GB) 이 지표는 플랫폼 버전 `1.4.0`을(를) 사용하는 Fargate에서 실행되는 Amazon ECS 인프라 또는 컨테이너 에이전트 버전 `1.79.0` 이상을 사용하는 Amazon EC2 인스턴스에서 실행되는 작업에만 사용할 수 있습니다. 관리형 대몬에도 적용됩니다. 단위: 기가바이트(GB)  | 
|  `EBSFilesystemUtilized`  |  `ClusterName` ,`TaskDefinitionFamily`, `VolumeName` `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName`  |  사용 중인 차원으로 지정된 리소스에서 사용하는 Amazon EBS 파일 시스템 스토리지의 총량(GB) 이 지표는 플랫폼 버전 `1.4.0`을(를) 사용하는 Fargate에서 실행되는 Amazon ECS 인프라 또는 컨테이너 에이전트 버전 `1.79.0` 이상을 사용하는 Amazon EC2 인스턴스에서 실행되는 작업에만 사용할 수 있습니다. Fargate에서 실행되는 작업의 경우 Fargate는 Fargate만 사용하는 디스크 공간을 예약합니다. Fargate가 사용하는 공간에는 비용이 들지 않지만 `df`와 같은 도구를 사용하면 이 추가 스토리지를 확인할 수 있습니다. 관리형 대몬에도 적용됩니다. 단위: 기가바이트(GB)  | 
|  `TaskEBSFilesystemUtilization`  |  `TaskDefinitionFamily`, `ClusterName` `ClusterName`, `ServiceName` `ClusterName` `ClusterName`, `ServiceName`, `TaskId` `TaskDefinitionFamily`, `ClusterName`, `TaskId`  |  사용 중인 차원으로 지정된 태스크에서 사용 중인 Amazon EBS 파일 시스템 스토리지의 백분율. 이 지표는 플랫폼 버전 `1.4.0`을(를) 사용하는 Fargate에서 실행되는 Amazon ECS 인프라 또는 컨테이너 에이전트 버전 `1.79.0` 이상을 사용하는 Amazon EC2 인스턴스에서 실행되는 작업에만 사용할 수 있습니다. 관리형 대몬에도 적용됩니다. 단위: 퍼센트  | 
|  EphemeralStorageReserved [1](#ci-enhanced-metrics-ecs-storage-fargate-note)  |  `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName` `ClusterName` `ClusterName`, `ServiceName`, `TaskId` `ClusterName`, `TaskDefinitionFamily`, `TaskId`  |  사용 중인 차원으로 지정된 리소스의 임시 스토리지에서 예약된 바이트 수입니다. 임시 스토리지는 컨테이너 루트 파일 시스템과 컨테이너 이미지 및 작업 정의에 정의된 모든 바인드 마운트 호스트 볼륨에 사용됩니다. 임시 스토리지의 양은 실행 중인 작업에서 변경할 수 없습니다. 이 지표는 Fargate Linux 플랫폼 버전 1.4.0 이상에서 실행되는 작업에만 사용할 수 있습니다. 관리형 대몬에도 적용됩니다. 단위: 기가바이트(GB)  | 
|  EphemeralStorageUtilized [1](Container-Insights-metrics-ECS.md#ci-metrics-ecs-storage-fargate-note)  |  `ClusterName` `ClusterName`, `TaskDefinitionFamily` `ClusterName`, `ServiceName` `ClusterName`, `ServiceName`, `TaskId` `ClusterName`, `TaskDefinitionFamily`, `TaskId`  |  사용 중인 차원으로 지정된 리소스의 임시 스토리지에서 사용된 바이트 수입니다. 임시 스토리지는 컨테이너 루트 파일 시스템과 컨테이너 이미지 및 작업 정의에 정의된 모든 바인드 마운트 호스트 볼륨에 사용됩니다. 임시 스토리지의 양은 실행 중인 작업에서 변경할 수 없습니다. 이 지표는 Fargate Linux 플랫폼 버전 1.4.0 이상에서 실행되는 작업에만 사용할 수 있습니다. 관리형 대몬에도 적용됩니다. 단위: 기가바이트(GB)  | 
|  `MemoryUtilized`  |  `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName` `ClusterName` `ClusterName`, `ServiceName`, `TaskId` `ClusterName`, `TaskDefinitionFamily`, `TaskId`  |  사용 중인 측정기준 세트로 지정된 리소스의 작업에서 사용 중인 메모리입니다. 관리형 대몬에도 적용됩니다. 단위: 메가바이트  | 
|  `MemoryReserved`  |  `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName` `ClusterName` `ClusterName`, `ServiceName`, `TaskId` `ClusterName`, `TaskDefinitionFamily`, `TaskId`  |  사용 중인 측정기준 세트에서 지정한 리소스의 작업에서 예약된 메모리입니다. 이 지표는 작업 또는 모든 컨테이너 수준과 같이 작업 정의에 정의된 메모리 예약을 기반으로 수집됩니다. 작업 정의에 지정되지 않은 경우 인스턴스 메모리 예약이 사용됩니다. 관리형 대몬에도 적용됩니다. 단위: 메가바이트  | 
|  `NetworkRxBytes`  |  `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName` `ClusterName` `ClusterName`, `ServiceName`, `TaskId` `ClusterName`, `TaskDefinitionFamily`, `TaskId`  |  사용중인 측정기준에서 지정한 리소스에서 수신된 바이트의 숫자입니다. 이 지표는 Docker 런타임에서 가져옵니다. 이 지표는 `awsvpc` 또는 `bridge` 네트워크 모드를 사용하는 태스크의 컨테이너에 대해서만 제공됩니다. 관리형 대몬에도 적용됩니다. 단위: 바이트/초  | 
|  `NetworkTxBytes`  |  `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName` `ClusterName` `ClusterName`, `ServiceName`, `TaskId` `ClusterName`, `TaskDefinitionFamily`, `TaskId`  |  사용중인 측정기준에서 지정한 리소스에서 전송된 바이트의 숫자입니다. 이 지표는 Docker 런타임에서 가져옵니다. 이 지표는 `awsvpc` 또는 `bridge` 네트워크 모드를 사용하는 태스크의 컨테이너에 대해서만 제공됩니다. 관리형 대몬에도 적용됩니다. 단위: 바이트/초  | 
|  `PendingTaskCount`  |  `ServiceName`, `ClusterName`  |  현재 `PENDING` 상태인 작업의 숫자입니다. 단위: 수  | 
|  `RunningTaskCount`  |  `ServiceName`, `ClusterName`  |  현재 `RUNNING` 상태인 작업의 숫자입니다. 단위: 수  | 
|  `RestartCount`  |  `ClusterName` `ClusterName`, `ServiceName` `ClusterName`, `TaskDefinitionFamily` `ClusterName`, `ServiceName`, `TaskId` `ClusterName`, `TaskDefinitionFamily`, `TaskId` `ClusterName`, `ServiceName`, `ContainerName` `ClusterName`, `ServiceName`, `TaskId`, `ContainerName` `TaskDefinitionFamily`, `ClusterName`, `ContainerName` `TaskDefinitionFamily`, `ClusterName`, `TaskId`, `ContainerName`  |  Amazon ECS 태스크에서 컨테이너가 다시 시작된 횟수입니다. 이 지표는 재시작 정책이 활성화된 컨테이너의 경우에만 수집됩니다. 관리형 대몬에도 적용됩니다. 단위: 수  | 
|  `UnHealthyContainerHealthStatus`  |  `ClusterName` `ClusterName`, `ServiceName`, `ContainerName` `ClusterName`, `TaskDefinitionFamily`, `ContainerName` `ClusterName`, `ServiceName`, `TaskId`, `ContainerName` `ClusterName`, `TaskDefinitionFamily`, `TaskId`, `ContainerName`  |  컨테이너 상태 확인 상태에 기반한 비정상 컨테이너 수. 상태 확인에서 비정상 상태가 반환되면 컨테이너는 비정상으로 간주됩니다. 이 지표는 태스크 정의에 상태 확인이 구성된 컨테이너에 대해서만 수집됩니다. 지표 값은 컨테이너 상태가 `UNHEALTHY`인 경우 1, 상태가 `HEALTHY`인 경우 0입니다. 단위: 수  | 
|  `ServiceCount`  |  `ClusterName`  |  클러스터의 서비스 숫자입니다. 단위: 수  | 
|  `StorageReadBytes`  |  `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName` `ClusterName` `ClusterName`, `ServiceName`, `TaskId` `ClusterName`, `TaskDefinitionFamily`, `TaskId`  |  사용 중인 측정기준에서 지정한 리소스의 인스턴스에 있는 스토리지에서 읽힌 바이트의 숫자입니다. 스토리지 디바이스의 읽기 바이트는 여기에 포함되지 않습니다. 이 지표는 Docker 런타임에서 가져옵니다. 관리형 대몬에도 적용됩니다. 단위: 바이트  | 
|  `StorageWriteBytes`  |  `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName` `ClusterName` `ClusterName`, `ServiceName`, `TaskId` `ClusterName`, `TaskDefinitionFamily`, `TaskId`  |  사용 중인 측정기준에서 지정한 리소스의 스토리지에서 쓰여진 바이트의 숫자입니다. 이 지표는 Docker 런타임에서 가져옵니다. 관리형 대몬에도 적용됩니다. 단위: 바이트  | 
|  `TaskCount`  |  `ClusterName`  |  클러스터에서 실행 중인 태스크의 수입니다. 단위: 수  | 
|  `TaskCpuUtilization`  |  `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName` `ClusterName` `ClusterName`, `ServiceName`, `TaskId` `ClusterName`, `TaskDefinitionFamily`, `TaskId`   |  태스크에서 사용 중인 총 CPU 유닛의 백분율입니다. 관리형 대몬에도 적용됩니다. 단위: 퍼센트  | 
|  `TaskEphemeralStorageUtilization`  |  `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName` `ClusterName` `ClusterName`, `ServiceName`, `TaskId` `ClusterName`, `TaskDefinitionFamily`, `TaskId`   |  태스크에서 사용 중인 임시 스토리지의 총 백분율입니다. 관리형 대몬에도 적용됩니다. 단위: 퍼센트  | 
|  `TaskMemoryUtilization`  |  `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName` `ClusterName` `ClusterName`, `ServiceName`, `TaskId` `ClusterName`, `TaskDefinitionFamily`, `TaskId`   |  태스크에서 사용 중인 메모리의 총 백분율입니다. 관리형 대몬에도 적용됩니다. 단위: 퍼센트  | 
|  `TaskSetCount`  |  `ServiceName`, `ClusterName`  |  서비스의 작업 세트 숫자입니다. 단위: 수  | 

**참고**  
`EphemeralStorageReserved` 및 `EphemeralStorageUtilized` 지표는 Fargate Linux 플랫폼 버전 1.4.0 이상에서 실행되는 작업에만 사용할 수 있습니다.  
Fargate는 디스크 공간을 예약합니다. Fargate에서만 사용됩니다. 이에 대한 요금은 청구되지 않습니다. 이러한 지표에는 표시되지 않습니다. 그러나 `df` 등의 다른 도구에서는 이 추가 스토리지를 볼 수 있습니다.

다음 지표는 [CloudWatch 에이전트를 배포하여 Amazon ECS의 EC2 인스턴스 수준 지표 수집](deploy-container-insights-ECS-instancelevel.md)의 단계를 완료하고 EC2 시작 유형을 사용하는 경우 사용 가능합니다.


| 지표 이름 | 측정 기준 | 설명 | 
| --- | --- | --- | 
|  `instance_cpu_limit`  |  `ClusterName`  |  클러스터의 단일 EC2 인스턴스에 할당할 수 있는 최대 CPU 단위 수입니다. 단위: 없음  | 
|  `instance_cpu_reserved_capacity`  |  `ClusterName` `InstanceId`, `ContainerInstanceId`, `ClusterName`  |  클러스터의 단일 EC2 인스턴스에서 현재 예약 중인 CPU의 비율입니다. 단위: 퍼센트  | 
|  `instance_cpu_usage_total`  |  `ClusterName`  |  클러스터의 단일 EC2 인스턴스에서 사용 중인 CPU 단위 수입니다. 단위: 없음  | 
|  `instance_cpu_utilization`  |  `ClusterName` `InstanceId`, `ContainerInstanceId`, `ClusterName`  |  클러스터의 단일 EC2 인스턴스에서 사용 중인 CPU 단위의 총 비율입니다. 단위: 퍼센트  | 
|  `instance_filesystem_utilization`  |  `ClusterName` `InstanceId`, `ContainerInstanceId`, `ClusterName`  |  클러스터의 단일 EC2 인스턴스에서 사용 중인 파일 시스템 용량의 총 비율입니다. 단위: 퍼센트  | 
|  `instance_memory_limit`  |  `ClusterName`  |  이 클러스터의 단일 EC2 인스턴스에 할당할 수 있는 최대 메모리 양(바이트)입니다. 단위: 바이트  | 
|  `instance_memory_reserved_capacity`  |  `ClusterName` `InstanceId`, `ContainerInstanceId`, `ClusterName`  |  클러스터의 단일 EC2 인스턴스에서 현재 예약 중인 메모리의 비율입니다. 단위: 퍼센트  | 
|  `instance_memory_utilization`  |  `ClusterName` `InstanceId`, `ContainerInstanceId`, `ClusterName`  |  클러스터의 단일 EC2 인스턴스에서 사용 중인 메모리의 총 비율입니다.  애플리케이션에 Java ZGC 가비지 수집기를 사용하는 경우에는 이 지표가 부정확할 수 있습니다.  단위: 퍼센트  | 
|  `instance_memory_working_set`  |  `ClusterName`  |  클러스터의 단일 EC2 인스턴스에서 사용 중인 메모리의 양(바이트)입니다.  애플리케이션에 Java ZGC 가비지 수집기를 사용하는 경우에는 이 지표가 부정확할 수 있습니다.  단위: 바이트  | 
|  `instance_network_total_bytes`  |  `ClusterName`  |  클러스터의 단일 EC2 인스턴스에서 네트워크를 통해 전송 및 수신된 초당 총 바이트 수입니다. 단위: 바이트/초  | 
|  `instance_number_of_running_tasks`  |  `ClusterName`  |  클러스터의 단일 EC2 인스턴스에서 실행 중인 작업 수입니다. 단위: 수  | 

# Amazon ECS Container Insights 지표
<a name="Container-Insights-metrics-ECS"></a>

Container Insights 지표는 추가 네트워크, 스토리지 및 임시 스토리지 지표를 제공합니다. 이러한 지표는 표준 Amazon ECS 지표보다 더 많은 정보를 제공합니다. Container Insights는 CloudWatch Logs와 통합됩니다. 문제를 더 쉽게 해결할 수 있도록 지표 변경 내용을 로그 항목과 연관시킬 수 있습니다. 또한 Container Insights는 모든 태스크의 데이터를 평균화하여 클러스터, 서비스 및 대몬 전반의 통계도 표시합니다. 이를 통해 서비스 및 대몬 상태를 더 개략적으로 파악할 수 있으므로 환경 모니터링과 용량 계획에 모두 유용합니다.

**사용 사례**
+ **문제 식별 및 문제 해결** - 태스크 상태 전환 패턴을 분석하여 실패한 배포를 추적하고 이를 통해여 장애 지점을 신속하게 식별할 수 있습니다. 태스크 시작 시퀀스 및 초기화 동작에 대한 포괄적인 검사를 통해 구성 문제 진단
+ **클러스터 및 서비스 수준 상태 평가** - 클러스터 전반의 평균 태스크 성능을 표시합니다. 이 접근 방식은 이상치를 조정하여 클러스터 및 서비스 상태에 대한 보다 안정적인 보기를 제공합니다. 극단적인 값이 오해의 소지가 있는 일반 서비스 모니터링에 이러한 인사이트 사용 
+ **서비스 가용성 문제** - 실행 중인 태스크 수 지표를 모니터링하여 배포 실패를 감지합니다. 서비스 이벤트 로그를 성능 지표와 연관시켜 인프라 영향을 파악합니다. 태스크 재시작 패턴을 추적하여 불안정한 서비스 또는 인프라 문제 식별
+ **평균 부하에 대한 용량 계획** - 일반적인 태스크 동작 패턴을 기반으로 리소스 요구 사항을 결정하고, 효과적인 장기 계획을 지원하는 일관된 지표를 제공하며, 단기 스파이크가 용량 결정에 미치는 영향을 줄이는 데 도움이 됨
+ **추가 지표 제공** - 벤딩 지표에서 사용할 수 없는 추가 네트워크, 스토리지 및 임시 스토리지 지표 수집

Amazon ECS 지표에 대한 자세한 내용은 [Amazon ECS 서비스 사용률 지표 사용 사례](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service_utilization-metrics-explanation.html), 향상된 관찰성을 갖춘 Container Insights에 대한 자세한 내용은 [향상된 관찰성 지표를 갖춘 Amazon ECS Container Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Container-Insights-enhanced-observability-metrics-ECS.html)를 참조하세요.

**참고**  
Amazon ECS 관리형 대몬 지표는 서비스 지표와 동일한 `ECS/ContainerInsights` 네임스페이스와 `ServiceName` 차원을 사용합니다. 대몬 지표의 경우 `ServiceName` 차원 값은 `daemon:daemon-name` 형식을 사용합니다. 예를 들어 `my-daemon` 대몬에서 `ServiceName` 차원 값이 `daemon:my-daemon`입니다. `ServiceName` 차원을 포함하는 아래 표의 모든 지표는 관리형 대몬에도 적용됩니다.

아래 표에는 Container Insights가 Amazon ECS용으로 수집하는 지표 및 측정기준이 나와 있습니다. 이러한 지표는 `ECS/ContainerInsights` 네임스페이스에 있습니다. 자세한 내용은 [Metrics](cloudwatch_concepts.md#Metric) 섹션을 참조하세요.

콘솔에 Container Insights 지표가 보이지 않는 경우, Container Insights 설정을 완료했는지 확인합니다. Container Insights 설정이 완료되기 전에는 지표가 나타나지 않습니다. 자세한 내용은 [Container Insights 설정](deploy-container-insights.md) 섹션을 참조하세요.

다음 지표는 [Amazon ECS에서 Container Insights 설정](deploy-container-insights-ECS-cluster.md)의 단계를 완료하면 사용할 수 있습니다.


| 지표 이름 | 측정 기준 | 설명 | 
| --- | --- | --- | 
|  `ContainerInstanceCount`  |  `ClusterName`  |  클러스터에 등록된 Amazon ECS 에이전트를 실행하는 EC2 인스턴스의 수입니다. 이 지표는 클러스터에서 Amazon ECS 작업을 실행하는 컨테이너 인스턴스에 대해서만 수집됩니다. Amazon ECS 작업이 없는 빈 컨테이너 인스턴스에 대해서는 수집되지 않습니다. 단위: 수  | 
|  `CpuUtilized`  |  `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName` `ClusterName`  |  사용 중인 측정기준 세트로 지정된 리소스의 작업에서 사용하는 CPU 단위입니다. 관리형 대몬에도 적용됩니다. 단위: 없음  | 
|  `CpuReserved`  |  `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName` `ClusterName`  |  사용 중인 측정기준 세트에서 지정한 리소스의 작업에서 예약된 CPU 단위입니다. 이 지표는 작업 또는 모든 컨테이너 수준과 같이 작업 정의에 정의된 CPU 예약을 기반으로 수집됩니다. 작업 정의에 지정되지 않은 경우 인스턴스 CPU 예약이 사용됩니다. 관리형 대몬에도 적용됩니다. 단위: 없음  | 
|  `DeploymentCount`  |  `ServiceName`, `ClusterName`  |  Amazon ECS 서비스의 배포 수입니다. 단위: 수  | 
|  `DesiredTaskCount`  |  `ServiceName`, `ClusterName`  |  Amazon ECS 서비스에 대해 원하는 태스크 수입니다. 단위: 수  | 
|  `EBSFilesystemSize`  |  `VolumeName`, `TaskDefinitionFamily`, `ClusterName` `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName`  |  사용 중인 차원으로 지정된 리소스에 할당된 Amazon EBS 파일 시스템 스토리지의 총량(GB) 이 지표는 플랫폼 버전 `1.4.0`을(를) 사용하는 Fargate에서 실행되는 Amazon ECS 인프라 또는 컨테이너 에이전트 버전 `1.79.0` 이상을 사용하는 Amazon EC2 인스턴스에서 실행되는 작업에만 사용할 수 있습니다. 관리형 대몬에도 적용됩니다. 단위: 기가바이트(GB)  | 
|  `EBSFilesystemUtilized`  |  `VolumeName`, `TaskDefinitionFamily`, `ClusterName` `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName`  |  사용 중인 차원으로 지정된 리소스에서 사용하는 Amazon EBS 파일 시스템 스토리지의 총량(GB) 이 지표는 플랫폼 버전 `1.4.0`을(를) 사용하는 Fargate에서 실행되는 Amazon ECS 인프라 또는 컨테이너 에이전트 버전 `1.79.0` 이상을 사용하는 Amazon EC2 인스턴스에서 실행되는 작업에만 사용할 수 있습니다. Fargate에서 실행되는 작업의 경우 Fargate는 Fargate만 사용하는 디스크 공간을 예약합니다. Fargate가 사용하는 공간에는 비용이 들지 않지만 `df`와 같은 도구를 사용하면 이 추가 스토리지를 확인할 수 있습니다. 관리형 대몬에도 적용됩니다. 단위: 기가바이트(GB)  | 
|  EphemeralStorageReserved [1](#ci-metrics-ecs-storage-fargate-note)  |  `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName` `ClusterName`  |  사용 중인 차원으로 지정된 리소스의 임시 스토리지에서 예약된 바이트 수입니다. 임시 스토리지는 컨테이너 루트 파일 시스템과 컨테이너 이미지 및 작업 정의에 정의된 모든 바인드 마운트 호스트 볼륨에 사용됩니다. 임시 스토리지의 양은 실행 중인 작업에서 변경할 수 없습니다. 이 지표는 Fargate Linux 플랫폼 버전 1.4.0 이상에서 실행되는 작업에만 사용할 수 있습니다. 관리형 대몬에도 적용됩니다. 단위: 기가바이트(GB)  | 
|  EphemeralStorageUtilized [1](#ci-metrics-ecs-storage-fargate-note)  |  `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName` `ClusterName`  |  사용 중인 차원으로 지정된 리소스의 임시 스토리지에서 사용된 바이트 수입니다. 임시 스토리지는 컨테이너 루트 파일 시스템과 컨테이너 이미지 및 작업 정의에 정의된 모든 바인드 마운트 호스트 볼륨에 사용됩니다. 임시 스토리지의 양은 실행 중인 작업에서 변경할 수 없습니다. 이 지표는 Fargate Linux 플랫폼 버전 1.4.0 이상에서 실행되는 작업에만 사용할 수 있습니다. 관리형 대몬에도 적용됩니다. 단위: 기가바이트(GB)  | 
|  `InstanceOSFilesystemUtilization`  |  `CapacityProviderName`, `ClusterName`, `ContainerInstanceId`, `EC2InstanceId` `ClusterName`  |  OS 볼륨에 사용된 총 디스크 공간 비율.  | 
|  `InstanceDataFilesystemUtilization`  |  `CapacityProviderName`, `ClusterName`, `ContainerInstanceId`, `EC2InstanceId` `ClusterName`  |  데이터 볼륨에 사용된 총 디스크 공간 비율.  | 
|  `MemoryUtilized`  |  `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName` `ClusterName`  |  사용 중인 측정기준 세트로 지정된 리소스의 작업에서 사용 중인 메모리입니다.  애플리케이션에 Java ZGC 가비지 수집기를 사용하는 경우에는 이 지표가 부정확할 수 있습니다. `MemoryUtilized` 및 `MemoryReserved`는 "메가바이트"로 표시되지만 실제 단위는 MiB(메비바이트)입니다.  관리형 대몬에도 적용됩니다. 단위: 메가바이트  | 
|  `MemoryReserved`  |  `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName` `ClusterName`  |  사용 중인 측정기준 세트에서 지정한 리소스의 작업에서 예약된 메모리입니다. 이 지표는 작업 또는 모든 컨테이너 수준과 같이 작업 정의에 정의된 메모리 예약을 기반으로 수집됩니다. 작업 정의에 지정되지 않은 경우 인스턴스 메모리 예약이 사용됩니다. 관리형 대몬에도 적용됩니다. 단위: 메가바이트  `MemoryUtilized` 및 `MemoryReserved`는 "메가바이트"로 표시되지만 실제 단위는 MiB(메비바이트)입니다.   | 
|  `NetworkRxBytes`  |  `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName` `ClusterName`  |  사용중인 측정기준에서 지정한 리소스에서 수신된 바이트의 숫자입니다. 이 지표는 Docker 런타임에서 가져옵니다. 이 지표는 `awsvpc` 또는 `bridge` 네트워크 모드를 사용하는 태스크의 컨테이너에 대해서만 제공됩니다. 관리형 대몬에도 적용됩니다. 단위: 바이트/초  | 
|  `NetworkTxBytes`  |  `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName` `ClusterName`  |  사용중인 측정기준에서 지정한 리소스에서 전송된 바이트의 숫자입니다. 이 지표는 Docker 런타임에서 가져옵니다. 이 지표는 `awsvpc` 또는 `bridge` 네트워크 모드를 사용하는 태스크의 컨테이너에 대해서만 제공됩니다. 관리형 대몬에도 적용됩니다. 단위: 바이트/초  | 
|  `PendingTaskCount`  |  `ServiceName`, `ClusterName`  |  현재 `PENDING` 상태인 작업의 숫자입니다. 단위: 수  | 
|  `RunningTaskCount`  |  `ServiceName`, `ClusterName`  |  현재 `RUNNING` 상태인 작업의 숫자입니다. 단위: 수  | 
|  `RestartCount`  |  `ClusterName` `ClusterName`, `ServiceName` `ClusterName`, `TaskDefinitionFamily`  |  Amazon ECS 태스크에서 컨테이너가 다시 시작된 횟수입니다. 이 지표는 재시작 정책이 활성화된 컨테이너의 경우에만 수집됩니다. 관리형 대몬에도 적용됩니다. 단위: 수  | 
|  `ServiceCount`  |  `ClusterName`  |  클러스터의 서비스 숫자입니다. 단위: 수  | 
|  `StorageReadBytes`  |  `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName` `ClusterName`  |  사용 중인 측정기준에서 지정한 리소스의 인스턴스에 있는 스토리지에서 읽힌 바이트의 숫자입니다. 스토리지 디바이스의 읽기 바이트는 여기에 포함되지 않습니다. 이 지표는 Docker 런타임에서 가져옵니다. 관리형 대몬에도 적용됩니다. 단위: 바이트  | 
|  `StorageWriteBytes`  |  `TaskDefinitionFamily`, `ClusterName` `ServiceName`, `ClusterName` `ClusterName`  |  사용 중인 측정기준에서 지정한 리소스의 스토리지에서 쓰여진 바이트의 숫자입니다. 이 지표는 Docker 런타임에서 가져옵니다. 관리형 대몬에도 적용됩니다. 단위: 바이트  | 
|  `TaskCount`  |  `ClusterName`  |  클러스터에서 실행 중인 태스크의 수입니다. 단위: 수  | 
|  `TaskSetCount`  |  `ServiceName`, `ClusterName`  |  서비스의 작업 세트 숫자입니다. 단위: 수  | 

**참고**  
`EphemeralStorageReserved` 및 `EphemeralStorageUtilized` 지표는 Fargate Linux 플랫폼 버전 1.4.0 이상에서 실행되는 작업에만 사용할 수 있습니다.  
Fargate는 디스크 공간을 예약합니다. Fargate에서만 사용됩니다. 이에 대한 요금은 청구되지 않습니다. 이러한 지표에는 표시되지 않습니다. 그러나 `df` 등의 다른 도구에서는 이 추가 스토리지를 볼 수 있습니다.

다음 지표는 [CloudWatch 에이전트를 배포하여 Amazon ECS의 EC2 인스턴스 수준 지표 수집](deploy-container-insights-ECS-instancelevel.md)의 단계를 완료하면 사용할 수 있습니다.


| 지표 이름 | 측정 기준 | 설명 | 
| --- | --- | --- | 
|  `instance_cpu_limit`  |  `ClusterName`  |  클러스터의 단일 EC2 인스턴스에 할당할 수 있는 최대 CPU 단위 수입니다. 단위: 없음  | 
|  `instance_cpu_reserved_capacity`  |  `ClusterName` `InstanceId`, `ContainerInstanceId`, `ClusterName`  |  클러스터의 단일 EC2 인스턴스에서 현재 예약 중인 CPU의 비율입니다. 단위: 퍼센트  | 
|  `instance_cpu_usage_total`  |  `ClusterName`  |  클러스터의 단일 EC2 인스턴스에서 사용 중인 CPU 단위 수입니다. 단위: 없음  | 
|  `instance_cpu_utilization`  |  `ClusterName` `InstanceId`, `ContainerInstanceId`, `ClusterName`  |  클러스터의 단일 EC2 인스턴스에서 사용 중인 CPU 단위의 총 비율입니다. 단위: 퍼센트  | 
|  `instance_filesystem_utilization`  |  `ClusterName` `InstanceId`, `ContainerInstanceId`, `ClusterName`  |  클러스터의 단일 EC2 인스턴스에서 사용 중인 파일 시스템 용량의 총 비율입니다. 단위: 퍼센트  | 
|  `instance_memory_limit`  |  `ClusterName`  |  이 클러스터의 단일 EC2 인스턴스에 할당할 수 있는 최대 메모리 양(바이트)입니다. 단위: 바이트  | 
|  `instance_memory_reserved_capacity`  |  `ClusterName` `InstanceId`, `ContainerInstanceId`, `ClusterName`  |  클러스터의 단일 EC2 인스턴스에서 현재 예약 중인 메모리의 비율입니다. 단위: 퍼센트  | 
|  `instance_memory_utilization`  |  `ClusterName` `InstanceId`, `ContainerInstanceId`, `ClusterName`  |  클러스터의 단일 EC2 인스턴스에서 사용 중인 메모리의 총 비율입니다.  애플리케이션에 Java ZGC 가비지 수집기를 사용하는 경우에는 이 지표가 부정확할 수 있습니다.  단위: 퍼센트  | 
|  `instance_memory_working_set`  |  `ClusterName`  |  클러스터의 단일 EC2 인스턴스에서 사용 중인 메모리의 양(바이트)입니다.  애플리케이션에 Java ZGC 가비지 수집기를 사용하는 경우에는 이 지표가 부정확할 수 있습니다.  단위: 바이트  | 
|  `instance_network_total_bytes`  |  `ClusterName`  |  클러스터의 단일 EC2 인스턴스에서 네트워크를 통해 전송 및 수신된 초당 총 바이트 수입니다. 단위: 바이트/초  | 
|  `instance_number_of_running_tasks`  |  `ClusterName`  |  클러스터의 단일 EC2 인스턴스에서 실행 중인 작업 수입니다. 단위: 수  | 

# Amazon EKS 및 향상된 관찰성 지표를 갖춘 Kubernetes Container Insights
<a name="Container-Insights-metrics-enhanced-EKS"></a>

아래 표에는 향상된 관찰성을 갖춘 Container Insights가 Amazon EKS 및 쿠버네티스용으로 수집하는 지표 및 측정 기준이 나와 있습니다. 이러한 지표는 `ContainerInsights` 네임스페이스에 있습니다. 자세한 내용은 [Metrics](cloudwatch_concepts.md#Metric) 섹션을 참조하세요.

콘솔에 향상된 관찰성을 갖춘 Container Insights 지표가 표시되지 않는 경우, 향상된 관찰성을 갖춘 Container Insights 설정을 완료했는지 확인합니다. 향상된 관찰성을 갖춘 Container Insights 설정이 완료되기 전에는 지표가 표시되지 않습니다. 자세한 내용은 [Container Insights 설정](deploy-container-insights.md) 섹션을 참조하세요.

Amazon EKS 추가 기능 버전 1.5.0 이상 또는 CloudWatch 에이전트 버전 1.300035.0을 사용 중인 경우 다음 표에 나열된 대부분의 지표가 Linux와 Windows 노드 모두에 대해 수집됩니다. 표의 **지표 이름** 열을 참조하여 Windows에서 수집되지 않는 지표를 확인하세요.

클러스터 및 서비스 수준에서 집계된 지표를 제공하는 이전 버전의 Container Insights를 사용할 경우, 지표에 대한 요금이 사용자 지정 지표로 청구됩니다. Amazon EKS의 향상된 관찰 기능을 갖춘 Container Insights를 사용하면 Container Insights 지표는 저장된 지표나 수집된 로그별로 요금이 부과되는 대신 관찰당 요금이 부과됩니다. CloudWatch 요금에 대한 자세한 내용은 [Amazon CloudWatch 요금](https://aws.amazon.com/cloudwatch/pricing/)을 참조하세요.

**참고**  
Windows에서는 호스트 프로세스 컨테이너에 대해 `pod_network_rx_bytes` 및 `pod_network_tx_bytes` 등의 네트워크 지표는 수집되지 않습니다.  
RedHat OpenShift onAWS (ROSA) 클러스터에서는 `node_diskio_io_serviced_total` 및 `node_diskio_io_service_bytes_total`과 같은 디스크 입출력 지표가 수집되지 않습니다.


| 지표 이름 | 측정 기준 | 설명 | 
| --- | --- | --- | 
|  `cluster_failed_node_count`  |  `ClusterName`  |  클러스터의 실패한 작업자 노드의 숫자입니다. **‘노드 조건’ 문제를 겪고 있는 경우 노드가 실패한 것으로 간주됩니다. 자세한 내용은 Kubernetes 설명서에서 [조건](https://kubernetes.io/docs/concepts/architecture/nodes/#condition)을 참조하세요.  | 
|  `cluster_node_count`  |  `ClusterName`  |  클러스터의 작업자 노드의 총 숫자입니다.  | 
|  `namespace_number_of_running_pods`  |  `Namespace` `ClusterName` `ClusterName`  |  사용 중인 측정기준에서 지정한 리소스의 네임스페이스당 실행 중인 Pod 숫자입니다.  | 
|  `node_cpu_limit`  |  `ClusterName`  `ClusterName`, `InstanceId`, `NodeName`   |  클러스터에서 단일 노드에 할당할 수 있는 최대 CPU 단위 숫자입니다.  | 
|  `node_cpu_reserved_capacity`  |  `NodeName`, `ClusterName`, `InstanceId` `ClusterName`  |  kubelet, kube-proxy, Docker 등 노드 구성 요소에 예약된 CPU 단위의 비율입니다. 공식: `node_cpu_request / node_cpu_limit`  `node_cpu_request`는 지표로 직접 보고되지는 않지만 성능 로그 이벤트의 필드입니다. 자세한 내용은 [Amazon EKS 및 Kubernetes에 대한 성능 로그 이벤트의 관련 필드](Container-Insights-reference-performance-entries-EKS.md) 섹션을 참조하세요.   | 
|  `node_cpu_usage_total`  |  `ClusterName` `ClusterName`, `InstanceId`, `NodeName`  |  클러스터의 노드에서 사용 중인 CPU 단위의 숫자입니다.  | 
|  `node_cpu_utilization`  |  `NodeName`, `ClusterName`, `InstanceId` `ClusterName`  |  클러스터의 노드에서 사용 중인 CPU 단위의 총 백분율입니다. 공식: `node_cpu_usage_total / node_cpu_limit`  | 
|  `node_filesystem_utilization`  |  `NodeName`, `ClusterName`, `InstanceId` `ClusterName`  |  클러스터에서 노드에 사용하는 파일 시스템 용량의 총 백분율입니다. 공식: `node_filesystem_usage / node_filesystem_capacity`  `node_filesystem_usage` 및 `node_filesystem_capacity`는 지표로 직접 보고되지는 않지만 성능 로그 이벤트의 필드입니다. 자세한 내용은 [Amazon EKS 및 Kubernetes에 대한 성능 로그 이벤트의 관련 필드](Container-Insights-reference-performance-entries-EKS.md) 섹션을 참조하세요.   | 
|  `node_memory_limit`  |  `ClusterName` `ClusterName`, `InstanceId`, `NodeName`   |  클러스터에서 단일 노드로 할당될 수 있는 최대 메모리의 양(바이트)입니다.  | 
|  `node_filesystem_inodes`  Windows에서는 제공되지 않습니다.  |  `ClusterName` `ClusterName`, `InstanceId`, `NodeName`   |  노드의 총 아이노드(사용 및 미사용) 수입니다.  | 
|  `node_filesystem_inodes_free` Windows에서는 제공되지 않습니다.  |  `ClusterName` `ClusterName`, `InstanceId`, `NodeName`   |  노드의 미사용 아이노드 수입니다.  | 
|  `node_gpu_limit` |  `ClusterName` `ClusterName`, `InstanceId`, `NodeName`  |  노드에서 사용 가능한 총 GPU 수.  | 
|  `node_gpu_usage_total` |  `ClusterName` `ClusterName`, `InstanceId`, `NodeName`  |  노드에서 실행 중인 포드가 사용하는 GPU 수.  | 
|  `node_gpu_reserved_capacity` |  `ClusterName` `ClusterName`, `InstanceId`, `NodeName`  | 
|  `node_memory_reserved_capacity`  |  `NodeName`, `ClusterName`, `InstanceId` `ClusterName`  |  클러스터의 노드에서 현재 사용 중인 메모리의 비율입니다. 공식: `node_memory_request / node_memory_limit`  `node_memory_request`는 지표로 직접 보고되지는 않지만 성능 로그 이벤트의 필드입니다. 자세한 내용은 [Amazon EKS 및 Kubernetes에 대한 성능 로그 이벤트의 관련 필드](Container-Insights-reference-performance-entries-EKS.md) 섹션을 참조하세요.   | 
|  `node_memory_utilization`  |  `NodeName`, `ClusterName`, `InstanceId` `ClusterName`  |  한 개 또는 여러 개의 노드에서 현재 사용 중인 메모리의 비율입니다. 노드 메모리 사용량을 노드 메모리 제한으로 나눈 백분율입니다. 공식: `node_memory_working_set / node_memory_limit`입니다.  | 
|  `node_memory_working_set`  |  `ClusterName`  `ClusterName`, `InstanceId`, `NodeName`   |  클러스터의 노드 작업 세트에서 사용하는 메모리의 양(바이트)입니다.  | 
|  `node_network_total_bytes`  |  `NodeName`, `ClusterName`, `InstanceId` `ClusterName`  |  클러스터에서 노드당 네트워크를 통해 전송 및 수신된 초당 바이트의 합계 수치입니다. 공식: `node_network_rx_bytes + node_network_tx_bytes`  `node_network_rx_bytes` 및 `node_network_tx_bytes`는 지표로 직접 보고되지는 않지만 성능 로그 이벤트의 필드입니다. 자세한 내용은 [Amazon EKS 및 Kubernetes에 대한 성능 로그 이벤트의 관련 필드](Container-Insights-reference-performance-entries-EKS.md) 섹션을 참조하세요.   | 
|  `node_number_of_running_containers`  |  `NodeName`, `ClusterName`, `InstanceId` `ClusterName`  |  클러스터에서 노드당 실행 중인 컨테이너의 숫자입니다.  | 
|  `node_number_of_running_pods`  |  `NodeName`, `ClusterName`, `InstanceId` `ClusterName`  |  클러스터에서 노드당 실행 중인 Pod 숫자입니다.  | 
|  `node_status_allocatable_pods`   |  `ClusterName` `ClusterName`, `InstanceId`, `NodeName`   |  할당 가능한 리소스를 기준으로 노드에 할당할 수 있는 포드 수이며 이는 시스템 대몬(daemon) 예약 및 하드 제거 임곗값을 고려한 후 노드 용량의 나머지 부분으로 정의됩니다.  | 
|  `node_status_capacity_pods`  |  `ClusterName` `ClusterName`, `InstanceId`, `NodeName`   |  용량에 따라 노드에 할당할 수 있는 포드 수입니다.  | 
|  `node_status_condition_ready`   |  `ClusterName` `ClusterName`, `InstanceId`, `NodeName`   |  노드 상태 조건 `Ready`가 Amazon EC2 노드에 대해 참인지 여부를 나타냅니다.  | 
|  `node_status_condition_memory_pressure`   |  `ClusterName` `ClusterName`, `InstanceId`, `NodeName`   |  노드 상태 조건 `MemoryPressure`이 참인지 여부를 나타냅니다.  | 
|  `node_status_condition_pid_pressure`   |  `ClusterName` `ClusterName`, `InstanceId`, `NodeName`   |  노드 상태 조건 `PIDPressure`이 참인지 여부를 나타냅니다.  | 
|  `node_status_condition_disk_pressure`   |  `ClusterName` `ClusterName`, `InstanceId`, `NodeName`   |  노드 상태 조건 `OutOfDisk`이 참인지 여부를 나타냅니다.  | 
|  `node_status_condition_unknown`   |  `ClusterName` `ClusterName`, `InstanceId`, `NodeName`   |  노드 상태 조건 중 알 수 없는 상태가 있는지 여부를 나타냅니다.  | 
|  `node_interface_network_rx_dropped`  |  `ClusterName` `ClusterName`, `InstanceId`, `NodeName`   |  노드의 네트워크 인터페이스에서 수신한 후 삭제한 패킷 수입니다.  | 
|  `node_interface_network_tx_dropped`  |  `ClusterName` `ClusterName`, `InstanceId`, `NodeName`   |  전송될 예정이었으나 노드의 네트워크 인터페이스에서 삭제된 패킷 수입니다.  | 
|  `node_diskio_io_service_bytes_total`  Windows 또는 ROSA 클러스터에서는 사용할 수 없습니다.  |  `ClusterName` `ClusterName`, `InstanceId`, `NodeName`   |  노드의 모든 I/O 작업에서 전송된 총 바이트 수입니다.  | 
|  `node_diskio_io_serviced_total` Windows 또는 ROSA 클러스터에서는 사용할 수 없습니다.  |  `ClusterName` `ClusterName`, `InstanceId`, `NodeName`   |  노드의 총 I/O 작업 횟수입니다.  | 
|  `pod_cpu_reserved_capacity`  |  `PodName`, `Namespace`, `ClusterName` `ClusterName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`  `ClusterName`, `Namespace`, `Service`   |  클러스터에서 Pod별로 예약된 CPU 용량입니다. 공식: `pod_cpu_request / node_cpu_limit`  `pod_cpu_request`는 지표로 직접 보고되지는 않지만 성능 로그 이벤트의 필드입니다. 자세한 내용은 [Amazon EKS 및 Kubernetes에 대한 성능 로그 이벤트의 관련 필드](Container-Insights-reference-performance-entries-EKS.md) 섹션을 참조하세요.   | 
|  `pod_cpu_utilization`  |  `PodName`, `Namespace`, `ClusterName` `Namespace`, `ClusterName` `Service`, `Namespace`, `ClusterName` `ClusterName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`   |  Pod에서 사용 중인 CPU 단위의 비율입니다. 공식: `pod_cpu_usage_total / node_cpu_limit`  | 
|  `pod_cpu_utilization_over_pod_limit`  |  `PodName`, `Namespace`, `ClusterName` `Namespace`, `ClusterName` `Service`, `Namespace`, `ClusterName` `ClusterName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`   |  포드 제한을 기준으로 포드에서 사용 중인 CPU 단위의 백분율입니다. 공식: `pod_cpu_usage_total / pod_cpu_limit`  | 
|  `pod_memory_reserved_capacity`  |  `PodName`, `Namespace`, `ClusterName` `ClusterName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`  `ClusterName`, `Namespace`, `Service`   |  포드에 예약된 메모리의 비율입니다. 공식: `pod_memory_request / node_memory_limit`  `pod_memory_request`는 지표로 직접 보고되지는 않지만 성능 로그 이벤트의 필드입니다. 자세한 내용은 [Amazon EKS 및 Kubernetes에 대한 성능 로그 이벤트의 관련 필드](Container-Insights-reference-performance-entries-EKS.md) 섹션을 참조하세요.   | 
|  `pod_memory_utilization`  |  `PodName`, `Namespace`, `ClusterName` `Namespace`, `ClusterName` `Service`, `Namespace`, `ClusterName` `ClusterName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`   |  한 개 또는 여러 개의 Pod에서 현재 사용 중인 메모리의 비율입니다. 공식: `pod_memory_working_set / node_memory_limit`  | 
|  `pod_memory_utilization_over_pod_limit`  |  `PodName`, `Namespace`, `ClusterName` `Namespace`, `ClusterName` `Service`, `Namespace`, `ClusterName` `ClusterName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`   |  포드 제한을 기준으로 포드에서 사용 중인 메모리의 백분율입니다. 포드의 컨테이너에 메모리 제한이 정의되지 않은 경우 이 지표는 표시되지 않습니다. 공식: `pod_memory_working_set / pod_memory_limit`  | 
|  `pod_network_rx_bytes`  |  `PodName`, `Namespace`, `ClusterName` `Namespace`, `ClusterName` `Service`, `Namespace`, `ClusterName` `ClusterName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`   |  Pod에서 네트워크를 통해 수신 중인 초당 바이트 수입니다. 공식: `sum(pod_interface_network_rx_bytes)`  `pod_interface_network_rx_bytes`는 지표로 직접 보고되지는 않지만 성능 로그 이벤트의 필드입니다. 자세한 내용은 [Amazon EKS 및 Kubernetes에 대한 성능 로그 이벤트의 관련 필드](Container-Insights-reference-performance-entries-EKS.md) 섹션을 참조하세요.   | 
|  `pod_network_tx_bytes`  |  `PodName`, `Namespace`, `ClusterName` `Namespace,` `ClusterName` `Service`, `Namespace`, `ClusterName` `ClusterName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`   |  Pod에서 네트워크를 통해 전송 중인 초당 바이트 수입니다. 공식: `sum(pod_interface_network_tx_bytes)`  `pod_interface_network_tx_bytes`는 지표로 직접 보고되지는 않지만 성능 로그 이벤트의 필드입니다. 자세한 내용은 [Amazon EKS 및 Kubernetes에 대한 성능 로그 이벤트의 관련 필드](Container-Insights-reference-performance-entries-EKS.md) 섹션을 참조하세요.   | 
|  `pod_cpu_request`   |  `ClusterName` `PodName`, `Namespace`, `ClusterName` `Namespace`, `ClusterName`, `Service` `ClusterName`, `Namespace`, `PodName`, `FullPodName`  |  포드에 대한 CPU 요청입니다. 공식: `sum(container_cpu_request)`  `pod_cpu_request`는 지표로 직접 보고되지는 않지만 성능 로그 이벤트의 필드입니다. 자세한 내용은 [Amazon EKS 및 Kubernetes에 대한 성능 로그 이벤트의 관련 필드](Container-Insights-reference-performance-entries-EKS.md) 섹션을 참조하세요.   | 
|  `pod_memory_request`  |  `ClusterName` `PodName`, `Namespace`, `ClusterName` `Namespace`, `ClusterName`, `Service` `ClusterName`, `Namespace`, `PodName`, `FullPodName`  |  포드에 대한 메모리 요청량입니다. 공식: `sum(container_memory_request)`  `pod_memory_request`는 지표로 직접 보고되지는 않지만 성능 로그 이벤트의 필드입니다. 자세한 내용은 [Amazon EKS 및 Kubernetes에 대한 성능 로그 이벤트의 관련 필드](Container-Insights-reference-performance-entries-EKS.md) 섹션을 참조하세요.   | 
|  `pod_cpu_limit`  |  `ClusterName` `PodName`, `Namespace`, `ClusterName` `Namespace`, `ClusterName`, `Service` `ClusterName`, `Namespace`, `PodName`, `FullPodName`  |  포드의 컨테이너에 대해 정의된 CPU 한도입니다. 포드의 컨테이너에 CPU 제한이 정의되지 않은 경우 이 지표는 표시되지 않습니다. 공식: `sum(container_cpu_limit)`  `pod_cpu_limit`는 지표로 직접 보고되지는 않지만 성능 로그 이벤트의 필드입니다. 자세한 내용은 [Amazon EKS 및 Kubernetes에 대한 성능 로그 이벤트의 관련 필드](Container-Insights-reference-performance-entries-EKS.md) 섹션을 참조하세요.   | 
|  `pod_memory_limit`   |  `ClusterName` `PodName`, `Namespace`, `ClusterName` `Namespace`, `ClusterName`, `Service` `ClusterName`, `Namespace`, `PodName`, `FullPodName`  |  포드의 컨테이너에 대해 정의된 메모리 한도입니다. 포드의 컨테이너에 메모리 제한이 정의되지 않은 경우 이 지표는 표시되지 않습니다. 공식: `sum(container_memory_limit)`  `pod_cpu_limit`는 지표로 직접 보고되지는 않지만 성능 로그 이벤트의 필드입니다. 자세한 내용은 [Amazon EKS 및 Kubernetes에 대한 성능 로그 이벤트의 관련 필드](Container-Insights-reference-performance-entries-EKS.md) 섹션을 참조하세요.   | 
|  `pod_status_failed`   |  `ClusterName` `PodName`, `Namespace`, `ClusterName` `Namespace`, `ClusterName`, `Service` `ClusterName`, `Namespace`, `PodName`, `FullPodName`  |  포드의 모든 컨테이너가 종료되었으며, 하나 이상의 컨테이너가 0이 아닌 상태로 종료되었거나 시스템에 의해 종료되었음을 나타냅니다.  | 
|  `pod_status_ready`  |  `ClusterName` `PodName`, `Namespace`, `ClusterName` `Namespace`, `ClusterName`, `Service` `ClusterName`, `Namespace`, `PodName`, `FullPodName`  |  포드의 모든 컨테이너가 `ContainerReady` 조건에 도달하여 준비가 완료되었음을 나타냅니다.  | 
|  `pod_status_running`  |  `ClusterName` `PodName`, `Namespace`, `ClusterName` `Namespace`, `ClusterName`, `Service` `ClusterName`, `Namespace`, `PodName`, `FullPodName`  |  포드의 모든 컨테이너가 실행 중임을 나타냅니다.  | 
|  `pod_status_scheduled`  |  `ClusterName` `PodName`, `Namespace`, `ClusterName` `Namespace`, `ClusterName`, `Service` `ClusterName`, `Namespace`, `PodName`, `FullPodName`  |  포드가 노드에 예약되었음을 나타냅니다.  | 
|  `pod_status_unknown`  |  `ClusterName` `PodName`, `Namespace`, `ClusterName` `Namespace`, `ClusterName`, `Service` `ClusterName`, `Namespace`, `PodName`, `FullPodName`  |  포드의 상태를 가져올 수 없음을 나타냅니다.  | 
|  `pod_status_pending`  |  `ClusterName` `PodName`, `Namespace`, `ClusterName` `Namespace`, `ClusterName`, `Service` `ClusterName`, `Namespace`, `PodName`, `FullPodName`  |  클러스터에서 포드를 수락했지만 하나 이상의 컨테이너가 아직 준비되지 않았음을 나타냅니다.  | 
|  `pod_status_succeeded`   |  `ClusterName` `PodName`, `Namespace`, `ClusterName` `Namespace`, `ClusterName`, `Service` `ClusterName`, `Namespace`, `PodName`, `FullPodName`  |  포드의 모든 컨테이너가 성공적으로 종료되었으며 다시 시작되지 않음을 나타냅니다.  | 
|  `pod_number_of_containers`   |  `ClusterName` `PodName`, `Namespace`, `ClusterName` `Namespace`, `ClusterName`, `Service` `ClusterName`, `Namespace`, `PodName`, `FullPodName`  |  포드 사양에 정의된 컨테이너 수를 보고합니다.  | 
|  `pod_number_of_running_containers`  |  `ClusterName` `PodName`, `Namespace`, `ClusterName` `Namespace`, `ClusterName`, `Service` `ClusterName`, `Namespace`, `PodName`, `FullPodName`  |  현재 `Running` 상태에 있는 포드 내 컨테이너 수를 보고합니다.  | 
|  `pod_container_status_terminated`  |  `ClusterName` `PodName`, `Namespace`, `ClusterName` `Namespace`, `ClusterName`, `Service` `ClusterName`, `Namespace`, `PodName`, `FullPodName`  |  포드에서 `Terminated` 상태에 있는 컨테이너 수를 보고합니다.  | 
|  `pod_container_status_running`   |  `ClusterName` `PodName`, `Namespace`, `ClusterName` `Namespace`, `ClusterName`, `Service` `ClusterName`, `Namespace`, `PodName`, `FullPodName`  |  포드에서 `Running` 상태에 있는 컨테이너 수를 보고합니다.  | 
|  `pod_container_status_waiting`  |  `ClusterName` `PodName`, `Namespace`, `ClusterName` `Namespace`, `ClusterName`, `Service` `ClusterName`, `Namespace`, `PodName`, `FullPodName`  |  포드에서 `Waiting` 상태에 있는 컨테이너 수를 보고합니다.  | 
|  `pod_container_status_waiting_reason_crash_loop_back_off`  |  `ClusterName` `PodName`, `Namespace`, `ClusterName` `Namespace`, `ClusterName`, `Service` `ClusterName`, `Namespace`, `PodName`, `FullPodName`  |  컨테이너가 반복적으로 시작에 실패하는 `CrashLoopBackOff` 오류로 인해 보류 중인 포드의 컨테이너 수를 보고합니다.  | 
|  `pod_container_status_waiting_reason_create_container_config_error`  |  `ClusterName` `PodName`, `Namespace`, `ClusterName` `Namespace`, `ClusterName`, `Service` `ClusterName`, `Namespace`, `PodName`, `FullPodName`  |  사유 `CreateContainerConfigError`로 보류 중인 포드의 컨테이너 수를 보고합니다. 이는 컨테이너 구성을 생성하는 동안 오류가 발생했기 때문입니다.  | 
|  `pod_container_status_waiting_reason_create_container_error`  |  `ClusterName` `PodName`, `Namespace`, `ClusterName` `Namespace`, `ClusterName`, `Service` `ClusterName`, `Namespace`, `PodName`, `FullPodName`  |  컨테이너 생성 중 발생한 오류 때문에 사유 `CreateContainerError`로 보류 중인 포드의 컨테이너 수를 보고합니다.  | 
|  `pod_container_status_waiting_reason_image_pull_error`  |  `ClusterName` `PodName`, `Namespace`, `ClusterName` `Namespace`, `ClusterName`, `Service` `ClusterName`, `Namespace`, `PodName`, `FullPodName`  |  `ErrImagePull`, `ImagePullBackOff` 또는 `InvalidImageName` 때문에 보류 중인 포드의 컨테이너 수를 보고합니다. 이러한 상황은 컨테이너 이미지를 가져오는 중 오류로 인해 발생합니다.  | 
|  `pod_container_status_waiting_reason_start_error`  |  `ClusterName` `PodName`, `Namespace`, `ClusterName` `Namespace`, `ClusterName`, `Service` `ClusterName`, `Namespace`, `PodName`, `FullPodName`  |  컨테이너 시작 중 발생한 오류 때문에 사유 `StartError`로 보류 중인 포드의 컨테이너 수를 보고합니다.  | 
|  `pod_container_status_terminated_reason_oom_killed`   |  `ContainerName`, `FullPodName`, `PodName`, `Namespace`, `ClusterName` `ContainerName`, `PodName`, `Namespace`, `ClusterName` `ClusterName`  |  메모리 제한을 초과하여 포드가 종료되었음을 나타냅니다. 이 지표 는이 문제가 발생한 경우에만 표시됩니다.  | 
|  `pod_interface_network_rx_dropped`  |  `ClusterName` `PodName`, `Namespace`, `ClusterName` `Namespace`, `ClusterName`, `Service` `ClusterName`, `Namespace`, `PodName`, `FullPodName`  |  포드의 네트워크 인터페이스에서 수신된 후 삭제된 패킷 수입니다.  | 
|  `pod_interface_network_tx_dropped`  |  `ClusterName` `PodName`, `Namespace`, `ClusterName` `Namespace`, `ClusterName`, `Service` `ClusterName`, `Namespace`, `PodName`, `FullPodName`  |  전송될 예정이었으나 포드에서 삭제된 패킷 수입니다.  | 
| `pod_memory_working_set` |  `ClusterName` `ClusterName`, `Namespace`, `PodName` `ClusterName`, `Namespace`, `Service` `ClusterName`, `Namespace`, `PodName`, `FullPodName`  | 포드에서 현재 사용 중인 메모리(바이트). | 
| `pod_cpu_usage_total` |  `ClusterName` `ClusterName`, `Namespace`, `PodName` `ClusterName`, `Namespace`, `Service` `ClusterName`, `Namespace`, `PodName`, `FullPodName`  | 포드에서 사용되는 CPU 단위 수. | 
|  `container_cpu_utilization`  |  `ClusterName` `PodName`, `Namespace`, `ClusterName`, `ContainerName` `PodName`, `Namespace`, `ClusterName`, `ContainerName`, `FullPodName`  |  컨테이너에서 사용 중인 CPU 단위의 비율입니다. 공식: `container_cpu_usage_total / node_cpu_limit`  `container_cpu_utilization`는 지표로 직접 보고되지는 않지만 성능 로그 이벤트의 필드입니다. 자세한 내용은 [Amazon EKS 및 Kubernetes에 대한 성능 로그 이벤트의 관련 필드](Container-Insights-reference-performance-entries-EKS.md) 섹션을 참조하세요.   | 
|  `container_cpu_utilization_over_container_limit`   |  `ClusterName` `PodName`, `Namespace`, `ClusterName`, `ContainerName` `PodName`, `Namespace`, `ClusterName`, `ContainerName`, `FullPodName`  |  컨테이너 제한을 기준으로 컨테이너에서 사용 중인 CPU 단위의 비율입니다. 컨테이너에 CPU 제한이 정의되지 않은 경우 이 지표는 표시되지 않습니다. 공식: `container_cpu_usage_total / container_cpu_limit`  `container_cpu_utilization_over_container_limit`는 지표로 직접 보고되지는 않지만 성능 로그 이벤트의 필드입니다. 자세한 내용은 [Amazon EKS 및 Kubernetes에 대한 성능 로그 이벤트의 관련 필드](Container-Insights-reference-performance-entries-EKS.md) 섹션을 참조하세요.   | 
|  `container_memory_utilization`  |  `ClusterName` `PodName`, `Namespace`, `ClusterName`, `ContainerName` `PodName`, `Namespace`, `ClusterName`, `ContainerName`, `FullPodName`  |  컨테이너에서 사용 중인 메모리 단위의 비율입니다. 공식: `container_memory_working_set / node_memory_limit`  `container_memory_utilization`는 지표로 직접 보고되지는 않지만 성능 로그 이벤트의 필드입니다. 자세한 내용은 [Amazon EKS 및 Kubernetes에 대한 성능 로그 이벤트의 관련 필드](Container-Insights-reference-performance-entries-EKS.md) 섹션을 참조하세요.   | 
|  `container_memory_utilization_over_container_limit`    |  `ClusterName` `PodName`, `Namespace`, `ClusterName`, `ContainerName` `PodName`, `Namespace`, `ClusterName`, `ContainerName`, `FullPodName`  |  컨테이너 제한을 기준으로 컨테이너에서 사용 중인 메모리 단위의 비율입니다. 컨테이너에 메모리 제한이 정의되지 않은 경우 이 지표는 표시되지 않습니다. 공식: `container_memory_working_set / container_memory_limit`  `container_memory_utilization_over_container_limit`는 지표로 직접 보고되지는 않지만 성능 로그 이벤트의 필드입니다. 자세한 내용은 [Amazon EKS 및 Kubernetes에 대한 성능 로그 이벤트의 관련 필드](Container-Insights-reference-performance-entries-EKS.md) 섹션을 참조하세요.   | 
|  `container_memory_failures_total`  Windows에서는 제공되지 않습니다.  |  `ClusterName` `PodName`, `Namespace`, `ClusterName`, `ContainerName` `PodName`, `Namespace`, `ClusterName`, `ContainerName`, `FullPodName`  |  컨테이너에서 발생한 메모리 할당 실패 횟수입니다.  | 
|  `pod_number_of_container_restarts`  |  PodName, `Namespace`, `ClusterName`   |  Pod의 컨테이너 재시작 총 횟수입니다.  | 
|  `service_number_of_running_pods`  |  서비스, `Namespace`, `ClusterName`  `ClusterName`  |  클러스터에서 단일 또는 복수의 서비스를 실행하는 Pod의 숫자입니다.  | 
|  `replicas_desired`   |  `ClusterName` `PodName`, `Namespace`, `ClusterName`  |  워크로드 사양에 정의된 워크로드에 필요한 포드 수입니다.  | 
|  `replicas_ready`   |  `ClusterName` `PodName`, `Namespace`, `ClusterName`  |  준비 상태에 도달한 워크로드의 포드 수입니다.  | 
|  `status_replicas_available`  |  `ClusterName` `PodName`, `Namespace`, `ClusterName`  |  워크로드에 사용할 수 있는 포드 수입니다. 워크로드 사양에 정의된 대로 `minReadySeconds` 준비가 되면 포드를 사용할 수 있습니다.  | 
|  `status_replicas_unavailable`  |  `ClusterName` `PodName`, `Namespace`, `ClusterName`  |  사용할 수 없는 워크로드의 포드 수입니다. 워크로드 사양에 정의된 대로 `minReadySeconds` 준비가 되면 포드를 사용할 수 있습니다. 이 기준을 충족하지 않으면 포드를 사용할 수 없습니다.  | 
|  `apiserver_storage_objects`  |  `ClusterName` `ClusterName`, `resource`  |  마지막 확인 당시 etcd에 저장된 객체 수입니다.  | 
|  `apiserver_storage_db_total_size_in_bytes`  |  `ClusterName` `ClusterName`, `endpoint`  |  물리적으로 할당된 스토리지 데이터베이스 파일의 총 크기(바이트)입니다. 이 지표는 실험용이며 Kubernetes의 향후 릴리스에서 변경될 수도 있습니다. 단위: 바이트 유용한 통계: 합계, 평균, 최소, 최대  | 
|  `apiserver_request_total`  |  `ClusterName` `ClusterName`, `code`, `verb`  |  Kubernetes API 서버에 대한 총 API 요청 수입니다.  | 
|  `apiserver_request_duration_seconds`  |  `ClusterName` `ClusterName`, `verb`  |  Kubernetes API 서버에 대한 API 요청의 응답 지연 시간입니다.  | 
|  `apiserver_admission_controller_admission_duration_seconds`  |  `ClusterName` `ClusterName`, `operation`  |  승인 컨트롤러 지연 시간(초)입니다. 승인 컨트롤러는 Kubernetes API 서버에 대한 요청을 가로채는 코드입니다.  | 
|  `rest_client_request_duration_seconds`   |  `ClusterName` `ClusterName`, `operation`  |  Kubernetes API 서버를 호출하는 클라이언트가 경험한 응답 지연 시간입니다. 이 지표는 실험용이며 Kubernetes의 향후 릴리스에서 변경될 수 있습니다.  | 
|  `rest_client_requests_total`   |  `ClusterName` `ClusterName`, `code`, `method`  |  클라이언트가 Kubernetes API 서버에 요청한 총 API 요청 수입니다. 이 지표는 실험용이며 Kubernetes의 향후 릴리스에서 변경될 수 있습니다.  | 
|  `etcd_request_duration_seconds`   |  `ClusterName` `ClusterName`, `operation`  |  Etcd에 대한 API 호출의 응답 지연 시간입니다. 이 지표는 실험용이며 Kubernetes의 향후 릴리스에서 변경될 수 있습니다.  | 
|  `apiserver_storage_size_bytes`   |  `ClusterName` `ClusterName`, `endpoint`  |  물리적으로 할당된 스토리지 데이터베이스 파일의 크기(바이트)입니다. 이 지표는 실험용이며 Kubernetes의 향후 릴리스에서 변경될 수 있습니다.  | 
|  `apiserver_longrunning_requests`  |  `ClusterName` `ClusterName`, `resource`  |  Kubernetes API 서버에 대한 활성 장기 실행 요청 수입니다.  | 
|  `apiserver_current_inflight_requests`  |  `ClusterName` `ClusterName`, `request_kind`  |  Kubernetes API 서버에서 처리 중인 요청 수입니다.  | 
|  `apiserver_admission_webhook_admission_duration_seconds`  |  `ClusterName` `ClusterName`, `name`  |  승인 웹후크 지연 시간(초)입니다. 승인 웹후크는 승인 요청을 수신하고 이를 이용해 무언가를 수행하는 HTTP 콜백입니다.  | 
|  `apiserver_admission_step_admission_duration_seconds`   |  `ClusterName` `ClusterName`, `operation`  |  승인 하위 단계 지연 시간(초)입니다.  | 
|  `apiserver_requested_deprecated_apis`   |  `ClusterName` `ClusterName`, `group`  |  Kubernetes API 서버에서 더 이상 사용되지 않는 API에 대한 요청 수입니다.  | 
|  `apiserver_request_total_5xx`  |  `ClusterName` `ClusterName`, `code`, `verb`  |  Kubernetes API 서버에 대한 요청 중 5XX HTTP 응답 코드로 응답한 요청 수입니다.  | 
|  `apiserver_storage_list_duration_seconds`   |  `ClusterName` `ClusterName`, `resource`  |  Etc의 객체를 나열하는 응답 지연 시간. 이 지표는 실험용이며 Kubernetes의 향후 릴리스에서 변경될 수 있습니다.  | 
|  `apiserver_flowcontrol_request_concurrency_limit`   |  `ClusterName` `ClusterName`, `priority_level`  |  API 우선순위 및 공정성 하위 시스템에서 현재 실행 중인 요청이 사용하는 스레드 수.  | 
|  `apiserver_flowcontrol_rejected_requests_total`   |  `ClusterName` `ClusterName`, `reason`  |  API 우선순위 및 공정성 하위 시스템에서 거부한 요청 수입니다. 이 지표는 실험용이며 Kubernetes의 향후 릴리스에서 변경될 수 있습니다.  | 
|  `apiserver_current_inqueue_requests`   |  `ClusterName` `ClusterName`, `request_kind`  |  Kubernetes API 서버에서 대기열에 있는 요청 수입니다. 이 지표는 실험용이며 Kubernetes의 향후 릴리스에서 변경될 수 있습니다.  | 

## NVIDIA GPU 지표
<a name="Container-Insights-metrics-EKS-GPU"></a>

Amazon EKS의 향상된 관찰성을 사용하여 CloudWatch 에이전트 버전 `1.300034.0`부터 Container Insights는 기본적으로 EKS 워크로드에서 NVIDIA GPU 지표를 수집합니다. CloudWatch 에이전트를 설치할 때는 CloudWatch Observability EKS 추가 기능 버전 `v1.3.0-eksbuild.1` 이상을 사용해야 합니다. 자세한 내용은 [Amazon CloudWatch Observability EKS 추가 기능 또는 헬름 차트를 사용하여 CloudWatch 에이전트 설치](install-CloudWatch-Observability-EKS-addon.md) 섹션을 참조하세요. 이렇게 수집된 NVIDIA GPU 지표는 이 섹션의 표에 나열되어 있습니다.

Container Insights로 NVIDIA GPU 지표를 수집하려면 다음 사전 요구 사항을 충족해야 합니다.
+ Amazon CloudWatch Observability EKS 추가 기능 버전 `v1.3.0-eksbuild.1` 이상을 사용하여 Amazon EKS의 향상된 관찰 기능을 갖춘 Container Insights를 사용해야 합니다.
+ [쿠버네티스용 NVIDIA 디바이스 플러그인을 클러스터에 설치해야 합니다](https://github.com/NVIDIA/k8s-device-plugin).
+ [NVIDIA 컨테이너 툴킷](https://github.com/NVIDIA/nvidia-container-toolkit)은 클러스터의 노드에 설치해야 합니다. 예를 들어 Amazon EKS 최적화된 가속화 AMI는 필수 구성 요소로 구축됩니다.

CloudWatch 에이전트 구성 파일 처음의 `accelerated_compute_metrics` 옵션을 `false`로 설정하여 NVIDIA GPU 지표 수집을 옵트아웃할 수 있습니다. 자세한 내용과 옵트아웃 예시는 [(선택 사항) 추가 구성](install-CloudWatch-Observability-EKS-addon.md#install-CloudWatch-Observability-EKS-addon-configuration) 단원을 참조하십시오.


| 지표 이름 | 측정 기준 | 설명 | 
| --- | --- | --- | 
|  `container_gpu_memory_total` |  `ClusterName` `ClusterName`, `Namespace`, `PodName`, `ContainerName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `ContainerName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `ContainerName`, `GpuDevice`  |  컨테이너에 할당된 GPU의 총 프레임 버퍼 바이트 규모.  | 
|  `container_gpu_memory_used` |  `ClusterName` `ClusterName`, `Namespace`, `PodName`, `ContainerName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `ContainerName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `ContainerName`, `GpuDevice`  |  컨테이너에 할당된 GPU에서 사용된 프레임 버퍼의 바이트.  | 
|  `container_gpu_memory_utilization` |  `ClusterName` `ClusterName`, `Namespace`, `PodName`, `ContainerName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `ContainerName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `ContainerName`, `GpuDevice`  |  컨테이너에 할당된 GPU의 프레임 버퍼 사용률.  | 
|  `container_gpu_power_draw` |  `ClusterName` `ClusterName`, `Namespace`, `PodName`, `ContainerName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `ContainerName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `ContainerName`, `GpuDevice`  |  컨테이너에 할당된 GPU의 전력 와트 사용량.  | 
|  `container_gpu_temperature` |  `ClusterName` `ClusterName`, `Namespace`, `PodName`, `ContainerName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `ContainerName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `ContainerName`, `GpuDevice`  |  컨테이너에 할당된 GPU의 섭씨 온도.  | 
|  `container_gpu_utilization` |  `ClusterName` `ClusterName`, `Namespace`, `PodName`, `ContainerName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `ContainerName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `ContainerName`, `GpuDevice`  |  컨테이너에 할당된 GPU의 활용률.  | 
|  `container_gpu_tensor_core_utilization` |  `ClusterName` `ClusterName`, `Namespace`, `PodName`, `ContainerName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `ContainerName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `ContainerName`, `GpuDevice`  |  컨테이너에 할당된 GPU의 텐서 코어 사용률.  | 
|  `node_gpu_memory_total` |  `ClusterName` `ClusterName`, `InstanceId`, `NodeName` `ClusterName`, `InstanceId`, `InstanceType`, `NodeName`, `GpuDevice`  |  노드에 할당된 GPU의 총 프레임 버퍼 바이트 규모.  | 
|  `node_gpu_memory_used` |  `ClusterName` `ClusterName`, `InstanceId`, `NodeName` `ClusterName`, `InstanceId`, `InstanceType`, `NodeName`, `GpuDevice`  |  노드에 할당된 GPU에서 사용된 프레임 버퍼의 바이트.  | 
|  `node_gpu_memory_utilization` |  `ClusterName` `ClusterName`, `InstanceId`, `NodeName` `ClusterName`, `InstanceId`, `InstanceType`, `NodeName`, `GpuDevice`  |  노드에 할당된 GPU의 프레임 버퍼 사용률.  | 
|  `node_gpu_power_draw` |  `ClusterName` `ClusterName`, `InstanceId`, `NodeName` `ClusterName`, `InstanceId`, `InstanceType`, `NodeName`, `GpuDevice`  |  노드에 할당된 GPU의 전력 와트 사용량.  | 
|  `node_gpu_temperature` |  `ClusterName` `ClusterName`, `InstanceId`, `NodeName` `ClusterName`, `InstanceId`, `InstanceType`, `NodeName`, `GpuDevice`  |  노드에 할당된 GPU의 섭씨 온도.  | 
|  `node_gpu_utilization` |  `ClusterName` `ClusterName`, `InstanceId`, `NodeName` `ClusterName`, `InstanceId`, `InstanceType`, `NodeName`, `GpuDevice`  |  노드에 할당된 GPU의 활용률.  | 
|  `node_gpu_tensor_core_utilization` |  `ClusterName` `ClusterName`, `InstanceId`, `NodeName` `ClusterName`, `InstanceId`, `InstanceType`, `NodeName`, `GpuDevice`  |  노드에 할당된 GPU의 텐서 코어 사용률.  | 
|  `pod_gpu_memory_total` |  `ClusterName` `ClusterName`, `Namespace` `ClusterName`, `Namespace`, `Service` `ClusterName`, `Namespace`, `PodName` `ClusterName`, `Namespace`, `PodName`, `FullPodName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`. `GpuDevice`  |  포드에 할당된 GPU의 총 프레임 버퍼 바이트 규모.  | 
|  `pod_gpu_memory_used` |  `ClusterName` `ClusterName`, `Namespace` `ClusterName`, `Namespace`, `Service` `ClusterName`, `Namespace`, `PodName` `ClusterName`, `Namespace`, `PodName`, `FullPodName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`. `GpuDevice`  |  포드에 할당된 GPU에서 사용된 프레임 버퍼의 바이트.  | 
|  `pod_gpu_memory_utilization` |  `ClusterName` `ClusterName`, `Namespace` `ClusterName`, `Namespace`, `Service` `ClusterName`, `Namespace`, `PodName` `ClusterName`, `Namespace`, `PodName`, `FullPodName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`. `GpuDevice`  |  포드에 할당된 GPU의 프레임 버퍼 사용률.  | 
|  `pod_gpu_power_draw` |  `ClusterName` `ClusterName`, `Namespace` `ClusterName`, `Namespace`, `Service` `ClusterName`, `Namespace`, `PodName` `ClusterName`, `Namespace`, `PodName`, `FullPodName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`. `GpuDevice`  |  포드에 할당된 GPU의 전력 와트 사용량.  | 
|  `pod_gpu_temperature` |  `ClusterName` `ClusterName`, `Namespace` `ClusterName`, `Namespace`, `Service` `ClusterName`, `Namespace`, `PodName` `ClusterName`, `Namespace`, `PodName`, `FullPodName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`. `GpuDevice`  |  포드에 할당된 GPU 온도(섭씨).  | 
|  `pod_gpu_utilization` |  `ClusterName` `ClusterName`, `Namespace`, `PodName`, `ContainerName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `ContainerName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `ContainerName`, `GpuDevice`  |  포드에 할당된 GPU의 활용률.  | 
|  `pod_gpu_tensor_core_utilization` |  `ClusterName` `ClusterName`, `Namespace`, `PodName`, `ContainerName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `ContainerName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `ContainerName`, `GpuDevice`  |  포드에 할당된 GPU의 텐서 코어 사용률.  | 

### 세부적인 GPU 모니터링
<a name="Container-Insights-detailed-GPU-monitoring"></a>

CloudWatch 에이전트 `1.300062.0` 버전부터 Amazon EKS에 대해 향상된 관찰성 기능이 포함되는 Container Insights는 1분 미만의 수집 간격으로 세부 GPU 모니터링을 지원합니다. 이를 통해 일반적인 수집 간격으로는 완전히 누락될 수 있는 단기 기계 학습 추론 워크로드의 모니터링 격차를 해결할 수 있습니다. CloudWatch 에이전트를 설치할 때는 CloudWatch Observability EKS 추가 기능 버전 `v4.7.0-eksbuild.1` 이상을 사용해야 합니다. 자세한 내용은 [Amazon CloudWatch Observability EKS 추가 기능 또는 헬름 차트를 사용하여 CloudWatch 에이전트 설치](install-CloudWatch-Observability-EKS-addon.md) 섹션을 참조하세요.

기본적으로 GPU 지표는 60초 간격으로 수집됩니다. 세부 모니터링이 활성화된 상태에서는 CloudWatch 에이전트가 1분 미만의 간격(최소 1초)으로 GPU 지표를 수집하지만, 지표는 여전히 1분 간격으로 CloudWatch에 수집됩니다. 그러나 각각의 1분 내에서 1분 미만 데이터 포인트의 통계 집계(예: 최소, 최대, 백분위수(예: p90))를 쿼리할 수 있으므로, 정확한 GPU 사용률 데이터가 제공되고 리소스가 한층 더 최적화됩니다.

#### 구성
<a name="Container-Insights-detailed-GPU-monitoring-configuration"></a>

자세한 GPU 모니터링을 활성화하려면 다음 예제와 같이 `kubernetes` 섹션에 `accelerated_compute_gpu_metrics_collection_interval` 파라미터를 포함하도록 CloudWatch 에이전트 구성을 업데이트하세요.

```
{  
    "logs": {  
        "metrics_collected": {  
            "kubernetes": {  
                "cluster_name": "MyCluster",  
                "enhanced_container_insights": true,  
                "accelerated_compute_metrics": true,  
                "accelerated_compute_gpu_metrics_collection_interval": 1  
            }  
        }  
    }  
}
```

`accelerated_compute_gpu_metrics_collection_interval` 파라미터는 초 단위로 값을 수락하며, 최소값은 1초입니다. 이 값을 `1`로 설정하면 1초라는 수집 간격이 활성화됩니다. 이 파라미터를 지정하지 않으면 60초 간격이 기본값으로 사용됩니다.

전체 구성 지침은 [클러스터 지표를 수집하도록 CloudWatch 에이전트 설정](Container-Insights-setup-metrics.md) 섹션을 참조하세요.

## AWS Trainium 및 AWS Inferentia의 AWS Neuron 지표
<a name="Container-Insights-metrics-EKS-Neuron"></a>

CloudWatch 에이전트의 `1.300036.0` 버전부터 Amazon EKS의 향상된 관찰 기능을 갖춘 Container Insights는 기본적으로 AWS Trainium 및 AWS Inferentia 액셀러레이터로부터 가속화된 컴퓨팅 지표를 수집합니다. CloudWatch 에이전트를 설치할 때는 CloudWatch Observability EKS 추가 기능 버전 `v1.5.0-eksbuild.1` 이상을 사용해야 합니다. 추가 기능에 대한 자세한 내용은 [Amazon CloudWatch Observability EKS 추가 기능 또는 헬름 차트를 사용하여 CloudWatch 에이전트 설치](install-CloudWatch-Observability-EKS-addon.md) 섹션을 참조하세요. AWS Trainium에 대한 자세한 내용은 [AWS Trainium](https://aws.amazon.com/machine-learning/trainium/)을 참조하세요. AWS Inferentia에 대한 자세한 내용은 [AWS Inferentia](https://aws.amazon.com/machine-learning/inferentia/)를 참조하세요.

Container Insights로 AWS Neuron 지표를 수집하려면 다음 사전 조건을 충족해야 합니다.
+ Amazon CloudWatch Observability EKS 추가 기능 버전 `v1.5.0-eksbuild.1` 이상을 사용하여 Amazon EKS의 향상된 관찰 기능을 갖춘 Container Insights를 사용해야 합니다.
+ [Neuron 드라이버](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/general/setup/neuron-setup/pytorch/neuronx/ubuntu/torch-neuronx-ubuntu22.html#setup-torch-neuronx-ubuntu22)는 클러스터의 노드에 설치해야 합니다.
+ [Neuron 디바이스 플러그인](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/containers/kubernetes-getting-started.html)은 클러스터에 설치해야 합니다. 예를 들어 Amazon EKS 최적화된 가속화 AMI는 필수 구성 요소로 구축됩니다.

이렇게 수집된 지표는 이 섹션의 표에 나열되어 있습니다. 지표는 AWS Trainium, AWS Inferentia, AWS Inferentia2에 대해 수집됩니다.

CloudWatch 에이전트는 [Neuron 모니터](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/tools/neuron-sys-tools/neuron-monitor-user-guide.html)에서 이러한 지표를 수집하고 필요한 Kubernetes 리소스 상관 관계를 수행하여 포드 및 컨테이너 수준에서 지표를 제공합니다.


| 지표 이름 | 측정 기준 | 설명 | 
| --- | --- | --- | 
|  `container_neuroncore_utilization` |  `ClusterName` `ClusterName`, `Namespace`, `PodName`, `ContainerName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `ContainerName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `ContainerName`, `NeuronDevice`, `NeuronCore`  |  컨테이너에 할당된 NeuronCore의 캡처된 기간 동안의 NeuronCore 사용률. 단위: 퍼센트  | 
|  `container_neuroncore_memory_usage_constants` |  `ClusterName` `ClusterName`, `Namespace`, `PodName`, `ContainerName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `ContainerName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `ContainerName`, `NeuronDevice`, `NeuronCore`  |  NeuronCore의 교육 도중 컨테이너에 할당된 상수(또는 추론 중 가중치)에 사용되는 디바이스 메모리의 양입니다. 단위: 바이트  | 
|  `container_neuroncore_memory_usage_model_code` |  `ClusterName` `ClusterName`, `Namespace`, `PodName`, `ContainerName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `ContainerName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `ContainerName`, `NeuronDevice`, `NeuronCore`  |  컨테이너에 할당된 NeuronCore가 모델의 실행 코드에 사용하는 디바이스 메모리의 양입니다. 단위: 바이트  | 
|  `container_neuroncore_memory_usage_model_shared_scratchpad` |  `ClusterName` `ClusterName`, `Namespace`, `PodName`, `ContainerName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `ContainerName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `ContainerName`, `NeuronDevice`, `NeuronCore`  |  컨테이너에 할당된 NeuronCore가 모델의 공유되는 스크래치패드에 사용하는 디바이스 메모리의 양입니다. 이 메모리 영역은 모델용입니다. 단위: 바이트  | 
|  `container_neuroncore_memory_usage_runtime_memory` |  `ClusterName` `ClusterName`, `Namespace`, `PodName`, `ContainerName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `ContainerName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `ContainerName`, `NeuronDevice`, `NeuronCore`  |  컨테이너에 할당된 NeuronCore에서 Neuron 런타임에 사용하는 디바이스 메모리의 양입니다. 단위: 바이트  | 
|  `container_neuroncore_memory_usage_tensors` |  `ClusterName` `ClusterName`, `Namespace`, `PodName`, `ContainerName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `ContainerName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `ContainerName`, `NeuronDevice`, `NeuronCore`  |  컨테이너에 할당된 NeuronCore에서 텐서에 사용하는 디바이스 메모리의 양입니다. 단위: 바이트  | 
|  `container_neuroncore_memory_usage_total` |  `ClusterName` `ClusterName`, `Namespace`, `PodName`, `ContainerName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `ContainerName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `ContainerName`, `NeuronDevice`, `NeuronCore`  |  컨테이너에 할당된 NeuronCore에서 사용하는 총 메모리의 양입니다. 단위: 바이트  | 
|  `container_neurondevice_hw_ecc_events_total` |  `ClusterName` `ClusterName`, `Namespace`, `PodName`, `ContainerName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `ContainerName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `ContainerName`, `NeuronDevice`  |  노드에 있는 Neuron 디바이스의 온칩 SRAM 및 디바이스 메모리에 대해 수정 및 수정되지 않은 ECC 이벤트의 수입니다. 단위: 수  | 
|  `pod_neuroncore_utilization` |  `ClusterName` `ClusterName`, `Namespace` `ClusterName`, `Namespace`, `Service` `ClusterName`, `Namespace`, `PodName`, `FullPodName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `NeuronDevice`, `NeuronCore`  |  포드에 할당된 NeuronCore의 캡처된 기간 동안의 NeuronCore 사용률. 단위: 퍼센트  | 
|  `pod_neuroncore_memory_usage_constants` |  `ClusterName` `ClusterName`, `Namespace` `ClusterName`, `Namespace`, `Service` `ClusterName`, `Namespace`, `PodName`, `FullPodName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `NeuronDevice`, `NeuronCore`  |  NeuronCore의 교육 도중 포드에 할당된 상수(또는 추론 중 가중치)에 사용되는 디바이스 메모리의 양입니다. 단위: 바이트  | 
|  `pod_neuroncore_memory_usage_model_code` |  `ClusterName` `ClusterName`, `Namespace` `ClusterName`, `Namespace`, `Service` `ClusterName`, `Namespace`, `PodName`, `FullPodName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `NeuronDevice`, `NeuronCore`  |  포드에 할당된 NeuronCore가 모델의 실행 코드에 사용하는 디바이스 메모리의 양입니다. 단위: 바이트  | 
|  `pod_neuroncore_memory_usage_model_shared_scratchpad` |  `ClusterName` `ClusterName`, `Namespace` `ClusterName`, `Namespace`, `Service` `ClusterName`, `Namespace`, `PodName`, `FullPodName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `NeuronDevice`, `NeuronCore`  |  포드에 할당된 NeuronCore가 모델의 공유되는 스크래치패드에 사용하는 디바이스 메모리의 양입니다. 이 메모리 영역은 모델용입니다. 단위: 바이트  | 
|  `pod_neuroncore_memory_usage_runtime_memory` |  `ClusterName` `ClusterName`, `Namespace` `ClusterName`, `Namespace`, `Service` `ClusterName`, `Namespace`, `PodName`, `FullPodName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `NeuronDevice`, `NeuronCore`  |  포드에 할당된 NeuronCore에서 Neuron 런타임에 사용하는 디바이스 메모리의 양입니다. 단위: 바이트  | 
|  `pod_neuroncore_memory_usage_tensors` |  `ClusterName` `ClusterName`, `Namespace` `ClusterName`, `Namespace`, `Service` `ClusterName`, `Namespace`, `PodName`, `FullPodName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `NeuronDevice`, `NeuronCore`  |  포드에 할당된 NeuronCore에서 텐서에 사용하는 디바이스 메모리의 양입니다. 단위: 바이트  | 
|  `pod_neuroncore_memory_usage_total` |  `ClusterName` `ClusterName`, `Namespace` `ClusterName`, `Namespace`, `Service` `ClusterName`, `Namespace`, `PodName`, `FullPodName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `NeuronDevice`, `NeuronCore`  |  포드에 할당된 NeuronCore에서 사용하는 총 메모리의 양입니다. 단위: 바이트  | 
|  `pod_neurondevice_hw_ecc_events_total` |  `ClusterName` `ClusterName`, `Namespace` `ClusterName`, `Namespace`, `Service` `ClusterName`, `Namespace`, `PodName` `ClusterName`, `Namespace`, `PodName`, `FullPodName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `NeuronDevice`  |  포드에 할당된 Neuron 디바이스의 온칩 SRAM 및 디바이스 메모리에 대해 수정 및 수정되지 않은 ECC 이벤트의 수입니다. 단위: 바이트  | 
|  `node_neuroncore_utilization` |  `ClusterName` `ClusterName`, `UltraServer` `ClusterName`, `InstanceId`, `NodeName` `ClusterName`, `InstanceType`, `InstanceId`, `NodeName`, `NeuronDevice`, `NeuronCore`  |  노드에 할당된 NeuronCore의 캡처된 기간 동안의 NeuronCore 사용률. 단위: 퍼센트  | 
|  `node_neuroncore_memory_usage_constants` |  `ClusterName` `ClusterName`, `UltraServer` `ClusterName`, `InstanceId`, `NodeName` `ClusterName`, `InstanceType`, `InstanceId`, `NodeName`, `NeuronDevice`, `NeuronCore`  |  NeuronCore의 교육 도중 노드에 할당된 상수(또는 추론 중 가중치)에 사용되는 디바이스 메모리의 양입니다. 단위: 바이트  | 
|  `node_neuroncore_memory_usage_model_code` |  `ClusterName` `ClusterName`, `UltraServer` `ClusterName`, `InstanceId`, `NodeName` `ClusterName`, `InstanceType`, `InstanceId`, `NodeName`, `NeuronDevice`, `NeuronCore`  |  노드에 할당된 NeuronCore가 모델의 실행 코드에 사용하는 디바이스 메모리의 양입니다. 단위: 바이트  | 
|  `node_neuroncore_memory_usage_model_shared_scratchpad` |  `ClusterName` `ClusterName`, `UltraServer` `ClusterName`, `InstanceId`, `NodeName` `ClusterName`, `InstanceType`, `InstanceId`, `NodeName`, `NeuronDevice`, `NeuronCore`  |  노드에 할당된 NeuronCore가 모델의 공유되는 스크래치패드에 사용하는 디바이스 메모리의 양입니다. 이 메모리 영역은 모델용입니다. 단위: 바이트  | 
|  `node_neuroncore_memory_usage_runtime_memory` |  `ClusterName` `ClusterName`, `UltraServer` `ClusterName`, `InstanceId`, `NodeName` `ClusterName`, `InstanceType`, `InstanceId`, `NodeName`, `NeuronDevice`, `NeuronCore`  |  노드에 할당된 NeuronCore에서 Neuron 런타임에 사용하는 디바이스 메모리의 양입니다. 단위: 바이트  | 
|  `node_neuroncore_memory_usage_tensors` |  `ClusterName` `ClusterName`, `UltraServer` `ClusterName`, `InstanceId`, `NodeName` `ClusterName`, `InstanceType`, `InstanceId`, `NodeName`, `NeuronDevice`, `NeuronCore`  |  노드에 할당된 NeuronCore에서 텐서에 사용하는 디바이스 메모리의 양입니다. 단위: 바이트  | 
|  `node_neuroncore_memory_usage_total` |  `ClusterName` `ClusterName`, `UltraServer` `ClusterName`, `InstanceId`, `NodeName` `ClusterName`, `InstanceType`, `InstanceId`, `NodeName`, `NeuronDevice`, `NeuronCore`  |  노드에 할당된 NeuronCore에서 사용하는 총 메모리의 양입니다. 단위: 바이트  | 
|  `node_neuron_execution_errors_total` |  `ClusterName` `ClusterName`, `UltraServer` `ClusterName`, `InstanceId`, `NodeName`  |  노드의 총 실행 오류 수입니다. 이 값은 CloudWatch 에이전트에서 `generic`, `numerical`, `transient`, `model`, `runtime`, `hardware` 유형의 오류를 집계하여 계산됩니다. 단위: 수  | 
|  `node_neurondevice_runtime_memory_used_bytes` |  `ClusterName` `ClusterName`, `UltraServer` `ClusterName`, `InstanceId`, `NodeName`  |  노드의 Neuron 디바이스 메모리 사용량(바이트)의 총합입니다. 단위: 바이트  | 
| `node_neuron_execution_latency` |  `ClusterName` `ClusterName`, `UltraServer` `ClusterName`, `InstanceId`, `NodeName`  |  Neuron 런타임으로 측정한 노드에서의 실행 지연 시간(초)입니다. 단위: 초  | 
| `node_neurondevice_hw_ecc_events_total` |  `ClusterName` `ClusterName`, `UltraServer` `ClusterName`, `InstanceId`, `NodeName` `ClusterName`, `InstanceId`, `NodeName`, `NeuronDevice`  |  노드에 있는 Neuron 디바이스의 온칩 SRAM 및 디바이스 메모리에 대해 수정 및 수정되지 않은 ECC 이벤트의 수입니다. 단위: 수  | 

## AWS Elastic Fabric Adapter(EFA) 지표
<a name="Container-Insights-metrics-EFA"></a>

CloudWatch 에이전트 `1.300037.0` 버전부터 Amazon EKS의 향상된 관찰 기능을 갖춘 Container Insights 는 Linux 인스턴스의 Amazon EKS 클러스터로부터 AWS Elastic Fabric Adapter(EFA) 지표를 수집합니다. CloudWatch 에이전트를 설치할 때는 CloudWatch Observability EKS 추가 기능 버전 `v1.5.2-eksbuild.1` 이상을 사용해야 합니다. 추가 기능에 대한 자세한 내용은 [Amazon CloudWatch Observability EKS 추가 기능 또는 헬름 차트를 사용하여 CloudWatch 에이전트 설치](install-CloudWatch-Observability-EKS-addon.md) 섹션을 참조하세요. AWS Elastic Fabric Adapter에 대한 자세한 내용은 [Elastic Fabric Adapter](https://aws.amazon.com/hpc/efa/)를 참조하세요.

Container Insights로 AWS Elastic Fabric Adapter 지표를 수집하려면 다음 사전 조건을 충족해야 합니다.
+ Amazon CloudWatch Observability EKS 추가 기능 버전 `v1.5.2-eksbuild.1` 이상을 사용하여 Amazon EKS의 향상된 관찰 기능을 갖춘 Container Insights를 사용해야 합니다.
+ EFA 디바이스 플러그인은 클러스터에 설치해야 합니다. 자세한 내용은 GitHub의 [aws-efa-k8s-device-plugin](https://github.com/aws/eks-charts/tree/master/stable/aws-efa-k8s-device-plugin)을 참조하세요.

수집된 지표 목록은 다음 표에 나와 있습니다.


| 지표 이름 | 측정 기준 | 설명 | 
| --- | --- | --- | 
|  `container_efa_rx_bytes` |  `ClusterName` `ClusterName`, `Namespace`, `PodName`, `ContainerName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `ContainerName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `ContainerName`, `NetworkInterfaceId`   |  컨테이너에 할당된 EFA 디바이스에서 수신하는 초당 바이트 수입니다. 단위: 바이트/초  | 
|  `container_efa_tx_bytes` |  `ClusterName` `ClusterName`, `Namespace`, `PodName`, `ContainerName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `ContainerName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `ContainerName`, `NetworkInterfaceId`   |  컨테이너에 할당된 EFA 디바이스에서 송신하는 초당 바이트 수입니다. 단위: 바이트/초  | 
|  `container_efa_rx_dropped` |  `ClusterName` `ClusterName`, `Namespace`, `PodName`, `ContainerName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `ContainerName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `ContainerName`, `NetworkInterfaceId`   |  컨테이너에 할당된 EFA 디바이스에서 수신 후 삭제된 패킷 수입니다. 단위: 개수/초  | 
|  `container_efa_rdma_read_bytes` |  `ClusterName` `ClusterName`, `Namespace`, `PodName`, `ContainerName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `ContainerName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `ContainerName`, `NetworkInterfaceId`   |  컨테이너에 할당된 EFA 디바이스에서 원격 직접 메모리 액세스 읽기 작업을 사용하여 수신하는 초당 바이트 수입니다. 단위: 바이트/초  | 
|  `container_efa_rdma_write_bytes` |  `ClusterName` `ClusterName`, `Namespace`, `PodName`, `ContainerName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `ContainerName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `ContainerName`, `NetworkInterfaceId`   |  컨테이너에 할당된 EFA 디바이스에서 원격 직접 메모리 액세스 읽기 작업을 사용하여 송신하는 초당 바이트 수입니다. 단위: 바이트/초  | 
|  `container_efa_rdma_write_recv_bytes` |  `ClusterName` `ClusterName`, `Namespace`, `PodName`, `ContainerName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `ContainerName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `ContainerName`, `NetworkInterfaceId`   |  컨테이너에 할당된 EFA 디바이스에서 원격 직접 메모리 액세스 쓰기 작업 도중 수신하는 초당 바이트 수입니다. 단위: 바이트/초  | 
|  `pod_efa_rx_bytes` |  `ClusterName` `ClusterName`, `Namespace` `ClusterName`, `Namespace`, `Service` `ClusterName`, `Namespace`, `PodName` `ClusterName`, `Namespace`, `PodName`, `FullPodName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `NetworkInterfaceId`  |  포드에 할당된 EFA 디바이스에서 수신하는 초당 바이트 수입니다. 단위: 바이트/초  | 
|  `pod_efa_tx_bytes` |  `ClusterName` `ClusterName`, `Namespace` `ClusterName`, `Namespace`, `Service` `ClusterName`, `Namespace`, `PodName` `ClusterName`, `Namespace`, `PodName`, `FullPodName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `NetworkInterfaceId`  |  포드에 할당된 EFA 디바이스에서 송신하는 초당 바이트 수입니다. 단위: 바이트/초  | 
|  `pod_efa_rx_dropped` |  `ClusterName` `ClusterName`, `Namespace` `ClusterName`, `Namespace`, `Service` `ClusterName`, `Namespace`, `PodName` `ClusterName`, `Namespace`, `PodName`, `FullPodName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `NetworkInterfaceId`  |  포드에 할당된 EFA 디바이스에서 수신 후 삭제된 패킷 수입니다. 단위: 개수/초  | 
|  `pod_efa_rdma_read_bytes` |  `ClusterName` `ClusterName`, `Namespace` `ClusterName`, `Namespace`, `Service` `ClusterName`, `Namespace`, `PodName` `ClusterName`, `Namespace`, `PodName`, `FullPodName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `NetworkInterfaceId`  |  포드에 할당된 EFA 디바이스에서 원격 직접 메모리 액세스 읽기 작업을 사용하여 수신하는 초당 바이트 수입니다. 단위: 바이트/초  | 
|  `pod_efa_rdma_write_bytes` |  `ClusterName` `ClusterName`, `Namespace` `ClusterName`, `Namespace`, `Service` `ClusterName`, `Namespace`, `PodName` `ClusterName`, `Namespace`, `PodName`, `FullPodName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `NetworkInterfaceId`  |  포드에 할당된 EFA 디바이스에서 원격 직접 메모리 액세스 읽기 작업을 사용하여 송신하는 초당 바이트 수입니다. 단위: 바이트/초  | 
|  `pod_efa_rdma_write_recv_bytes` |  `ClusterName` `ClusterName`, `Namespace` `ClusterName`, `Namespace`, `Service` `ClusterName`, `Namespace`, `PodName` `ClusterName`, `Namespace`, `PodName`, `FullPodName` `ClusterName`, `Namespace`, `PodName`, `FullPodName`, `NetworkInterfaceId`  |  포드에 할당된 EFA 디바이스에서 원격 직접 메모리 액세스 쓰기 작업 도중 수신하는 초당 바이트 수입니다. 단위: 바이트/초  | 
|  `node_efa_rx_bytes` |  `ClusterName` `ClusterName`, `InstanceId`, `NodeName` `ClusterName`, `InstanceId`, `InstanceType`, `NodeName`, `NetworkInterfaceId`  |  노드에 할당된 EFA 디바이스에서 수신하는 초당 바이트 수입니다. 단위: 바이트/초  | 
|  `node_efa_tx_bytes` |  `ClusterName` `ClusterName`, `InstanceId`, `NodeName` `ClusterName`, `InstanceId`, `InstanceType`, `NodeName`, `NetworkInterfaceId`  |  노드에 할당된 EFA 디바이스에서 송신하는 초당 바이트 수입니다. 단위: 바이트/초  | 
|  `node_efa_rx_dropped` |  `ClusterName` `ClusterName`, `InstanceId`, `NodeName` `ClusterName`, `InstanceId`, `InstanceType`, `NodeName`, `NetworkInterfaceId`  |  노드에 할당된 EFA 디바이스에서 수신 후 삭제된 패킷 수입니다. 단위: 개수/초  | 
|  `node_efa_rdma_read_bytes` |  `ClusterName` `ClusterName`, `InstanceId`, `NodeName` `ClusterName`, `InstanceId`, `InstanceType`, `NodeName`, `NetworkInterfaceId`  |  노드에 할당된 EFA 디바이스에서 원격 직접 메모리 액세스 읽기 작업을 사용하여 수신하는 초당 바이트 수입니다. 단위: 바이트/초  | 
|  `node_efa_rdma_write_bytes` |  `ClusterName` `ClusterName`, `InstanceId`, `NodeName` `ClusterName`, `InstanceId`, `InstanceType`, `NodeName`, `NetworkInterfaceId`  |  포드에 할당된 EFA 디바이스에서 원격 직접 메모리 액세스 읽기 작업을 사용하여 송신하는 초당 바이트 수입니다. 단위: 바이트/초  | 
|  `node_efa_rdma_write_recv_bytes` |  `ClusterName` `ClusterName`, `InstanceId`, `NodeName` `ClusterName`, `InstanceId`, `InstanceType`, `NodeName`, `NetworkInterfaceId`  |  노드에 할당된 EFA 디바이스에서 원격 직접 메모리 액세스 쓰기 작업 도중 수신하는 초당 바이트 수입니다. 단위: 바이트/초  | 

## Amazon SageMaker AI HyperPod 지표
<a name="Container-Insights-metrics-Sagemaker-HyperPod"></a>

CloudWatch Observability EKS 애드온의 버전 `v2.0.1-eksbuild.1`부터 Amazon EKS에 대한 향상된 관찰성을 갖춘 Container Insights는 Amazon EKS 클러스터에서 Amazon SageMaker AI HyperPod 지표를 자동으로 수집합니다. 추가 기능에 대한 자세한 내용은 [Amazon CloudWatch Observability EKS 추가 기능 또는 헬름 차트를 사용하여 CloudWatch 에이전트 설치](install-CloudWatch-Observability-EKS-addon.md) 섹션을 참조하세요. Amazon SageMaker AI HyperPod에 대한 자세한 내용은 [Amazon SageMaker AI HyperPod](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks.html)를 참조하세요.

수집된 지표 목록은 다음 표에 나와 있습니다.


| 지표 이름 | 측정 기준 | 설명 | 
| --- | --- | --- | 
|  `hyperpod_node_health_status_unschedulable` |  `ClusterName` `ClusterName`, `InstanceId`, `NodeName`  |  Amazon SageMaker AI HyperPod에 의해 노드가 `Unschedulable`로 레이블이 지정되었는지를 나타냅니다. 이는 노드가 심층 상태 확인을 실행 중이며 워크로드 실행에 사용할 수 없음을 의미합니다. 단위: 수  | 
|  `hyperpod_node_health_status_schedulable` |  `ClusterName` `ClusterName`, `InstanceId`, `NodeName`  |  Amazon SageMaker AI HyperPod에 의해 노드가 `Schedulable`로 레이블이 지정되었는지를 나타냅니다. 이는 노드가 기본 상태 확인 또는 심층 상태 확인을 통과했으며 워크로드 실행에 사용할 수 있음을 의미합니다. 단위: 수  | 
|  `hyperpod_node_health_status_unschedulable_pending_replacement` |  `ClusterName` `ClusterName`, `InstanceId`, `NodeName`  |  HyperPod에 의해 노드가 `UnschedulablePendingReplacement`로 레이블이 지정되었는지를 나타냅니다. 이는 노드가 심층 상태 확인 또는 상태 모니터링 에이전트 확인에 실패했으며 교체가 필요함을 의미합니다. 자동 노드 복구가 활성화된 경우 Amazon SageMaker AI HyperPod에 의해 노드가 자동으로 교체됩니다. 단위: 수  | 
|  `hyperpod_node_health_status_unschedulable_pending_reboot` |  `ClusterName` `ClusterName`, `InstanceId`, `NodeName`  |  Amazon SageMaker AI HyperPod에 의해 노드가 `UnschedulablePendingReboot`로 레이블이 지정되었는지를 나타냅니다. 이는 노드가 심층 상태 확인을 실행 중이며 재부팅이 필요함을 의미합니다. 자동 노드 복구가 활성화된 경우 Amazon SageMaker AI HyperPod에 의해 노드가 자동으로 재부팅됩니다. 단위: 수  | 

## Amazon EBS NVMe 드라이버 지표
<a name="Container-Insights-metrics-EBS"></a>

CloudWatch 에이전트 ` 1.300056.0` 버전부터 Amazon EKS의 향상된 관찰성을 갖춘 Container Insights는 Linux 인스턴스의 Amazon EKS 클러스터로부터 Amazon EBS NVMe 드라이버 지표를 수집합니다. CloudWatch 에이전트를 설치할 때는 CloudWatch Observability Amazon EKS 추가 기능 버전 `4.1.0` 이상을 사용해야 합니다. 추가 기능에 대한 자세한 내용은 [Amazon CloudWatch Observability EKS 추가 기능 또는 헬름 차트를 사용하여 CloudWatch 에이전트 설치](install-CloudWatch-Observability-EKS-addon.md) 섹션을 참조하세요. Amazon EBS에 대한 자세한 내용은 [Amazon EBS 세부 성능 통계](https://docs.aws.amazon.com/ebs/latest/userguide/nvme-detailed-performance-stats.html)를 참조하세요.

Container Insights로 Amazon EBS NVMe 드라이버 지표를 수집하려면 다음 사전 요구 사항을 충족해야 합니다.
+ CloudWatch Observability Amazon EKS 추가 기능 버전 `4.1.0` 이상을 사용하여 Amazon EKS의 향상된 관찰성을 갖춘 Container Insights를 사용해야 합니다.
+ 지표가 활성화된 클러스터에 EBS CSI 드라이버 `1.42.0` 추가 기능 또는 헬름 차트를 설치해야 합니다.
  + Amazon EBS CSI 드라이버 추가 기능을 사용할 때 지표를 활성화하려면 추가 기능을 생성하거나 업데이트할 때 다음 옵션을 사용합니다. `--configuration-values '{ "node": { "enableMetrics": true } }'` 
  + 헬름 차트를 사용하는 경우 지표를 활성화하려면 추가 기능을 생성하거나 업데이트할 때 다음 옵션을 사용합니다. `--set node.enableMetrics=true` 

수집된 지표 목록은 다음 표에 나와 있습니다.


| 지표 이름 | 측정 기준 | 설명 | 
| --- | --- | --- | 
|  `node_diskio_ebs_total_read_ops` |  `ClusterName` `ClusterName`, `NodeName`, `InstanceId` `ClusterName`, `NodeName`, `InstanceId` `VolumeId`  | 완료된 총 읽기 작업 수입니다. | 
|  `node_diskio_ebs_total_write_ops` |  `ClusterName` `ClusterName`, `NodeName`, `InstanceId` `ClusterName`, `NodeName`, `InstanceId` `VolumeId`  | 완료된 총 쓰기 작업 수입니다. | 
|  `node_diskio_ebs_total_read_bytes` |  `ClusterName` `ClusterName`, `NodeName`, `InstanceId` `ClusterName`, `NodeName`, `InstanceId` `VolumeId`  | 전송된 총 읽기 바이트 수입니다. | 
|  `node_diskio_ebs_total_write_bytes` |  `ClusterName` `ClusterName`, `NodeName`, `InstanceId` `ClusterName`, `NodeName`, `InstanceId` `VolumeId`  | 전송된 총 쓰기 바이트 수입니다. | 
|  `node_diskio_ebs_total_read_time` |  `ClusterName` `ClusterName`, `NodeName`, `InstanceId` `ClusterName`, `NodeName`, `InstanceId` `VolumeId`  | 모든 완료된 읽기 작업에 소요된 총 시간(밀리초)입니다. | 
|  `node_diskio_ebs_total_write_time` |  `ClusterName` `ClusterName`, `NodeName`, `InstanceId` `ClusterName`, `NodeName`, `InstanceId` `VolumeId`  | 모든 완료된 쓰기 작업에 소요된 총 시간(마이크로초)입니다. | 
|  `node_diskio_ebs_volume_performance_exceeded_iops` |  `ClusterName` `ClusterName`, `NodeName`, `InstanceId` `ClusterName`, `NodeName`, `InstanceId` `VolumeId`  | IOPS 수요가 볼륨의 프로비저닝된 IOPS 성능을 초과한 총 시간(마이크로초)입니다. | 
|  `node_diskio_ebs_volume_performance_exceeded_tp` |  `ClusterName` `ClusterName`, `NodeName`, `InstanceId` `ClusterName`, `NodeName`, `InstanceId` `VolumeId`  | 처리량 수요가 볼륨의 프로비저닝된 처리량 성능을 초과한 총 시간(마이크로초)입니다. | 
|  `node_diskio_ebs_ec2_instance_performance_exceeded_iops` |  `ClusterName` `ClusterName`, `NodeName`, `InstanceId` `ClusterName`, `NodeName`, `InstanceId` `VolumeId`  | EBS 볼륨이 연결된 Amazon EC2 인스턴스의 최대 IOPS 성능을 초과한 총 시간(마이크로초)입니다. | 
|  `node_diskio_ebs_ec2_instance_performance_exceeded_tp` |  `ClusterName` `ClusterName`, `NodeName`, `InstanceId` `ClusterName`, `NodeName`, `InstanceId` `VolumeId`  | EBS 볼륨이 연결된 Amazon EC2 인스턴스의 최대 처리량 성능을 초과한 총 시간(마이크로초)입니다. | 
|  `node_diskio_ebs_volume_queue_length` |  `ClusterName` `ClusterName`, `NodeName`, `InstanceId` `ClusterName`, `NodeName`, `InstanceId` `VolumeId`  | 완료되기를 기다리는 읽기 및 쓰기 작업의 수입니다. | 

# Amazon EKS 및 Kubernetes Container Insights 지표
<a name="Container-Insights-metrics-EKS"></a>

아래 표에는 Container Insights가 Amazon EKS 및 쿠버네티스용으로 수집하는 지표 및 측정 기준이 나와 있습니다. 이러한 지표는 `ContainerInsights` 네임스페이스에 있습니다. 자세한 내용은 [Metrics](cloudwatch_concepts.md#Metric) 섹션을 참조하세요.

콘솔에 Container Insights 지표가 보이지 않는 경우, Container Insights 설정을 완료했는지 확인합니다. Container Insights 설정이 완료되기 전에는 지표가 나타나지 않습니다. 자세한 내용은 [Container Insights 설정](deploy-container-insights.md) 섹션을 참조하세요.


| 지표 이름 | 측정 기준 | 설명 | 
| --- | --- | --- | 
|  `cluster_failed_node_count`  |  `ClusterName`  |  클러스터의 실패한 작업자 노드의 숫자입니다. **‘노드 조건’ 문제를 겪고 있는 경우 노드가 실패한 것으로 간주됩니다. 자세한 내용은 Kubernetes 설명서에서 [조건](https://kubernetes.io/docs/concepts/architecture/nodes/#condition)을 참조하세요.  | 
|  `cluster_node_count`  |  `ClusterName`  |  클러스터의 작업자 노드의 총 숫자입니다.  | 
|  `namespace_number_of_running_pods`  |  `Namespace` `ClusterName` `ClusterName`  |  사용 중인 측정기준에서 지정한 리소스의 네임스페이스당 실행 중인 Pod 숫자입니다.  | 
|  `node_cpu_limit`  |  `ClusterName`   |  클러스터에서 단일 노드에 할당할 수 있는 최대 CPU 단위 숫자입니다.  | 
|  `node_cpu_reserved_capacity`  |  `NodeName`, `ClusterName`, `InstanceId` `ClusterName`  |  kubelet, kube-proxy, Docker 등 노드 구성 요소에 예약된 CPU 단위의 비율입니다. 공식: `node_cpu_request / node_cpu_limit`  `node_cpu_request`는 지표로 직접 보고되지는 않지만 성능 로그 이벤트의 필드입니다. 자세한 내용은 [Amazon EKS 및 Kubernetes에 대한 성능 로그 이벤트의 관련 필드](Container-Insights-reference-performance-entries-EKS.md) 섹션을 참조하세요.   | 
|  `node_cpu_usage_total`  |  `ClusterName`  |  클러스터의 노드에서 사용 중인 CPU 단위의 숫자입니다.  | 
|  `node_cpu_utilization`  |  `NodeName`, `ClusterName`, `InstanceId` `ClusterName`  |  클러스터의 노드에서 사용 중인 CPU 단위의 총 백분율입니다. 공식: `node_cpu_usage_total / node_cpu_limit`  | 
|  `node_gpu_limit` |  `ClusterName` `ClusterName`, `InstanceId`, `NodeName`  |  노드에서 사용 가능한 총 GPU 수.  | 
|  `node_gpu_usage_total` |  `ClusterName` `ClusterName`, `InstanceId`, `NodeName`  |  노드에서 실행 중인 포드가 사용하는 GPU 수.  | 
|  `node_gpu_reserved_capacity` |  `ClusterName` `ClusterName`, `InstanceId`, `NodeName`  |  노드에서 현재 예약된 GPU의 백분율. 수식은 `node_gpu_request / node_gpu_limit`입니다.  `node_gpu_request`는 지표로 직접 보고되지는 않지만 성능 로그 이벤트의 필드입니다. 자세한 내용은 [Amazon EKS 및 Kubernetes에 대한 성능 로그 이벤트의 관련 필드](Container-Insights-reference-performance-entries-EKS.md) 섹션을 참조하세요.   | 
|  `node_filesystem_utilization`  |  `NodeName`, `ClusterName`, `InstanceId` `ClusterName`  |  클러스터에서 노드에 사용하는 파일 시스템 용량의 총 백분율입니다. 공식: `node_filesystem_usage / node_filesystem_capacity`  `node_filesystem_usage` 및 `node_filesystem_capacity`는 지표로 직접 보고되지는 않지만 성능 로그 이벤트의 필드입니다. 자세한 내용은 [Amazon EKS 및 Kubernetes에 대한 성능 로그 이벤트의 관련 필드](Container-Insights-reference-performance-entries-EKS.md) 섹션을 참조하세요.   | 
|  `node_memory_limit`  |  `ClusterName`  |  클러스터에서 단일 노드로 할당될 수 있는 최대 메모리의 양(바이트)입니다.  | 
|  `node_memory_reserved_capacity`  |  `NodeName`, `ClusterName`, `InstanceId` `ClusterName`  |  클러스터의 노드에서 현재 사용 중인 메모리의 비율입니다. 공식: `node_memory_request / node_memory_limit`  `node_memory_request`는 지표로 직접 보고되지는 않지만 성능 로그 이벤트의 필드입니다. 자세한 내용은 [Amazon EKS 및 Kubernetes에 대한 성능 로그 이벤트의 관련 필드](Container-Insights-reference-performance-entries-EKS.md) 섹션을 참조하세요.   | 
|  `node_memory_utilization`  |  `NodeName`, `ClusterName`, `InstanceId` `ClusterName`  |  한 개 또는 여러 개의 노드에서 현재 사용 중인 메모리의 비율입니다. 노드 메모리 사용량을 노드 메모리 제한으로 나눈 백분율입니다. 공식: `node_memory_working_set / node_memory_limit`입니다.  | 
|  `node_memory_working_set`  |  `ClusterName`   |  클러스터의 노드 작업 세트에서 사용하는 메모리의 양(바이트)입니다.  | 
|  `node_network_total_bytes`  |  `NodeName`, `ClusterName`, `InstanceId` `ClusterName`  |  클러스터에서 노드당 네트워크를 통해 전송 및 수신된 초당 바이트의 합계 수치입니다. 공식: `node_network_rx_bytes + node_network_tx_bytes`  `node_network_rx_bytes` 및 `node_network_tx_bytes`는 지표로 직접 보고되지는 않지만 성능 로그 이벤트의 필드입니다. 자세한 내용은 [Amazon EKS 및 Kubernetes에 대한 성능 로그 이벤트의 관련 필드](Container-Insights-reference-performance-entries-EKS.md) 섹션을 참조하세요.   | 
|  `node_number_of_running_containers`  |  `NodeName`, `ClusterName`, `InstanceId` `ClusterName`  |  클러스터에서 노드당 실행 중인 컨테이너의 숫자입니다.  | 
|  `node_number_of_running_pods`  |  `NodeName`, `ClusterName`, `InstanceId` `ClusterName`  |  클러스터에서 노드당 실행 중인 Pod 숫자입니다.  | 
|  `pod_cpu_reserved_capacity`  |  `PodName`, `Namespace`, `ClusterName` `ClusterName`  |  클러스터에서 Pod별로 예약된 CPU 용량입니다. 공식: `pod_cpu_request / node_cpu_limit`  `pod_cpu_request`는 지표로 직접 보고되지는 않지만 성능 로그 이벤트의 필드입니다. 자세한 내용은 [Amazon EKS 및 Kubernetes에 대한 성능 로그 이벤트의 관련 필드](Container-Insights-reference-performance-entries-EKS.md) 섹션을 참조하세요.   | 
|  `pod_cpu_utilization`  |  `PodName`, `Namespace`, `ClusterName` `Namespace`, `ClusterName` `Service`, `Namespace`, `ClusterName` `ClusterName`  |  Pod에서 사용 중인 CPU 단위의 비율입니다. 공식: `pod_cpu_usage_total / node_cpu_limit`  | 
|  `pod_cpu_utilization_over_pod_limit`  |  `PodName`, `Namespace`, `ClusterName` `Namespace`, `ClusterName` `Service`, `Namespace`, `ClusterName` `ClusterName`  |  포드 제한을 기준으로 포드에서 사용 중인 CPU 단위의 백분율입니다. 공식: `pod_cpu_usage_total / pod_cpu_limit`  | 
|  `pod_gpu_request` |  `ClusterName` `ClusterName`, `Namespace`, `PodName` `ClusterName`, `FullPodName`, `Namespace`, `PodName`  |  포드에 대한 GPU 요청. 이 값은 항상 `pod_gpu_limit`와 같아야 합니다.  | 
|  `pod_gpu_limit` |  `ClusterName` `ClusterName`, `Namespace`, `PodName` `ClusterName`, `FullPodName`, `Namespace`, `PodName`  |  노드의 포드에 할당할 수 있는 최대 GPU 수.  | 
|  `pod_gpu_usage_total` |  `ClusterName` `ClusterName`, `Namespace`, `PodName` `ClusterName`, `FullPodName`, `Namespace`, `PodName`  |  포드에 할당되는 GPU 수.  | 
|  `pod_gpu_reserved_capacity` |  `ClusterName` `ClusterName`, `Namespace`, `PodName` `ClusterName`, `FullPodName`, `Namespace`, `PodName`  |  포드에 대해 현재 예약된 GPU의 백분율. 수식은 pod\$1gpu\$1request / node\$1gpu\$1reserved\$1capacity입니다.  | 
|  `pod_memory_reserved_capacity`  |  `PodName`, `Namespace`, `ClusterName` `ClusterName`  |  포드에 예약된 메모리의 비율입니다. 공식: `pod_memory_request / node_memory_limit`  `pod_memory_request`는 지표로 직접 보고되지는 않지만 성능 로그 이벤트의 필드입니다. 자세한 내용은 [Amazon EKS 및 Kubernetes에 대한 성능 로그 이벤트의 관련 필드](Container-Insights-reference-performance-entries-EKS.md) 섹션을 참조하세요.   | 
|  `pod_memory_utilization`  |  `PodName`, `Namespace`, `ClusterName` `Namespace`, `ClusterName` `Service`, `Namespace`, `ClusterName` `ClusterName`  |  한 개 또는 여러 개의 Pod에서 현재 사용 중인 메모리의 비율입니다. 공식: `pod_memory_working_set / node_memory_limit`  | 
|  `pod_memory_utilization_over_pod_limit`  |  `PodName`, `Namespace`, `ClusterName` `Namespace`, `ClusterName` `Service`, `Namespace`, `ClusterName` `ClusterName`  |  포드 제한을 기준으로 포드에서 사용 중인 메모리의 백분율입니다. 포드의 컨테이너에 메모리 제한이 정의되지 않은 경우 이 지표는 표시되지 않습니다. 공식: `pod_memory_working_set / pod_memory_limit`  | 
|  `pod_network_rx_bytes`  |  `PodName`, `Namespace`, `ClusterName` `Namespace`, `ClusterName` `Service`, `Namespace`, `ClusterName` `ClusterName`  |  Pod에서 네트워크를 통해 수신 중인 초당 바이트 수입니다. 공식: `sum(pod_interface_network_rx_bytes)`  `pod_interface_network_rx_bytes`는 지표로 직접 보고되지는 않지만 성능 로그 이벤트의 필드입니다. 자세한 내용은 [Amazon EKS 및 Kubernetes에 대한 성능 로그 이벤트의 관련 필드](Container-Insights-reference-performance-entries-EKS.md) 섹션을 참조하세요.   | 
|  `pod_network_tx_bytes`  |  `PodName`, `Namespace`, `ClusterName` `Namespace`, `ClusterName` `Service`, `Namespace`, `ClusterName` `ClusterName`  |  Pod에서 네트워크를 통해 전송 중인 초당 바이트 수입니다. 공식: `sum(pod_interface_network_tx_bytes)`  `pod_interface_network_tx_bytes`는 지표로 직접 보고되지는 않지만 성능 로그 이벤트의 필드입니다. 자세한 내용은 [Amazon EKS 및 Kubernetes에 대한 성능 로그 이벤트의 관련 필드](Container-Insights-reference-performance-entries-EKS.md) 섹션을 참조하세요.   | 
|  `pod_number_of_container_restarts`  |  `PodName`, `Namespace`, `ClusterName`  |  Pod의 컨테이너 재시작 총 횟수입니다.  | 
|  `service_number_of_running_pods`  |  `Service`, `Namespace`, `ClusterName` `ClusterName`  |  클러스터에서 단일 또는 복수의 서비스를 실행하는 Pod의 숫자입니다.  | 

## Kueue 지표
<a name="Container-Insights-metrics-Kueue"></a>

CloudWatch Observability EKS 추가 기능의 `v2.4.0-eksbuild.1` 버전부터는 Container Insights for Amazon EKS는 Amazon EKS 클러스터에서 Kueue 지표를 자동으로 수집합니다. 추가 기능에 대한 자세한 내용은 [Amazon CloudWatch Observability EKS 추가 기능 또는 헬름 차트를 사용하여 CloudWatch 에이전트 설치](install-CloudWatch-Observability-EKS-addon.md) 섹션을 참조하세요.

지표 활성화에 대한 자세한 내용을 보려면 [Kueue 지표 활성화](install-CloudWatch-Observability-EKS-addon.md#enable-Kueue-metrics) 섹션을 참조하여 지표를 활성화합니다.

Kueue 지표 목록은 다음 표에 나와 있습니다. 이러한 지표는 다음 CloudWatch의 `ContainerInsights/Prometheus` 네임스페이스에 게시됩니다. 이러한 지표 중 일부는 다음과 같은 차원을 사용합니다.
+ `ClusterQueue`는 ClusterQueue의 이름입니다.
+ `Status`의 가능한 값은 `active` 및 `inadmissible`입니다.
+ `Reason`의 가능한 값은 `Preempted`, `PodsReadyTimeout`, `AdmissionCheck`, `ClusterQueueStopped`, `InactiveWorkload`입니다.
+ `Flavor`는 참조된 flavor입니다.
+ `Resource`는 `cpu`, `memory`, `gpu` 등과 같은 클러스터 컴퓨터 리소스를 참조합니다.


| 지표 이름 | 측정 기준 | 설명 | 
| --- | --- | --- | 
|  `kueue_pending_workloads` |  `ClusterName`, `ClusterQueue`, `Status` `ClusterName`, `ClusterQueue` `ClusterName`, `Status` `ClusterName`  |  보류 중인 워크로드 수입니다.  | 
|  `kueue_evicted_workloads_total` |  `ClusterName`, `ClusterQueue`, `Reason` `ClusterName`, `ClusterQueue` `ClusterName`, `Reason` `ClusterName`  |  제거된 총 워크로드의 수입니다.  | 
|  `kueue_admitted_active_workloads` |  `ClusterName`, `ClusterQueue` `ClusterName`  |  활성(일시 중지되지 않고 완료되지 않음) 상태인 허용된 워크로드 수입니다.  | 
|  `kueue_cluster_queue_resource_usage` |  `ClusterName`, `ClusterQueue`, `Resource`, `Flavor` `ClusterName`, `ClusterQueue`, `Resource` `ClusterName`, `ClusterQueue`, `Flavor` `ClusterName`, `ClusterQueue` `ClusterName`  |  ClusterQueue의 총 리소스 사용량을 보고합니다.  | 
|  `kueue_cluster_queue_nominal_quota` |  `ClusterName`, `ClusterQueue`, `Resource`, `Flavor` `ClusterName`, `ClusterQueue`, `Resource` `ClusterName`, `ClusterQueue`, `Flavor` `ClusterName`, `ClusterQueue` `ClusterName`  |  ClusterQueue의 리소스 할당량을 보고합니다.  | 

# Container Insights 성능 로그 참조
<a name="Container-Insights-reference"></a>

이 단원에는 Container Insights가 성능 로그 이벤트를 사용하여 지표를 수집하는 방법에 관한 참조 정보가 포함되어 있습니다. 컨테이너 인사이트를 배포하면 성능 로그 이벤트에 대한 로그 그룹이 자동으로 생성됩니다. 이 로그 그룹을 직접 생성할 필요는 없습니다.

**Topics**
+ [Amazon ECS의 Container Insights 성능 로그 이벤트](Container-Insights-reference-performance-logs-ECS.md)
+ [Amazon EKS 및 Kubernetes의 Container Insights 성능 로그 이벤트](Container-Insights-reference-performance-logs-EKS.md)
+ [Amazon EKS 및 Kubernetes에 대한 성능 로그 이벤트의 관련 필드](Container-Insights-reference-performance-entries-EKS.md)

# Amazon ECS의 Container Insights 성능 로그 이벤트
<a name="Container-Insights-reference-performance-logs-ECS"></a>

다음은 Container Insights가 Amazon ECS에서 수집하는 성능 로그 이벤트의 예입니다.

이러한 로그는 CloudWatch Logs의 `/aws/ecs/containerinsights/CLUSTER_NAME/performance`라는 로그 그룹에 있습니다. 해당 로그 그룹 내에서 각 컨테이너 인스턴스에는 `AgentTelemetry-CONTAINER_INSTANCE_ID`라는 로그 스트림이 있습니다.

`{ $.Type = "Container" }`와 같은 쿼리를 사용하여 이러한 로그를 쿼리하면 모든 컨테이너 로그 이벤트를 볼 수 있습니다.

**유형: 컨테이너**

```
{
	"Version":"0",
	"Type":"Container",
	"ContainerName":"sleep",
	"TaskId":"7ac4dfba69214411b4783a3b8189c9ba",
	"TaskDefinitionFamily":"sleep360",
	"TaskDefinitionRevision":"1",
	"ContainerInstanceId":"0d7650e6dec34c1a9200f72098071e8f",
	"EC2InstanceId":"i-0c470579dbcdbd2f3",
	"ClusterName":"MyCluster",
	"Image":"busybox",
	"ContainerKnownStatus":"RUNNING",
	"Timestamp":1623963900000,
	"CpuUtilized":0.0,
	"CpuReserved":10.0,
	"MemoryUtilized":0,
	"MemoryReserved":10,
	"StorageReadBytes":0,
	"StorageWriteBytes":0,
	"NetworkRxBytes":0,
	"NetworkRxDropped":0,
	"NetworkRxErrors":0,
	"NetworkRxPackets":14,
	"NetworkTxBytes":0,
	"NetworkTxDropped":0,
	"NetworkTxErrors":0,
	"NetworkTxPackets":0
}
```

**유형: 작업**

`StorageReadBytes` 및 `StorageWriteBytes`의 단위가 바이트/초인 경우에도 값은 각 스토리지에서의 누적 읽기 및 쓰기 바이트 수를 나타냅니다.

```
{
    "Version": "0",
    "Type": "Task",
    "TaskId": "7ac4dfba69214411b4783a3b8189c9ba",
    "TaskDefinitionFamily": "sleep360",
    "TaskDefinitionRevision": "1",
    "ContainerInstanceId": "0d7650e6dec34c1a9200f72098071e8f",
    "EC2InstanceId": "i-0c470579dbcdbd2f3",
    "ClusterName": "MyCluster",
    "AccountID": "637146863587",
    "Region": "us-west-2",
    "AvailabilityZone": "us-west-2b",
    "KnownStatus": "RUNNING",
    "LaunchType": "EC2",
    "PullStartedAt": 1623963608201,
    "PullStoppedAt": 1623963610065,
    "CreatedAt": 1623963607094,
    "StartedAt": 1623963610382,
    "Timestamp": 1623963900000,
    "CpuUtilized": 0.0,
    "CpuReserved": 10.0,
    "MemoryUtilized": 0,
    "MemoryReserved": 10,
    "StorageReadBytes": 0,
    "StorageWriteBytes": 0,
    "NetworkRxBytes": 0,
    "NetworkRxDropped": 0,
    "NetworkRxErrors": 0,
    "NetworkRxPackets": 14,
    "NetworkTxBytes": 0,
    "NetworkTxDropped": 0,
    "NetworkTxErrors": 0,
    "NetworkTxPackets": 0,
    "EBSFilesystemUtilized": 10,
    "EBSFilesystemSize": 20,
    "CloudWatchMetrics": [
        {
            "Namespace": "ECS/ContainerInsights",
            "Metrics": [
                {
                    "Name": "CpuUtilized",
                    "Unit": "None"
                },
                {
                    "Name": "CpuReserved",
                    "Unit": "None"
                },
                {
                    "Name": "MemoryUtilized",
                    "Unit": "Megabytes"
                },
                {
                    "Name": "MemoryReserved",
                    "Unit": "Megabytes"
                },
                {
                    "Name": "StorageReadBytes",
                    "Unit": "Bytes/Second"
                },
                {
                    "Name": "StorageWriteBytes",
                    "Unit": "Bytes/Second"
                },
                {
                    "Name": "NetworkRxBytes",
                    "Unit": "Bytes/Second"
                },
                {
                    "Name": "NetworkTxBytes",
                    "Unit": "Bytes/Second"
                },
                {
                    "Name": "EBSFilesystemSize",
                    "Unit": "Gigabytes"
                },
                {
                    "Name": "EBSFilesystemUtilzed",
                    "Unit": "Gigabytes"
                }
            ],
            "Dimensions": [
                ["ClusterName"],
                [
                    "ClusterName",
                    "TaskDefinitionFamily"
                ]
            ]
        }
    ]
}
```

**유형: 서비스**

```
{   
    "Version": "0",
    "Type": "Service",
    "ServiceName": "myCIService",
    "ClusterName": "myCICluster",
    "Timestamp": 1561586460000,
    "DesiredTaskCount": 2,
    "RunningTaskCount": 2,
    "PendingTaskCount": 0,
    "DeploymentCount": 1,
    "TaskSetCount": 0,
    "CloudWatchMetrics": [
        {
            "Namespace": "ECS/ContainerInsights",
            "Metrics": [
                {
                    "Name": "DesiredTaskCount",
                    "Unit": "Count"
                },
                {
                    "Name": "RunningTaskCount",
                    "Unit": "Count"
                },
                {
                    "Name": "PendingTaskCount",
                    "Unit": "Count"
                },
                {
                    "Name": "DeploymentCount",
                    "Unit": "Count"
                },
                {
                    "Name": "TaskSetCount",
                    "Unit": "Count"
                }
            ],
            "Dimensions": [
                [
                    "ServiceName",
                    "ClusterName"
                ]
            ]
        }
    ]
}
```

**유형: 볼륨**

```
{
    "Version": "0",
    "Type": "Volume",
    "TaskDefinitionFamily": "myCITaskDef",
    "TaskId": "7ac4dfba69214411b4783a3b8189c9ba",
    "ClusterName": "myCICluster",
    "ServiceName": "myCIService",
    "VolumeId": "vol-1233436545ff708cb",
    "InstanceId": "i-0c470579dbcdbd2f3",
    "LaunchType": "EC2",
    "VolumeName": "MyVolumeName",
    "EBSFilesystemUtilized": 10,
    "EBSFilesystemSize": 20,
    "CloudWatchMetrics": [
        {
            "Namespace": "ECS/ContainerInsights",
            "Metrics": [
                {
                    "Name": "EBSFilesystemSize",
                    "Unit": "Gigabytes"
                },
                {
                    "Name": "EBSFilesystemUtilzed",
                    "Unit": "Gigabytes"
                }
            ],
            "Dimensions": [
                ["ClusterName"],
                [
                    "VolumeName",
                    "TaskDefinitionFamily",
                    "ClusterName"
                ],
                [
                    "ServiceName",
                    "ClusterName"
                ]
            ]
        }
    ]
}
```

**유형: 클러스터**

```
{
    "Version": "0",
    "Type": "Cluster",
    "ClusterName": "myCICluster",
    "Timestamp": 1561587300000,
    "TaskCount": 5,
    "ContainerInstanceCount": 5,
    "ServiceCount": 2,
    "CloudWatchMetrics": [
        {
            "Namespace": "ECS/ContainerInsights",
            "Metrics": [
                {
                    "Name": "TaskCount",
                    "Unit": "Count"
                },
                {
                    "Name": "ContainerInstanceCount",
                    "Unit": "Count"
                },
                {
                    "Name": "ServiceCount",
                    "Unit": "Count"
                }
            ],
            "Dimensions": [
                [
                    "ClusterName"
                ]
            ]
        }
    ]
}
```

# Amazon EKS 및 Kubernetes의 Container Insights 성능 로그 이벤트
<a name="Container-Insights-reference-performance-logs-EKS"></a>

다음은 Container Insights가 Amazon EKS 및 Kubernetes 클러스터에서 수집하는 성능 로그 이벤트의 예입니다.

**유형: 노드**

```
{
  "AutoScalingGroupName": "eksctl-myCICluster-nodegroup-standard-workers-NodeGroup-1174PV2WHZAYU",
  "CloudWatchMetrics": [
    {
      "Metrics": [
        {
          "Unit": "Percent",
          "Name": "node_cpu_utilization"
        },
        {
          "Unit": "Percent",
          "Name": "node_memory_utilization"
        },
        {
          "Unit": "Bytes/Second",
          "Name": "node_network_total_bytes"
        },
        {
          "Unit": "Percent",
          "Name": "node_cpu_reserved_capacity"
        },
        {
          "Unit": "Percent",
          "Name": "node_memory_reserved_capacity"
        },
        {
          "Unit": "Count",
          "Name": "node_number_of_running_pods"
        },
        {
          "Unit": "Count",
          "Name": "node_number_of_running_containers"
        }
      ],
      "Dimensions": [
        [
          "NodeName",
          "InstanceId",
          "ClusterName"
        ]
      ],
      "Namespace": "ContainerInsights"
    },
    {
      "Metrics": [
        {
          "Unit": "Percent",
          "Name": "node_cpu_utilization"
        },
        {
          "Unit": "Percent",
          "Name": "node_memory_utilization"
        },
        {
          "Unit": "Bytes/Second",
          "Name": "node_network_total_bytes"
        },
        {
          "Unit": "Percent",
          "Name": "node_cpu_reserved_capacity"
        },
        {
          "Unit": "Percent",
          "Name": "node_memory_reserved_capacity"
        },
        {
          "Unit": "Count",
          "Name": "node_number_of_running_pods"
        },
        {
          "Unit": "Count",
          "Name": "node_number_of_running_containers"
        },
        {
          "Name": "node_cpu_usage_total"
        },
        {
          "Name": "node_cpu_limit"
        },
        {
          "Unit": "Bytes",
          "Name": "node_memory_working_set"
        },
        {
          "Unit": "Bytes",
          "Name": "node_memory_limit"
        }
      ],
      "Dimensions": [
        [
          "ClusterName"
        ]
      ],
      "Namespace": "ContainerInsights"
    }
  ],
  "ClusterName": "myCICluster",
  "InstanceId": "i-1234567890123456",
  "InstanceType": "t3.xlarge",
  "NodeName": "ip-192-0-2-0.us-west-2.compute.internal",
  "Sources": [
    "cadvisor",
    "/proc",
    "pod",
    "calculated"
  ],
  "Timestamp": "1567096682364",
  "Type": "Node",
  "Version": "0",
  "kubernetes": {
    "host": "ip-192-168-75-26.us-west-2.compute.internal"
  },
  "node_cpu_limit": 4000,
  "node_cpu_request": 1130,
  "node_cpu_reserved_capacity": 28.249999999999996,
  "node_cpu_usage_system": 33.794636630852764,
  "node_cpu_usage_total": 136.47852169244098,
  "node_cpu_usage_user": 71.67075111567326,
  "node_cpu_utilization": 3.4119630423110245,
  "node_memory_cache": 3103297536,
  "node_memory_failcnt": 0,
  "node_memory_hierarchical_pgfault": 0,
  "node_memory_hierarchical_pgmajfault": 0,
  "node_memory_limit": 16624865280,
  "node_memory_mapped_file": 406646784,
  "node_memory_max_usage": 4230746112,
  "node_memory_pgfault": 0,
  "node_memory_pgmajfault": 0,
  "node_memory_request": 1115684864,
  "node_memory_reserved_capacity": 6.7109407818311055,
  "node_memory_rss": 798146560,
  "node_memory_swap": 0,
  "node_memory_usage": 3901444096,
  "node_memory_utilization": 6.601302600149552,
  "node_memory_working_set": 1097457664,
  "node_network_rx_bytes": 35918.392817386324,
  "node_network_rx_dropped": 0,
  "node_network_rx_errors": 0,
  "node_network_rx_packets": 157.67565245448117,
  "node_network_total_bytes": 68264.20276554905,
  "node_network_tx_bytes": 32345.80994816272,
  "node_network_tx_dropped": 0,
  "node_network_tx_errors": 0,
  "node_network_tx_packets": 154.21455923431654,
  "node_number_of_running_containers": 16,
  "node_number_of_running_pods": 13
}
```

**유형: NodeFS**

```
{
  "AutoScalingGroupName": "eksctl-myCICluster-nodegroup-standard-workers-NodeGroup-1174PV2WHZAYU",
  "CloudWatchMetrics": [
    {
      "Metrics": [
        {
          "Unit": "Percent",
          "Name": "node_filesystem_utilization"
        }
      ],
      "Dimensions": [
        [
          "NodeName",
          "InstanceId",
          "ClusterName"
        ],
        [
          "ClusterName"
        ]
      ],
      "Namespace": "ContainerInsights"
    }
  ],
  "ClusterName": "myCICluster",
  "EBSVolumeId": "aws://us-west-2b/vol-0a53108976d4a2fda",
  "InstanceId": "i-1234567890123456",
  "InstanceType": "t3.xlarge",
  "NodeName": "ip-192-0-2-0.us-west-2.compute.internal",
  "Sources": [
    "cadvisor",
    "calculated"
  ],
  "Timestamp": "1567097939726",
  "Type": "NodeFS",
  "Version": "0",
  "device": "/dev/nvme0n1p1",
  "fstype": "vfs",
  "kubernetes": {
    "host": "ip-192-168-75-26.us-west-2.compute.internal"
  },
  "node_filesystem_available": 17298395136,
  "node_filesystem_capacity": 21462233088,
  "node_filesystem_inodes": 10484720,
  "node_filesystem_inodes_free": 10367158,
  "node_filesystem_usage": 4163837952,
  "node_filesystem_utilization": 19.400767547940255
}
```

**유형: NodeDiskIO**

```
{
  "AutoScalingGroupName": "eksctl-myCICluster-nodegroup-standard-workers-NodeGroup-1174PV2WHZAYU",
  "ClusterName": "myCICluster",
  "EBSVolumeId": "aws://us-west-2b/vol-0a53108976d4a2fda",
  "InstanceId": "i-1234567890123456",
  "InstanceType": "t3.xlarge",
  "NodeName": "ip-192-0-2-0.us-west-2.compute.internal",
  "Sources": [
    "cadvisor"
  ],
  "Timestamp": "1567096928131",
  "Type": "NodeDiskIO",
  "Version": "0",
  "device": "/dev/nvme0n1",
  "kubernetes": {
    "host": "ip-192-168-75-26.us-west-2.compute.internal"
  },
  "node_diskio_io_service_bytes_async": 9750.505814277016,
  "node_diskio_io_service_bytes_read": 0,
  "node_diskio_io_service_bytes_sync": 230.6174506688036,
  "node_diskio_io_service_bytes_total": 9981.123264945818,
  "node_diskio_io_service_bytes_write": 9981.123264945818,
  "node_diskio_io_serviced_async": 1.153087253344018,
  "node_diskio_io_serviced_read": 0,
  "node_diskio_io_serviced_sync": 0.03603397666700056,
  "node_diskio_io_serviced_total": 1.1891212300110185,
  "node_diskio_io_serviced_write": 1.1891212300110185
}
```

**유형: NodeNet**

```
{
  "AutoScalingGroupName": "eksctl-myCICluster-nodegroup-standard-workers-NodeGroup-1174PV2WHZAYU",
  "ClusterName": "myCICluster",
  "InstanceId": "i-1234567890123456",
  "InstanceType": "t3.xlarge",
  "NodeName": "ip-192-0-2-0.us-west-2.compute.internal",
  "Sources": [
    "cadvisor",
    "calculated"
  ],
  "Timestamp": "1567096928131",
  "Type": "NodeNet",
  "Version": "0",
  "interface": "eni972f6bfa9a0",
  "kubernetes": {
    "host": "ip-192-168-75-26.us-west-2.compute.internal"
  },
  "node_interface_network_rx_bytes": 3163.008420864309,
  "node_interface_network_rx_dropped": 0,
  "node_interface_network_rx_errors": 0,
  "node_interface_network_rx_packets": 16.575629266820258,
  "node_interface_network_total_bytes": 3518.3935157426017,
  "node_interface_network_tx_bytes": 355.385094878293,
  "node_interface_network_tx_dropped": 0,
  "node_interface_network_tx_errors": 0,
  "node_interface_network_tx_packets": 3.9997714100370625
}
```

**유형: Pod**

```
{
  "AutoScalingGroupName": "eksctl-myCICluster-nodegroup-standard-workers-NodeGroup-1174PV2WHZAYU",
  "CloudWatchMetrics": [
    {
      "Metrics": [
        {
          "Unit": "Percent",
          "Name": "pod_cpu_utilization"
        },
        {
          "Unit": "Percent",
          "Name": "pod_memory_utilization"
        },
        {
          "Unit": "Bytes/Second",
          "Name": "pod_network_rx_bytes"
        },
        {
          "Unit": "Bytes/Second",
          "Name": "pod_network_tx_bytes"
        },
        {
          "Unit": "Percent",
          "Name": "pod_cpu_utilization_over_pod_limit"
        },
        {
          "Unit": "Percent",
          "Name": "pod_memory_utilization_over_pod_limit"
        }
      ],
      "Dimensions": [
        [
          "PodName",
          "Namespace",
          "ClusterName"
        ],
        [
          "Service",
          "Namespace",
          "ClusterName"
        ],
        [
          "Namespace",
          "ClusterName"
        ],
        [
          "ClusterName"
        ]
      ],
      "Namespace": "ContainerInsights"
    },
    {
      "Metrics": [
        {
          "Unit": "Percent",
          "Name": "pod_cpu_reserved_capacity"
        },
        {
          "Unit": "Percent",
          "Name": "pod_memory_reserved_capacity"
        }
      ],
      "Dimensions": [
        [
          "PodName",
          "Namespace",
          "ClusterName"
        ],
        [
          "ClusterName"
        ]
      ],
      "Namespace": "ContainerInsights"
    },
    {
      "Metrics": [
        {
          "Unit": "Count",
          "Name": "pod_number_of_container_restarts"
        }
      ],
      "Dimensions": [
        [
          "PodName",
          "Namespace",
          "ClusterName"
        ]
      ],
      "Namespace": "ContainerInsights"
    }
  ],
  "ClusterName": "myCICluster",
  "InstanceId": "i-1234567890123456",
  "InstanceType": "t3.xlarge",
  "Namespace": "amazon-cloudwatch",
  "NodeName": "ip-192-0-2-0.us-west-2.compute.internal",
  "PodName": "cloudwatch-agent-statsd",
  "Service": "cloudwatch-agent-statsd",
  "Sources": [
    "cadvisor",
    "pod",
    "calculated"
  ],
  "Timestamp": "1567097351092",
  "Type": "Pod",
  "Version": "0",
  "kubernetes": {
    "host": "ip-192-168-75-26.us-west-2.compute.internal",
    "labels": {
      "app": "cloudwatch-agent-statsd",
      "pod-template-hash": "df44f855f"
    },
    "namespace_name": "amazon-cloudwatch",
    "pod_id": "2f4ff5ac-c813-11e9-a31d-06e9dde32928",
    "pod_name": "cloudwatch-agent-statsd-df44f855f-ts4q2",
    "pod_owners": [
      {
        "owner_kind": "Deployment",
        "owner_name": "cloudwatch-agent-statsd"
      }
    ],
    "service_name": "cloudwatch-agent-statsd"
  },
  "pod_cpu_limit": 200,
  "pod_cpu_request": 200,
  "pod_cpu_reserved_capacity": 5,
  "pod_cpu_usage_system": 1.4504841104992765,
  "pod_cpu_usage_total": 5.817016867430125,
  "pod_cpu_usage_user": 1.1281543081661038,
  "pod_cpu_utilization": 0.14542542168575312,
  "pod_cpu_utilization_over_pod_limit": 2.9085084337150624,
  "pod_memory_cache": 8192,
  "pod_memory_failcnt": 0,
  "pod_memory_hierarchical_pgfault": 0,
  "pod_memory_hierarchical_pgmajfault": 0,
  "pod_memory_limit": 104857600,
  "pod_memory_mapped_file": 0,
  "pod_memory_max_usage": 25268224,
  "pod_memory_pgfault": 0,
  "pod_memory_pgmajfault": 0,
  "pod_memory_request": 104857600,
  "pod_memory_reserved_capacity": 0.6307275170893897,
  "pod_memory_rss": 22777856,
  "pod_memory_swap": 0,
  "pod_memory_usage": 25141248,
  "pod_memory_utilization": 0.10988455961791709,
  "pod_memory_utilization_over_pod_limit": 17.421875,
  "pod_memory_working_set": 18268160,
  "pod_network_rx_bytes": 9880.697124714186,
  "pod_network_rx_dropped": 0,
  "pod_network_rx_errors": 0,
  "pod_network_rx_packets": 107.80005532263283,
  "pod_network_total_bytes": 10158.829201483635,
  "pod_network_tx_bytes": 278.13207676944796,
  "pod_network_tx_dropped": 0,
  "pod_network_tx_errors": 0,
  "pod_network_tx_packets": 1.146027574644318,
  "pod_number_of_container_restarts": 0,
  "pod_number_of_containers": 1,
  "pod_number_of_running_containers": 1,
  "pod_status": "Running"
}
```

**유형: PodNet**

```
{
  "AutoScalingGroupName": "eksctl-myCICluster-nodegroup-standard-workers-NodeGroup-1174PV2WHZAYU",
  "ClusterName": "myCICluster",
  "InstanceId": "i-1234567890123456",
  "InstanceType": "t3.xlarge",
  "Namespace": "amazon-cloudwatch",
  "NodeName": "ip-192-0-2-0.us-west-2.compute.internal",
  "PodName": "cloudwatch-agent-statsd",
  "Service": "cloudwatch-agent-statsd",
  "Sources": [
    "cadvisor",
    "calculated"
  ],
  "Timestamp": "1567097351092",
  "Type": "PodNet",
  "Version": "0",
  "interface": "eth0",
  "kubernetes": {
    "host": "ip-192-168-75-26.us-west-2.compute.internal",
    "labels": {
      "app": "cloudwatch-agent-statsd",
      "pod-template-hash": "df44f855f"
    },
    "namespace_name": "amazon-cloudwatch",
    "pod_id": "2f4ff5ac-c813-11e9-a31d-06e9dde32928",
    "pod_name": "cloudwatch-agent-statsd-df44f855f-ts4q2",
    "pod_owners": [
      {
        "owner_kind": "Deployment",
        "owner_name": "cloudwatch-agent-statsd"
      }
    ],
    "service_name": "cloudwatch-agent-statsd"
  },
  "pod_interface_network_rx_bytes": 9880.697124714186,
  "pod_interface_network_rx_dropped": 0,
  "pod_interface_network_rx_errors": 0,
  "pod_interface_network_rx_packets": 107.80005532263283,
  "pod_interface_network_total_bytes": 10158.829201483635,
  "pod_interface_network_tx_bytes": 278.13207676944796,
  "pod_interface_network_tx_dropped": 0,
  "pod_interface_network_tx_errors": 0,
  "pod_interface_network_tx_packets": 1.146027574644318
}
```

**유형: 컨테이너**

```
{
  "AutoScalingGroupName": "eksctl-myCICluster-nodegroup-standard-workers-NodeGroup-sample",
  "ClusterName": "myCICluster",
  "InstanceId": "i-1234567890123456",
  "InstanceType": "t3.xlarge",
  "Namespace": "amazon-cloudwatch",
  "NodeName": "ip-192-0-2-0.us-west-2.compute.internal",
  "PodName": "cloudwatch-agent-statsd",
  "Service": "cloudwatch-agent-statsd",
  "Sources": [
    "cadvisor",
    "pod",
    "calculated"
  ],
  "Timestamp": "1567097399912",
  "Type": "Container",
  "Version": "0",
  "container_cpu_limit": 200,
  "container_cpu_request": 200,
  "container_cpu_usage_system": 1.87958283771964,
  "container_cpu_usage_total": 6.159993652997942,
  "container_cpu_usage_user": 1.6707403001952357,
  "container_cpu_utilization": 0.15399984132494854,
  "container_memory_cache": 8192,
  "container_memory_failcnt": 0,
  "container_memory_hierarchical_pgfault": 0,
  "container_memory_hierarchical_pgmajfault": 0,
  "container_memory_limit": 104857600,
  "container_memory_mapped_file": 0,
  "container_memory_max_usage": 24580096,
  "container_memory_pgfault": 0,
  "container_memory_pgmajfault": 0,
  "container_memory_request": 104857600,
  "container_memory_rss": 22736896,
  "container_memory_swap": 0,
  "container_memory_usage": 24453120,
  "container_memory_utilization": 0.10574541028701798,
  "container_memory_working_set": 17580032,
  "container_status": "Running",
  "kubernetes": {
    "container_name": "cloudwatch-agent",
    "docker": {
      "container_id": "8967b6b37da239dfad197c9fdea3e5dfd35a8a759ec86e2e4c3f7b401e232706"
    },
    "host": "ip-192-168-75-26.us-west-2.compute.internal",
    "labels": {
      "app": "cloudwatch-agent-statsd",
      "pod-template-hash": "df44f855f"
    },
    "namespace_name": "amazon-cloudwatch",
    "pod_id": "2f4ff5ac-c813-11e9-a31d-06e9dde32928",
    "pod_name": "cloudwatch-agent-statsd-df44f855f-ts4q2",
    "pod_owners": [
      {
        "owner_kind": "Deployment",
        "owner_name": "cloudwatch-agent-statsd"
      }
    ],
    "service_name": "cloudwatch-agent-statsd"
  },
  "number_of_container_restarts": 0
}
```

**유형: ContainerFS**

```
{
  "AutoScalingGroupName": "eksctl-myCICluster-nodegroup-standard-workers-NodeGroup-1174PV2WHZAYU",
  "ClusterName": "myCICluster",
  "EBSVolumeId": "aws://us-west-2b/vol-0a53108976d4a2fda",
  "InstanceId": "i-1234567890123456",
  "InstanceType": "t3.xlarge",
  "Namespace": "amazon-cloudwatch",
  "NodeName": "ip-192-0-2-0.us-west-2.compute.internal",
  "PodName": "cloudwatch-agent-statsd",
  "Service": "cloudwatch-agent-statsd",
  "Sources": [
    "cadvisor",
    "calculated"
  ],
  "Timestamp": "1567097399912",
  "Type": "ContainerFS",
  "Version": "0",

  "device": "/dev/nvme0n1p1",
  "fstype": "vfs",
  "kubernetes": {
    "container_name": "cloudwatch-agent",
    "docker": {
      "container_id": "8967b6b37da239dfad197c9fdea3e5dfd35a8a759ec86e2e4c3f7b401e232706"
    },
    "host": "ip-192-168-75-26.us-west-2.compute.internal",
    "labels": {
      "app": "cloudwatch-agent-statsd",
      "pod-template-hash": "df44f855f"
    },
    "namespace_name": "amazon-cloudwatch",
    "pod_id": "2f4ff5ac-c813-11e9-a31d-06e9dde32928",
    "pod_name": "cloudwatch-agent-statsd-df44f855f-ts4q2",
    "pod_owners": [
      {
        "owner_kind": "Deployment",
        "owner_name": "cloudwatch-agent-statsd"
      }
    ],
    "service_name": "cloudwatch-agent-statsd"
  }
}
```

**유형: 클러스터**

```
{
  "CloudWatchMetrics": [
    {
      "Metrics": [
        {
          "Unit": "Count",
          "Name": "cluster_node_count"
        },
        {
          "Unit": "Count",
          "Name": "cluster_failed_node_count"
        }
      ],
      "Dimensions": [
        [
          "ClusterName"
        ]
      ],
      "Namespace": "ContainerInsights"
    }
  ],
  "ClusterName": "myCICluster",
  "Sources": [
    "apiserver"
  ],
  "Timestamp": "1567097534160",
  "Type": "Cluster",
  "Version": "0",
  "cluster_failed_node_count": 0,
  "cluster_node_count": 3
}
```

**유형: ClusterService**

```
{
  "CloudWatchMetrics": [
    {
      "Metrics": [
        {
          "Unit": "Count",
          "Name": "service_number_of_running_pods"
        }
      ],
      "Dimensions": [
        [
          "Service",
          "Namespace",
          "ClusterName"
        ],
        [
          "ClusterName"
        ]
      ],
      "Namespace": "ContainerInsights"
    }
  ],
  "ClusterName": "myCICluster",
  "Namespace": "amazon-cloudwatch",
  "Service": "cloudwatch-agent-statsd",
  "Sources": [
    "apiserver"
  ],
  "Timestamp": "1567097534160",
  "Type": "ClusterService",
  "Version": "0",
  "kubernetes": {
    "namespace_name": "amazon-cloudwatch",
    "service_name": "cloudwatch-agent-statsd"
  },
  "service_number_of_running_pods": 1
}
```

**유형: ClusterNamespace**

```
{
  "CloudWatchMetrics": [
    {
      "Metrics": [
        {
          "Unit": "Count",
          "Name": "namespace_number_of_running_pods"
        }
      ],
      "Dimensions": [
        [
          "Namespace",
          "ClusterName"
        ],
        [
          "ClusterName"
        ]
      ],
      "Namespace": "ContainerInsights"
    }
  ],
  "ClusterName": "myCICluster",
  "Namespace": "amazon-cloudwatch",
  "Sources": [
    "apiserver"
  ],
  "Timestamp": "1567097594160",
  "Type": "ClusterNamespace",
  "Version": "0",
  "kubernetes": {
    "namespace_name": "amazon-cloudwatch"
  },
  "namespace_number_of_running_pods": 7
}
```

# Amazon EKS 및 Kubernetes에 대한 성능 로그 이벤트의 관련 필드
<a name="Container-Insights-reference-performance-entries-EKS"></a>

Amazon EKS 및 Kubernetes의 경우 컨테이너화된 CloudWatch 에이전트가 데이터를 성능 로그 이벤트로 내보냅니다. 이를 통해 CloudWatch는 카디널리티가 높은 데이터를 수집하고 저장할 수 있습니다. CloudWatch는 성능 로그 이벤트의 데이터를 사용하여 세분화된 세부 정보를 잃지 않고도 클러스터, 노드 및 포드 수준에서 집계된 CloudWatch 지표를 생성합니다.

다음 표에는 이러한 성능 로그 이벤트에서 Container Insights 지표 데이터의 수집과 관련된 필드가 나와 있습니다. CloudWatch Logs Insights를 사용해 이러한 필드 중 어떤 것에 대해서든 쿼리를 수행하여 데이터를 수집하거나 문제를 조사할 수 있습니다. 자세한 내용은 [CloudWatch Logs Insights를 사용한 로그 데이터 분석](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AnalyzingLogData.html) 단원을 참조하세요.


| Type | 로그 필드 | 소스 | 공식 또는 참고 | 
| --- | --- | --- | --- | 
|  포드 |  `pod_cpu_utilization`  |  계산 완료  |  공식: `pod_cpu_usage_total / node_cpu_limit`  | 
|  포드 |  `pod_cpu_usage_total` `pod_cpu_usage_total`는 밀리코어 단위로 보고됩니다.  |  cadvisor  |   | 
|  포드 |  `pod_cpu_limit`  |  계산 완료  |  공식: `sum(container_cpu_limit)`  `sum(container_cpu_limit)`에는 이미 완료된 포드가 포함되어 있습니다. Pod의 어떤 컨테이너에도 CPU 한도가 정의되어 있지 않은 경우에는 로그 이벤트에 이 필드가 나타나지 않습니다. 여기에는 [ init 컨테이너](https://kubernetes.io/docs/concepts/workloads/pods/init-containers/#resources)가 포함되어 있습니다.  | 
|  포드 |  `pod_cpu_request`  |  계산 완료  |  공식: `sum(container_cpu_request)` `container_cpu_request`이 설정되어 있지 않을 수도 있습니다. 설정된 것만 합계에 포함됩니다.  | 
|  포드 |  `pod_cpu_utilization_over_pod_limit`  |  계산 완료  |  공식: `pod_cpu_usage_total / pod_cpu_limit`  | 
|  포드 |  `pod_cpu_reserved_capacity`  |  계산 완료  |  공식: `pod_cpu_request / node_cpu_limit`  | 
|  포드 |  `pod_memory_utilization`  |  계산 완료  |  공식: `pod_memory_working_set / node_memory_limit` 노드 메모리 제한에 대한 포드 메모리 사용량의 백분율입니다.  | 
|  포드 |  `pod_memory_working_set`  |  cadvisor  |   | 
|  포드 |  `pod_memory_limit`  |  계산 완료  |  공식: `sum(container_memory_limit)` Pod의 어떤 컨테이너에도 메모리 한도가 정의되어 있지 않은 경우에는 로그 이벤트에 이 필드가 나타나지 않습니다. 여기에는 [ init 컨테이너](https://kubernetes.io/docs/concepts/workloads/pods/init-containers/#resources)가 포함되어 있습니다.  | 
|  포드 |  `pod_memory_request`  |  계산 완료  |  공식: `sum(container_memory_request)` `container_memory_request`이 설정되어 있지 않을 수도 있습니다. 설정된 것만 합계에 포함됩니다.  | 
|  포드 |  `pod_memory_utilization_over_pod_limit`  |  계산 완료  |  공식: `pod_memory_working_set / pod_memory_limit` Pod의 어떤 컨테이너에도 메모리 한도가 정의되어 있지 않은 경우에는 로그 이벤트에 이 필드가 나타나지 않습니다. 여기에는 [ init 컨테이너](https://kubernetes.io/docs/concepts/workloads/pods/init-containers/#resources)가 포함되어 있습니다.  | 
|  포드 |  `pod_memory_reserved_capacity`  |  계산 완료  |  공식: `pod_memory_request / node_memory_limit`  | 
|  포드 |  `pod_network_tx_bytes`  |  계산 완료  |  공식: `sum(pod_interface_network_tx_bytes)` 이 데이터는 Pod별로 모든 네트워크 인스턴스에서 사용할 수 있습니다. CloudWatch 에이전트는 합계를 계산하고 지표 추출 규칙을 추가합니다.  | 
|  포드 |  `pod_network_rx_bytes`  |  계산 완료  |  공식: `sum(pod_interface_network_rx_bytes)`  | 
|  포드 |  `pod_network_total_bytes`  |  계산 완료  |  공식: `pod_network_rx_bytes + pod_network_tx_bytes`  | 
|  PodNet |  `pod_interface_network_rx_bytes`  |  cadvisor  | 이 데이터는 Pod 네트워크 인터페이스에 대한 초당 네트워크 rx 바이트입니다.  | 
|  PodNet |  `pod_interface_network_tx_bytes`  |  cadvisor  | 이 데이터는 Pod 네트워크 인터페이스에 대한 초당 네트워크 tx 바이트입니다. | 
|  컨테이너 |  `container_cpu_usage_total`  |  cadvisor  |   | 
|  컨테이너 |  `container_cpu_limit`  |  cadvisor  |  설정되어 있지 않을 수도 있습니다. 설정이 되지 않은 경우에는 표시되지 않습니다. | 
|  컨테이너 |  `container_cpu_request`  |  cadvisor  |  설정되어 있지 않을 수도 있습니다. 설정이 되지 않은 경우에는 표시되지 않습니다. | 
|  컨테이너 |  `container_memory_working_set`  |  cadvisor  |   | 
|  컨테이너 |  `container_memory_limit`  |  pod  |  설정되어 있지 않을 수도 있습니다. 설정이 되지 않은 경우에는 표시되지 않습니다. | 
|  컨테이너 |  `container_memory_request`  |  pod  |  설정되어 있지 않을 수도 있습니다. 설정이 되지 않은 경우에는 표시되지 않습니다. | 
|  노드 |  `node_cpu_utilization`  |  계산 완료  |  공식: `node_cpu_usage_total / node_cpu_limit`  | 
|  노드 |  `node_cpu_usage_total`  |  cadvisor  |   | 
|  노드 |  `node_cpu_limit`  |  /proc  |   | 
|  노드 |  `node_cpu_request`  |  계산 완료  | 공식: `sum(pod_cpu_request)` cronjobs의 경우 `node_cpu_request`에는 완성된 포드의 요청이 포함되어 있습니다. 이로 인해 `node_cpu_reserved_capacity`의 값이 높아질 수 있습니다.  | 
|  노드 |  `node_cpu_reserved_capacity`  |  계산 완료  | 공식: `node_cpu_request / node_cpu_limit`  | 
|  노드 |  `node_memory_utilization`  |  계산 완료  | 공식: `node_memory_working_set / node_memory_limit`  | 
|  노드 |  `node_memory_working_set`  |  cadvisor  |   | 
|  노드 |  `node_memory_limit`  |  /proc  |   | 
|  노드 |  `node_memory_request`  |  계산 완료  |  공식: `sum(pod_memory_request)`  | 
|  노드 |  `node_memory_reserved_capacity`  |  계산 완료  | 공식: `node_memory_request / node_memory_limit`  | 
|  노드 |  `node_network_rx_bytes`  |  계산 완료  | 공식: `sum(node_interface_network_rx_bytes)`  | 
|  노드 |  `node_network_tx_bytes`  |  계산 완료  | 공식: `sum(node_interface_network_tx_bytes)`  | 
|  노드 |  `node_network_total_bytes`  |  계산 완료  | 공식: `node_network_rx_bytes + node_network_tx_bytes`  | 
|  노드 |  `node_number_of_running_pods`  |  Pod 목록  |   | 
|  노드 |  `node_number_of_running_containers`  |  Pod 목록  |   | 
|  NodeNet |  `node_interface_network_rx_bytes`  |  cadvisor  |  이 데이터는 작업자 노드 네트워크 인터페이스에 대한 초당 네트워크 rx 바이트입니다.  | 
|  NodeNet |  `node_interface_network_tx_bytes`  |  cadvisor  |  이 데이터는 작업자 노드 네트워크 인터페이스에 대한 초당 네트워크 tx 바이트입니다.  | 
|  NodeFS |  `node_filesystem_capacity`  |  cadvisor  |   | 
|  NodeFS |  `node_filesystem_usage`  |  cadvisor  |   | 
|  NodeFS |  `node_filesystem_utilization`  |  계산 완료  |  공식: `node_filesystem_usage / node_filesystem_capacity` 이 데이터는 디스크 이름별로 사용할 수 있습니다.  | 
|  클러스터 |  `cluster_failed_node_count`  |  API 서버  |   | 
|  클러스터 |  `cluster_node_count`  |  API 서버  |   | 
|  서비스 |  `service_number_of_running_pods`  |  API 서버  |   | 
|  `Namespace` |  `namespace_number_of_running_pods`  |  API 서버  |   | 

## 지표 계산 예
<a name="Container-Insights-calculation-examples"></a>

이 섹션에는 앞의 표에서 몇몇 값들이 어떻게 계산되었는지를 보여주는 예제가 포함되어 있습니다.

클러스터가 다음 상태에 있다고 가정해 보겠습니다.

```
Node1
   node_cpu_limit = 4
   node_cpu_usage_total = 3
   
   Pod1
     pod_cpu_usage_total = 2
     
     Container1
        container_cpu_limit = 1
        container_cpu_request = 1
        container_cpu_usage_total = 0.8
        
     Container2
        container_cpu_limit = null
        container_cpu_request = null
        container_cpu_usage_total = 1.2
        
   Pod2
     pod_cpu_usage_total = 0.4
     
     Container3
        container_cpu_limit = 1
        container_cpu_request = 0.5
        container_cpu_usage_total = 0.4
        
Node2
   node_cpu_limit = 8
   node_cpu_usage_total = 1.5
   
   Pod3
     pod_cpu_usage_total = 1
     
     Container4
        container_cpu_limit = 2
        container_cpu_request = 2
        container_cpu_usage_total = 1
```

다음 표에는 이 데이터를 사용하여 Pod CPU 지표를 계산하는 방법이 나와 있습니다.


| 지표 | 공식 | Pod1 | Pod2 | Pod3 | 
| --- | --- | --- | --- | --- | 
|  `pod_cpu_utilization` |  `pod_cpu_usage_total / node_cpu_limit`  |  2 / 4 = 50%  |  0.4 / 4 = 10%  |  1 / 8 = 12.5%  | 
|  `pod_cpu_utilization_over_pod_limit` |  `pod_cpu_usage_total / sum(container_cpu_limit)`  |  `Container2`에 대한 CPU 한도가 정의되어 있지 않기 때문에 해당 사항 없음  |  0.4 / 1 = 40%  |  1 / 2 = 50%  | 
|  `pod_cpu_reserved_capacity` |  `sum(container_cpu_request) / node_cpu_limit`  |  (1 \$1 0) / 4 = 25%  |  0.5 / 4 = 12.5%  |  2 / 8 = 25%  | 

다음 표에는 이 데이터를 사용하여 노드 CPU 지표를 계산하는 방법이 나와 있습니다.


| 지표 | 공식 | 노드 1 | 노드 2 | 
| --- | --- | --- | --- | 
|  `node_cpu_utilization` |  `node_cpu_usage_total / node_cpu_limit`  |  3 / 4 = 75%  |  1.5 / 8 = 18.75%  | 
|  `node_cpu_reserved_capacity` |  `sum(pod_cpu_request) / node_cpu_limit`  |  1.5 / 4 = 37.5%  |  2 / 8 = 25%  | 

# Container Insights Prometheus 지표 모니터링
<a name="ContainerInsights-Prometheus"></a>

Prometheus에 대한 CloudWatch Container Insights 모니터링은 컨테이너화된 시스템 및 워크로드에서 Prometheus 지표 검색을 자동화합니다. Prometheus는 오픈 소스 시스템 모니터링 및 알림 도구 키트입니다. 자세한 내용은 Prometheus 설명서의 [Prometheus란 무엇입니까?](https://prometheus.io/docs/introduction/overview/)를 참조하세요..

Prometheus 지표 검색은 Amazon EC2 인스턴스에서 실행되는 [Amazon Elastic Container Service](https://aws.amazon.com/ecs/), [Amazon Elastic Kubernetes Service](https://aws.amazon.com/eks/) 및 [Kubernetes](https://aws.amazon.com/kubernetes/) 클러스터에 대해 지원됩니다. Prometheus 카운터, 게이지 및 요약 지표 유형이 수집됩니다.

Amazon ECS 및 Amazon EKS 클러스터의 경우 EC2 및 Fargate 시작 유형이 모두 지원됩니다. Container Insights는 여러 워크로드에서 지표를 자동으로 수집합니다. 어느 워크로드에서든 지표를 수집하도록 Container Insights를 구성할 수 있습니다.

Prometheus를 오픈 소스 및 개방형 표준 방법으로 채택하여 CloudWatch에서 사용자 지정 지표를 수집할 수 있습니다. Prometheus가 지원되는 CloudWatch 에이전트는 Prometheus 지표를 검색 및 수집하여 애플리케이션 성능 저하 및 장애에 대한 모니터링, 문제 해결 및 경보를 더 빠르게 수행합니다. 이를 통해 관측 기능을 향상시키는 데 필요한 모니터링 도구의 수도 줄어듭니다.

Container Insight Prometheus 지원에는 수집, 저장 및 분석을 포함한 지표 및 로그의 종량제가 포함됩니다. 자세한 내용은 [Amazon CloudWatch 요금](https://aws.amazon.com/cloudwatch/pricing/)을 참조하세요.

**일부 워크로드에 대해 사전 구축된 대시보드**

Container Insights Prometheus 솔루션에는 이 단원에 나열된 인기 있는 워크로드에 대해 사전 구축된 대시보드가 ​​포함되어 있습니다. 이러한 워크로드에 대한 샘플 구성은 [(선택 사항) Prometheus 지표 테스트를 위한 컨테이너화된 Amazon ECS 워크로드 샘플 설정](ContainerInsights-Prometheus-Sample-Workloads-ECS.md) 및 [(선택 사항) Prometheus 지표 테스트를 위한 컨테이너화된 Amazon EKS 워크로드 샘플 설정](ContainerInsights-Prometheus-Sample-Workloads.md) 단원을 참조하세요.

또한 에이전트 구성 파일을 편집하여 다른 컨테이너화된 서비스 및 애플리케이션에서 Prometheus 지표를 수집하도록 Container Insights를 구성할 수도 있습니다.

Amazon EC2 인스턴스에서 실행되는 Amazon EKS 클러스터 및 Kubernetes 클러스터용으로 사전 구축된 대시보드가 ​​있는 워크로드:
+ AWS App Mesh
+ NGINX
+ Memcached
+ Java/JMX
+ HAProxy

Amazon ECS 클러스터용으로 사전 구축된 대시보드가 ​​있는 워크로드:
+ AWS App Mesh
+ Java/JMX
+ NGINX
+ NGINX Plus

# Amazon ECS 클러스터에서 Prometheus 지표 수집 설정 및 구성
<a name="ContainerInsights-Prometheus-Setup-ECS"></a>

Amazon ECS 클러스터에서 Prometheus 지표를 수집하려면 CloudWatch 에이전트를 수집기로 사용하거나 AWS Distro for OpenTelemetry Collector를 사용하면 됩니다. AWS Distro for OpenTelemetry Collector 사용에 대한 자세한 내용은 [https://aws-otel.github.io/docs/getting-started/container-insights/ecs-prometheus](https://aws-otel.github.io/docs/getting-started/container-insights/ecs-prometheus)를 참조하세요.

다음 단원에서는 CloudWatch 에이전트를 수집기로 사용하여 Prometheus 지표를 검색하는 방법을 설명합니다. Amazon ECS를 실행 중인 클러스터에 Prometheus 모니터링이 포함된 CloudWatch 에이전트를 설치하고, 선택적으로 추가 대상을 스크레이프하도록 에이전트를 구성할 수 있습니다. 또한 이 단원에서는 Prometheus 모니터링을 통해 테스트하는 데 사용할 샘플 워크로드를 설정하기 위한 선택적 튜토리얼도 제공합니다.

Amazon ECS의 Container Insights는 Prometheus 지표에 대한 다음 시작 유형 및 네트워크 모드 조합을 지원합니다.


| Amazon ECS 시작 유형 | 지원되는 네트워크 모드 | 
| --- | --- | 
|  EC2(Linux)  |  브리지, 호스트, awsvpc  | 
|  Fargate  |  awsvpc  | 

**VPC 보안 그룹 요구 사항**

Prometheus 워크로드의 보안 그룹 수신 규칙은 프라이빗 IP로 Prometheus 지표를 스크레이프하기 위해 CloudWatch 에이전트에 대한 Prometheus 포트를 열어야 합니다.

CloudWatch 에이전트의 보안 그룹 송신 규칙은 CloudWatch 에이전트가 프라이빗 IP로 Prometheus 워크로드의 포트에 연결할 수 있도록 허용해야 합니다.

**Topics**
+ [Amazon ECS 클러스터에 Prometheus 지표 수집과 함께 CloudWatch 에이전트 설치](ContainerInsights-Prometheus-install-ECS.md)
+ [추가 Prometheus 소스 스크레이핑 및 해당 지표 가져오기](ContainerInsights-Prometheus-Setup-configure-ECS.md)
+ [(선택 사항) Prometheus 지표 테스트를 위한 컨테이너화된 Amazon ECS 워크로드 샘플 설정](ContainerInsights-Prometheus-Sample-Workloads-ECS.md)

# Amazon ECS 클러스터에 Prometheus 지표 수집과 함께 CloudWatch 에이전트 설치
<a name="ContainerInsights-Prometheus-install-ECS"></a>

이 단원에서는 Amazon ECS를 실행 중인 클러스터에서 Prometheus 모니터링이 포함된 CloudWatch 에이전트를 설정하는 방법을 설명합니다. 이렇게 에이전트를 설정하면 에이전트가 해당 클러스터에서 실행 중인 다음 워크로드에 대한 지표를 자동으로 스크레이프하고 가져옵니다.
+ AWS App Mesh
+ Java/JMX

추가 Prometheus 워크로드 및 소스에서 지표를 스크레이프하고 가져오도록 에이전트를 구성할 수도 있습니다.

## IAM 역할 설정
<a name="ContainerInsights-Prometheus-Setup-ECS-IAM"></a>

CloudWatch 에이전트 태스크 정의의 두 IAM 역할이 필요합니다. Container Insights가 이러한 역할을 자동으로 생성하도록 CloudFormation 스택에서 **CreateIAMRoles=True**를 지정하면 올바른 권한을 가진 역할이 생성됩니다. 역할을 직접 생성하거나 기존 역할을 사용하려는 경우 다음 역할 및 권한이 필요합니다.
+ **CloudWatch 에이전트 ECS 태스크 역할** - CloudWatch 에이전트 컨테이너는 이 역할을 사용합니다. 여기에는 **CloudWatchAgentServerPolicy** 정책 및 다음과 같은 읽기 전용 권한을 포함하는 고객 관리형 정책이 포함되어야 합니다.
  + `ec2:DescribeInstances`
  + `ecs:ListTasks`
  + `ecs:ListServices`
  + `ecs:DescribeContainerInstances`
  + `ecs:DescribeServices`
  + `ecs:DescribeTasks`
  + `ecs:DescribeTaskDefinition`
+ **CloudWatch 에이전트 ECS 태스크 실행 역할** - Amazon ECS가 컨테이너를 시작하고 실행하는 데 필요한 역할입니다. 태스크 실행 역할에 **AmazonSSMReadOnlyAccess**, **AmazonECSTaskExecutionRolePolicy** 및 **CloudWatchAgentServerPolicy** 정책이 연결되어 있는지 확인합니다. Amazon ECS에서 사용할 더 민감한 데이터를 저장하려는 경우 [민감한 데이터 지정](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specifying-sensitive-data.html) 단원을 참조하세요.

## CloudFormation을 사용하여 Prometheus 모니터링이 포함된 CloudWatch 에이전트 설치
<a name="ContainerInsights-Prometheus-Setup-ECS-CFN"></a>

AWS CloudFormation을 사용하여 Amazon ECS 클러스터에 대해 Prometheus 모니터링이 포함된 CloudWatch 에이전트를 설치합니다. 다음 목록에는 CloudFormation 템플릿에서 사용할 파라미터가 나와 있습니다.
+ **ECSClusterName** - 대상 Amazon ECS 클러스터를 지정합니다.
+ **CreateIAMRoles** - Amazon ECS 태스크 역할 및 Amazon ECS 태스크 실행 역할의 새 역할을 생성하려면 **True**를 지정합니다. 기존 역할을 재사용하려면 **False**를 지정합니다.
+ **TaskRoleName** - **CreateIAMRoles**에서 **True**를 지정한 경우 이 파라미터는 새 Amazon ECS 태스크 역할에 사용할 이름을 지정합니다. **CreateIAMRoles**에서 **False**를 지정한 경우 이 파라미터는 Amazon ECS 태스크 역할로 사용할 기존 역할을 지정합니다.
+ **ExecutionRoleName** - **CreateIAMRoles**에서 **True**를 지정한 경우 이 파라미터는 새 Amazon ECS 태스크 실행 역할에 사용할 이름을 지정합니다. **CreateIAMRoles**에서 **False**를 지정한 경우 이 파라미터는 Amazon ECS 태스크 실행 역할로 사용할 기존 역할을 지정합니다.
+ **ECSNetworkMode** - EC2 시작 유형을 사용하는 경우 여기에서 네트워크 모드를 지정합니다. **bridge** 또는 **host**여야 합니다.
+ **ECSLaunchType** - **fargate** 또는 **EC2**를 지정합니다.
+ **SecurityGroupID** - **ECSNetworkMode**가 **awsvpc**인 경우 여기에서 보안 그룹 ID를 지정합니다.
+ **SubnetID** - **ECSNetworkMode**가 **awsvpc**인 경우 여기에서 서브넷 ID를 지정합니다.

### 샘플 명령
<a name="ContainerInsights-Prometheus-Setup-ECS-CFNcommands"></a>

이 단원에는 다양한 시나리오에서 Prometheus 모니터링과 함께 Container Insights를 설치하기 위한 샘플 CloudFormation 명령이 포함되어 있습니다.

**브리지 네트워크 모드에서 Amazon ECS 클러스터의 CloudFormation 스택 생성**

```
export AWS_PROFILE=your_aws_config_profile_eg_default
export AWS_DEFAULT_REGION=your_aws_region_eg_ap-southeast-1
export ECS_CLUSTER_NAME=your_ec2_ecs_cluster_name
export ECS_NETWORK_MODE=bridge
export CREATE_IAM_ROLES=True
export ECS_TASK_ROLE_NAME=your_selected_ecs_task_role_name
export ECS_EXECUTION_ROLE_NAME=your_selected_ecs_execution_role_name

curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/ecs-task-definition-templates/deployment-mode/replica-service/cwagent-prometheus/cloudformation-quickstart/cwagent-ecs-prometheus-metric-for-bridge-host.yaml

aws cloudformation create-stack --stack-name CWAgent-Prometheus-ECS-${ECS_CLUSTER_NAME}-EC2-${ECS_NETWORK_MODE} \
    --template-body file://cwagent-ecs-prometheus-metric-for-bridge-host.yaml \
    --parameters ParameterKey=ECSClusterName,ParameterValue=${ECS_CLUSTER_NAME} \
                 ParameterKey=CreateIAMRoles,ParameterValue=${CREATE_IAM_ROLES} \
                 ParameterKey=ECSNetworkMode,ParameterValue=${ECS_NETWORK_MODE} \
                 ParameterKey=TaskRoleName,ParameterValue=${ECS_TASK_ROLE_NAME} \
                 ParameterKey=ExecutionRoleName,ParameterValue=${ECS_EXECUTION_ROLE_NAME} \
    --capabilities CAPABILITY_NAMED_IAM \
    --region ${AWS_DEFAULT_REGION} \
    --profile ${AWS_PROFILE}
```

**호스트 네트워크 모드에서 Amazon ECS 클러스터의 CloudFormation 스택 생성**

```
export AWS_PROFILE=your_aws_config_profile_eg_default
export AWS_DEFAULT_REGION=your_aws_region_eg_ap-southeast-1
export ECS_CLUSTER_NAME=your_ec2_ecs_cluster_name
export ECS_NETWORK_MODE=host
export CREATE_IAM_ROLES=True
export ECS_TASK_ROLE_NAME=your_selected_ecs_task_role_name
export ECS_EXECUTION_ROLE_NAME=your_selected_ecs_execution_role_name


curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/ecs-task-definition-templates/deployment-mode/replica-service/cwagent-prometheus/cloudformation-quickstart/cwagent-ecs-prometheus-metric-for-bridge-host.yaml

aws cloudformation create-stack --stack-name CWAgent-Prometheus-ECS-${ECS_CLUSTER_NAME}-EC2-${ECS_NETWORK_MODE} \
    --template-body file://cwagent-ecs-prometheus-metric-for-bridge-host.yaml \
    --parameters ParameterKey=ECSClusterName,ParameterValue=${ECS_CLUSTER_NAME} \
                 ParameterKey=CreateIAMRoles,ParameterValue=${CREATE_IAM_ROLES} \
                 ParameterKey=ECSNetworkMode,ParameterValue=${ECS_NETWORK_MODE} \
                 ParameterKey=TaskRoleName,ParameterValue=${ECS_TASK_ROLE_NAME} \
                 ParameterKey=ExecutionRoleName,ParameterValue=${ECS_EXECUTION_ROLE_NAME} \ 
    --capabilities CAPABILITY_NAMED_IAM \
    --region ${AWS_DEFAULT_REGION} \
    --profile ${AWS_PROFILE}
```

**awsvpc 네트워크 모드에서 Amazon ECS 클러스터의 CloudFormation 스택 생성**

```
export AWS_PROFILE=your_aws_config_profile_eg_default
export AWS_DEFAULT_REGION=your_aws_region_eg_ap-southeast-1
export ECS_CLUSTER_NAME=your_ec2_ecs_cluster_name
export ECS_LAUNCH_TYPE=EC2
export CREATE_IAM_ROLES=True
export ECS_CLUSTER_SECURITY_GROUP=your_security_group_eg_sg-xxxxxxxxxx
export ECS_CLUSTER_SUBNET=your_subnet_eg_subnet-xxxxxxxxxx
export ECS_TASK_ROLE_NAME=your_selected_ecs_task_role_name
export ECS_EXECUTION_ROLE_NAME=your_selected_ecs_execution_role_name

curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/ecs-task-definition-templates/deployment-mode/replica-service/cwagent-prometheus/cloudformation-quickstart/cwagent-ecs-prometheus-metric-for-awsvpc.yaml

aws cloudformation create-stack --stack-name CWAgent-Prometheus-ECS-${ECS_CLUSTER_NAME}-${ECS_LAUNCH_TYPE}-awsvpc \
    --template-body file://cwagent-ecs-prometheus-metric-for-awsvpc.yaml \
    --parameters ParameterKey=ECSClusterName,ParameterValue=${ECS_CLUSTER_NAME} \
                 ParameterKey=CreateIAMRoles,ParameterValue=${CREATE_IAM_ROLES} \
                 ParameterKey=ECSLaunchType,ParameterValue=${ECS_LAUNCH_TYPE} \
                 ParameterKey=SecurityGroupID,ParameterValue=${ECS_CLUSTER_SECURITY_GROUP} \
                 ParameterKey=SubnetID,ParameterValue=${ECS_CLUSTER_SUBNET} \
                 ParameterKey=TaskRoleName,ParameterValue=${ECS_TASK_ROLE_NAME} \
                 ParameterKey=ExecutionRoleName,ParameterValue=${ECS_EXECUTION_ROLE_NAME} \
    --capabilities CAPABILITY_NAMED_IAM \
    --region ${AWS_DEFAULT_REGION} \
    --profile ${AWS_PROFILE}
```

**awsvpc 네트워크 모드에서 Fargate 클러스터의 CloudFormation 스택 생성**

```
export AWS_PROFILE=your_aws_config_profile_eg_default
export AWS_DEFAULT_REGION=your_aws_region_eg_ap-southeast-1
export ECS_CLUSTER_NAME=your_ec2_ecs_cluster_name
export ECS_LAUNCH_TYPE=FARGATE
export CREATE_IAM_ROLES=True
export ECS_CLUSTER_SECURITY_GROUP=your_security_group_eg_sg-xxxxxxxxxx
export ECS_CLUSTER_SUBNET=your_subnet_eg_subnet-xxxxxxxxxx
export ECS_TASK_ROLE_NAME=your_selected_ecs_task_role_name
export ECS_EXECUTION_ROLE_NAME=your_selected_ecs_execution_role_name            

curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/ecs-task-definition-templates/deployment-mode/replica-service/cwagent-prometheus/cloudformation-quickstart/cwagent-ecs-prometheus-metric-for-awsvpc.yaml

aws cloudformation create-stack --stack-name CWAgent-Prometheus-ECS-${ECS_CLUSTER_NAME}-${ECS_LAUNCH_TYPE}-awsvpc \
    --template-body file://cwagent-ecs-prometheus-metric-for-awsvpc.yaml \
    --parameters ParameterKey=ECSClusterName,ParameterValue=${ECS_CLUSTER_NAME} \
                 ParameterKey=CreateIAMRoles,ParameterValue=${CREATE_IAM_ROLES} \
                 ParameterKey=ECSLaunchType,ParameterValue=${ECS_LAUNCH_TYPE} \
                 ParameterKey=SecurityGroupID,ParameterValue=${ECS_CLUSTER_SECURITY_GROUP} \
                 ParameterKey=SubnetID,ParameterValue=${ECS_CLUSTER_SUBNET} \
                 ParameterKey=TaskRoleName,ParameterValue=${ECS_TASK_ROLE_NAME} \
                 ParameterKey=ExecutionRoleName,ParameterValue=${ECS_EXECUTION_ROLE_NAME} \
    --capabilities CAPABILITY_NAMED_IAM \
    --region ${AWS_DEFAULT_REGION} \
    --profile ${AWS_PROFILE}
```

### CloudFormation 스택에서 생성한 AWS 리소스
<a name="ContainerInsights-Prometheus-Setup-ECS-resources"></a>

다음 표에는 CloudFormation을 사용하여 Amazon ECS 클러스터에서 Prometheus 모니터링과 함께 Container Insights를 설정할 때 생성되는 AWS 리소스가 나와 있습니다.


| 리소스 유형 | 리소스 이름 | 설명 | 
| --- | --- | --- | 
|  AWS::SSM::Parameter  |  AmazonCloudWatch-CWAgentConfig-\$1*ECS\$1CLUSTER\$1NAME*-\$1*ECS\$1LAUNCH\$1TYPE*-\$1*ECS\$1NETWORK\$1MODE*  |  이 리소스는 기본 App Mesh 및 Java/JMX 임베디드 지표 형식 정의가 있는 CloudWatch 에이전트입니다.  | 
|  AWS::SSM::Parameter  |  AmazonCloudWatch-PrometheusConfigName-\$1*ECS\$1CLUSTER\$1NAME*-\$1*ECS\$1LAUNCH\$1TYPE*-\$1*ECS\$1NETWORK\$1MODE*  |  이 리소스는 Prometheus 스크레이핑 구성입니다.  | 
|  AWS::IAM::Role  |  **\$1ECS\$1TASK\$1ROLE\$1NAME**.  |  Amazon ECS 태스크 역할입니다. `CREATE_IAM_ROLES`에서 **True**를 지정한 경우에만 생성됩니다.  | 
|  AWS::IAM::Role  |  **\$1\$1ECS\$1EXECUTION\$1ROLE\$1NAME\$1**   |  Amazon ECS 태스크 실행 역할입니다. `CREATE_IAM_ROLES`에서 **True**를 지정한 경우에만 생성됩니다.  | 
|  AWS::ECS::TaskDefinition  |  cwagent-prometheus-\$1*ECS\$1CLUSTER\$1NAME*-\$1*ECS\$1LAUNCH\$1TYPE*-\$1*ECS\$1NETWORK\$1MODE*   |   | 
|  AWS::ECS::Service  |  cwagent-prometheus-replica-service-\$1*ECS\$1LAUNCH\$1TYPE*-\$1*ECS\$1NETWORK\$1MODE*  |   | 

### Prometheus 모니터링이 포함된 CloudWatch 에이전트의 CloudFormation 스택 삭제
<a name="ContainerInsights-Prometheus-ECS-delete"></a>

Amazon ECS 클러스터에서 CloudWatch 에이전트를 삭제하려면 다음 명령을 입력합니다.

```
export AWS_PROFILE=your_aws_config_profile_eg_default
export AWS_DEFAULT_REGION=your_aws_region_eg_ap-southeast-1
export CLOUDFORMATION_STACK_NAME=your_cloudformation_stack_name

aws cloudformation delete-stack \
--stack-name ${CLOUDFORMATION_STACK_NAME} \
--region ${AWS_DEFAULT_REGION} \
--profile ${AWS_PROFILE}
```

# 추가 Prometheus 소스 스크레이핑 및 해당 지표 가져오기
<a name="ContainerInsights-Prometheus-Setup-configure-ECS"></a>

Prometheus 모니터링이 포함된 CloudWatch 에이전트는 Prometheus 지표를 스크레이프하는 데 두 가지 구성이 필요합니다. 하나는 Prometheus 설명서의 [<scrape\$1config>](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config)에 설명된 표준 Prometheus 구성을 위한 것입니다. 다른 하나는 CloudWatch 에이전트 구성을 위한 것입니다.

Amazon ECS 클러스터의 경우 구성은 다음과 같이 Amazon ECS 태스크 정의의 보안 암호를 통해 AWS Systems Manager의 파라미터 스토어와 통합됩니다.
+ 보안 암호 `PROMETHEUS_CONFIG_CONTENT`는 Prometheus 스크레이프 구성을 위한 것입니다.
+ 보안 암호 `CW_CONFIG_CONTENT`는 CloudWatch 에이전트 구성을 위한 것입니다.

추가 Prometheus 지표 소스를 스크레이프하고 해당 지표를 CloudWatch에 가져오려면 Prometheus 스크레이프 구성과 CloudWatch 에이전트 구성을 모두 수정한 다음, 업데이트된 구성으로 에이전트를 다시 배포합니다.

**VPC 보안 그룹 요구 사항**

Prometheus 워크로드의 보안 그룹 수신 규칙은 프라이빗 IP로 Prometheus 지표를 스크레이프하기 위해 CloudWatch 에이전트에 대한 Prometheus 포트를 열어야 합니다.

CloudWatch 에이전트의 보안 그룹 송신 규칙은 CloudWatch 에이전트가 프라이빗 IP로 Prometheus 워크로드의 포트에 연결할 수 있도록 허용해야 합니다.

## Prometheus 스크레이프 구성
<a name="ContainerInsights-Prometheus-Setup-config-global"></a>

CloudWatch 에이전트는 Prometheus 설명서의 [ <scrape\$1config>](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config)에 설명된 대로 표준 Prometheus 스크레이프 구성을 지원합니다. 이 섹션을 편집하여 이 파일에 이미 있는 구성을 업데이트하고 Prometheus 스크레이핑 대상을 더 추가할 수 있습니다. 기본적으로 샘플 구성 파일에는 다음과 같은 글로벌 구성 줄이 포함되어 있습니다.

```
global:
  scrape_interval: 1m
  scrape_timeout: 10s
```
+ **scrape\$1interval** - 대상을 스크레이프하는 빈도를 정의합니다.
+ **scrape\$1timeout** - 스크레이프 요청 시간이 초과되기 전에 대기할 시간을 정의합니다.

작업 수준에서 이러한 설정에 다른 값을 정의하여 전역 구성을 재정의할 수도 있습니다.

### Prometheus 스크레이핑 작업
<a name="ContainerInsights-Prometheus-Setup-config-scrape"></a>

CloudWatch 에이전트 YAML 파일에는 일부 기본 스크레이핑 작업이 이미 구성되어 있습니다. 예를 들어 `cwagent-ecs-prometheus-metric-for-bridge-host.yaml`과 같은 Amazon ECS의 YAML 파일에서 기본 스크레이핑 작업은 `ecs_service_discovery` 섹션에서 구성됩니다.

```
"ecs_service_discovery": {
                  "sd_frequency": "1m",
                  "sd_result_file": "/tmp/cwagent_ecs_auto_sd.yaml",
                  "docker_label": {
                  },
                  "task_definition_list": [
                    {
                      "sd_job_name": "ecs-appmesh-colors",
                      "sd_metrics_ports": "9901",
                      "sd_task_definition_arn_pattern": ".*:task-definition\/.*-ColorTeller-(white):[0-9]+",
                      "sd_metrics_path": "/stats/prometheus"
                    },
                    {
                      "sd_job_name": "ecs-appmesh-gateway",
                      "sd_metrics_ports": "9901",
                      "sd_task_definition_arn_pattern": ".*:task-definition/.*-ColorGateway:[0-9]+",
                      "sd_metrics_path": "/stats/prometheus"
                    }
                  ]
                }
```

이러한 각 기본 대상은 스크레이프되고 지표는 임베디드 지표 형식을 사용하여 로그 이벤트로 CloudWatch에 전송됩니다. 자세한 내용은 [로그 내에 지표 포함](CloudWatch_Embedded_Metric_Format.md) 섹션을 참조하세요.

Amazon ECS 클러스터의 로그 이벤트는 **/aws/ecs/containerinsights/*cluster\$1name*/prometheus** 로그 그룹에 저장됩니다.

각 스크레이핑 작업은 이 로그 그룹의 서로 다른 로그 스트림에 포함됩니다.

새 스크레이핑 대상을 추가하려면 YAML 파일의 `ecs_service_discovery` 섹션 아래 `task_definition_list` 섹션에 새 항목을 추가하고 에이전트를 다시 시작합니다. 이 프로세스의 예는 [새로운 Prometheus 스크레이프 대상을 추가하기 위한 튜토리얼: Prometheus API 서버 지표](ContainerInsights-Prometheus-Setup-configure.md#ContainerInsights-Prometheus-Setup-new-exporters) 단원을 참조하세요.

## Prometheus에 대한 CloudWatch 에이전트 구성
<a name="ContainerInsights-Prometheus-Setup-cw-agent-config"></a>

CloudWatch 에이전트 구성 파일에는 `metrics_collected` 아래에 Prometheus 스크레이핑 구성에 대한 `prometheus` 섹션이 있습니다. 여기에는 다음 구성 옵션이 포함됩니다.
+ **cluster\$1name** - 로그 이벤트에서 레이블로 추가할 클러스터 이름을 지정합니다. 이 필드는 선택 사항입니다. 생략하는 경우 에이전트가 Amazon ECS 클러스터 이름을 감지할 수 있습니다.
+ **log\$1group\$1name** - 스크레이프한 Prometheus 지표의 로그 그룹 이름을 지정합니다. 이 필드는 선택 사항입니다. 생략하는 경우 CloudWatch는 Amazon ECS 클러스터의 로그에 **/aws/ecs/containerinsights/*cluster\$1name*/prometheus**를 사용합니다.
+ **prometheus\$1config\$1path** - Prometheus 스크레이프 구성 파일 경로를 지정합니다. 이 필드의 값이 `env:`로 시작하는 경우 Prometheus 스크레이프 구성 파일 내용이 컨테이너의 환경 변수에서 검색됩니다. 이 값은 변경하지 마세요.
+ **ecs\$1service\$1discovery** - Amazon ECS Prometheus 대상 자동 검색 기능의 구성을 지정하는 섹션입니다. Prometheus 대상을 검색하기 위해 두 모드, 즉 컨테이너의 Docker 레이블을 기반으로 하는 검색 또는 Amazon ECS 태스크 정의 ARN 정규 표현식을 기반으로 하는 검색이 지원됩니다. 두 모드를 함께 사용할 수 있습니다. CloudWatch 에이전트는 *\$1private\$1ip\$1:\$1port\$1/\$1metrics\$1path\$1*를 기반으로 검색된 대상의 중복을 제거합니다.

  `ecs_service_discovery` 섹션에는 다음 필드가 포함될 수 있습니다.
  + `sd_frequency`는 Prometheus Exporter를 검색하는 빈도입니다. 숫자와 단위 접미사를 지정합니다. 예를 들어 1분마다 한 번의 경우 `1m` 또는 30초마다 한 번의 경우 `30s`입니다. 유효한 단위 접미사는 `ns`, `us`, `ms`, `s`, `m`, `h`입니다.

    이 필드는 선택 사항입니다. 기본값은 60초(1분)입니다.
  + `sd_target_cluster`는 자동 검색의 대상 Amazon ECS 클러스터 이름입니다. 이 필드는 선택 사항입니다. 기본값은 CloudWatch 에이전트가 설치된 Amazon ECS 클러스터의 이름입니다.
  + `sd_cluster_region`은 대상 Amazon ECS 클러스터의 리전입니다. 이 필드는 선택 사항입니다. 기본값은 CloudWatch 에이전트가 설치된 Amazon ECS 클러스터의 리전입니다.
  + `sd_result_file`은 Prometheus 대상 결과의 YAML 파일 경로입니다. Prometheus 스크레이프 구성은 이 파일을 참조합니다.
  + `docker_label`은 Docker 레이블 기반 서비스 검색을 위한 구성을 지정하는 데 사용할 수 있는 선택적 섹션입니다. 이 섹션을 생략하면 Docker 레이블 기반 검색이 사용되지 않습니다. 이 섹션에는 다음 필드가 포함될 수 있습니다.
    + `sd_port_label`은 Prometheus 지표에 대한 컨테이너 포트를 지정하는 컨테이너의 Docker 레이블 이름입니다. 기본값은 `ECS_PROMETHEUS_EXPORTER_PORT`입니다. 컨테이너에 이 Docker 레이블이 없다면 CloudWatch 에이전트는 이 필드를 건너뜁니다.
    + `sd_metrics_path_label`은 Prometheus 지표 경로를 지정하는 컨테이너의 Docker 레이블 이름입니다. 기본값은 `ECS_PROMETHEUS_METRICS_PATH`입니다. 컨테이너에 이 도커 레이블이 없다면 에이전트는 기본 경로 `/metrics`를 가정합니다.
    + `sd_job_name_label`은 Prometheus 스크레이프 작업 이름을 지정하는 컨테이너의 Docker 레이블 이름입니다. 기본값은 `job`입니다. 컨테이너에 이 Docker 레이블이 없다면 CloudWatch 에이전트는 Prometheus 스크레이프 구성의 작업 이름을 사용합니다.
  + `task_definition_list`는 태스크 정의 기반 서비스 검색의 구성을 지정하는 데 사용할 수 있는 선택적 섹션입니다. 이 섹션을 생략하면 태스크 정의 기반 검색이 사용되지 않습니다. 이 섹션에는 다음 필드가 포함될 수 있습니다.
    + `sd_task_definition_arn_pattern`은 검색할 Amazon ECS 태스크 정의를 지정하는 데 사용할 패턴입니다. 이는 정규 표현식입니다.
    + `sd_metrics_ports`는 Prometheus 지표에 대한 containerPort를 나열합니다. containerPort를 세미콜론으로 구분합니다.
    + `sd_container_name_pattern`은 Amazon ECS 태스크 컨테이너 이름을 지정합니다. 이는 정규 표현식입니다.
    + `sd_metrics_path`는 Prometheus 지표 경로를 지정합니다. 이 필드를 생략하면 에이전트는 기본 경로 `/metrics`를 가정합니다.
    + `sd_job_name`은 Prometheus 스크레이프 작업 이름을 지정합니다. 이 필드를 생략하면 CloudWatch 에이전트는 Prometheus 스크레이프 구성의 작업 이름을 사용합니다.
  + `service_name_list_for_tasks`는 서비스 이름 기반 검색의 구성을 지정하는 데 사용할 수 있는 선택적 섹션입니다. 이 섹션을 생략하면 서비스 이름 기반 검색이 사용되지 않습니다. 이 섹션에는 다음 필드가 포함될 수 있습니다.
    + `sd_service_name_pattern`은 태스크를 검색할 Amazon ECS 서비스를 지정하는 데 사용할 패턴입니다. 이는 정규 표현식입니다.
    + `sd_metrics_ports`는 Prometheus 지표에 대한 `containerPort`를 나열합니다. 여러 `containerPorts`를 세미콜론으로 구분합니다.
    + `sd_container_name_pattern`은 Amazon ECS 태스크 컨테이너 이름을 지정합니다. 이는 정규 표현식입니다.
    + `sd_metrics_path`는 Prometheus 지표 경로를 지정합니다. 이 필드를 생략하면 에이전트는 기본 경로 `/metrics`를 가정합니다.
    + `sd_job_name`은 Prometheus 스크레이프 작업 이름을 지정합니다. 이 필드를 생략하면 CloudWatch 에이전트는 Prometheus 스크레이프 구성의 작업 이름을 사용합니다.
+ **metric\$1declaration** - 생성할 임베디드 지표 형식이 있는 로그 배열을 지정하는 섹션입니다. CloudWatch 에이전트가 기본적으로 가져오는 각 Prometheus 소스에 대한 `metric_declaration` 섹션이 있습니다. 이러한 섹션에는 각각 다음 필드가 포함됩니다.
  + `label_matcher`는 `source_labels`에 나열된 레이블의 값을 확인하는 정규 표현식입니다. 일치하는 지표는 CloudWatch에 전송된 임베디드 지표 형식에 포함할 수 있습니다.

    `source_labels`에 여러 레이블이 지정된 경우 `label_matcher`의 정규 표현식에 `^` 또는 `$` 문자를 사용하지 않는 것이 좋습니다.
  + `source_labels`는 `label_matcher` 줄에 의해 확인되는 레이블의 값을 지정합니다.
  + `label_separator`는 여러 `source_labels`가 지정된 경우 ` label_matcher` 줄에 사용할 구분 기호를 지정합니다. 기본값은 `;`입니다. 다음 예에서 `label_matcher` 줄에 이 기본값이 사용된 것을 볼 수 있습니다.
  + `metric_selectors`는 수집하여 CloudWatch에 보낼 지표를 지정하는 정규 표현식입니다.
  + `dimensions`는 선택한 각 지표의 CloudWatch 측정기준으로 사용할 레이블 목록입니다.

다음 `metric_declaration` 예를 참조하세요.

```
"metric_declaration": [
  {
     "source_labels":[ "Service", "Namespace"],
     "label_matcher":"(.*node-exporter.*|.*kube-dns.*);kube-system$",
     "dimensions":[
        ["Service", "Namespace"]
     ],
     "metric_selectors":[
        "^coredns_dns_request_type_count_total$"
     ]
  }
]
```

이 예에서는 다음 조건이 충족될 경우 임베디드 지표 형식 섹션을 로그 이벤트로 전송하도록 구성합니다.
+ `Service`의 값에 `node-exporter` 또는 `kube-dns`가 포함되어 있습니다.
+ `Namespace`의 값이 `kube-system`입니다.
+ Prometheus `coredns_dns_request_type_count_total` 지표에 `Service`와 `Namespace` 레이블이 모두 포함되어 있습니다.

전송되는 로그 이벤트에는 다음과 같은 강조 표시된 섹션이 포함됩니다.

```
{
   "CloudWatchMetrics":[
      {
         "Metrics":[
            {
               "Name":"coredns_dns_request_type_count_total"
            }
         ],
         "Dimensions":[
            [
               "Namespace",
               "Service"
            ]
         ],
         "Namespace":"ContainerInsights/Prometheus"
      }
   ],
   "Namespace":"kube-system",
   "Service":"kube-dns",
   "coredns_dns_request_type_count_total":2562,
   "eks_amazonaws_com_component":"kube-dns",
   "instance":"192.168.61.254:9153",
   "job":"kubernetes-service-endpoints",
   ...
}
```

# Amazon ECS 클러스터의 자동 검색에 대한 자세한 가이드
<a name="ContainerInsights-Prometheus-Setup-autodiscovery-ecs"></a>

Prometheus는 [<scrape\$1config>](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config)에 설명된 대로 수십 가지의 동적 서비스 검색 메커니즘을 제공합니다. 그러나 Amazon ECS에 대한 기본 제공 서비스 검색은 없습니다. CloudWatch 에이전트가 이 메커니즘을 추가합니다.

Amazon ECS Prometheus 서비스 검색을 사용 설정하면 CloudWatch 에이전트는 Amazon ECS 및 Amazon EC2 프런트엔드에 대해 다음 API 호출을 주기적으로 수행하여 대상 ECS 클러스터에서 실행 중인 ECS 태스크의 메타데이터를 검색합니다.

```
EC2:DescribeInstances
ECS:ListTasks
ECS:ListServices
ECS:DescribeContainerInstances
ECS:DescribeServices
ECS:DescribeTasks
ECS:DescribeTaskDefinition
```

CloudWatch 에이전트는 메타데이터를 사용하여 ECS 클러스터 내에서 Prometheus 대상을 스캔합니다. CloudWatch 에이전트는 다음과 같은 세 가지 서비스 검색 모드를 지원합니다.
+ 컨테이너 Docker 레이블 기반 서비스 검색
+ 이 예에서는 ECS 태스크 정의 ARN 정규 표현식 기반 서비스 검색을 사용 설정합니다.
+ ECS 서비스 이름 정규 표현식 기반 서비스 검색

모든 모드를 함께 사용할 수 있습니다. CloudWatch 에이전트는 `{private_ip}:{port}/{metrics_path}`를 기반으로 검색된 대상의 중복을 제거합니다.

검색된 모든 대상은 CloudWatch 에이전트 컨테이너 내의 `sd_result_file` 구성 필드에서 지정한 결과 파일에 작성됩니다. 다음은 샘플 결과 파일입니다.

```
- targets:
  - 10.6.1.95:32785
  labels:
    __metrics_path__: /metrics
    ECS_PROMETHEUS_EXPORTER_PORT: "9406"
    ECS_PROMETHEUS_JOB_NAME: demo-jar-ec2-bridge-dynamic
    ECS_PROMETHEUS_METRICS_PATH: /metrics
    InstanceType: t3.medium
    LaunchType: EC2
    SubnetId: subnet-123456789012
    TaskDefinitionFamily: demo-jar-ec2-bridge-dynamic-port
    TaskGroup: family:demo-jar-ec2-bridge-dynamic-port
    TaskRevision: "7"
    VpcId: vpc-01234567890
    container_name: demo-jar-ec2-bridge-dynamic-port
    job: demo-jar-ec2-bridge-dynamic
- targets:
  - 10.6.3.193:9404
  labels:
    __metrics_path__: /metrics
    ECS_PROMETHEUS_EXPORTER_PORT_SUBSET_B: "9404"
    ECS_PROMETHEUS_JOB_NAME: demo-tomcat-ec2-bridge-mapped-port
    ECS_PROMETHEUS_METRICS_PATH: /metrics
    InstanceType: t3.medium
    LaunchType: EC2
    SubnetId: subnet-123456789012
    TaskDefinitionFamily: demo-tomcat-ec2-bridge-mapped-port
    TaskGroup: family:demo-jar-tomcat-bridge-mapped-port
    TaskRevision: "12"
    VpcId: vpc-01234567890
    container_name: demo-tomcat-ec2-bridge-mapped-port
    job: demo-tomcat-ec2-bridge-mapped-port
```

이 결과 파일을 Prometheus 파일 기반 서비스 검색과 직접 통합할 수 있습니다. Prometheus 파일 기반 서비스 검색에 대한 자세한 내용은 [<file\$1sd\$1config>](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#file_sd_config)를 참조하세요.

 결과 파일이 `/tmp/cwagent_ecs_auto_sd.yaml`에 작성되었다고 가정합니다. 다음 Prometheus 스크레이프 구성은 이 파일을 사용합니다.

```
global:
  scrape_interval: 1m
  scrape_timeout: 10s
scrape_configs:
  - job_name: cwagent-ecs-file-sd-config
    sample_limit: 10000
    file_sd_configs:
      - files: [ "/tmp/cwagent_ecs_auto_sd.yaml" ]
```

CloudWatch 에이전트는 검색된 대상에 대해 다음과 같은 레이블도 추가합니다.
+ `container_name`
+ `TaskDefinitionFamily`
+ `TaskRevision`
+ `TaskGroup`
+ `StartedBy`
+ `LaunchType`
+ `job`
+ `__metrics_path__`
+ Docker 레이블

클러스터에 EC2 시작 유형이 있는 경우 다음과 같은 레이블 세 가지가 추가됩니다.
+ `InstanceType`
+ `VpcId`
+ `SubnetId`

**참고**  
정규 표현식 `[a-zA-Z_][a-zA-Z0-9_]*`와 일치하지 않는 Docker 레이블은 필터링되어 제외됩니다. 이는 Prometheus 설명서에 있는 [구성 파일](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#labelname)의 `label_name`에 나열된 Prometheus 규칙과 일치합니다.

## ECS 서비스 검색 구성 예
<a name="ContainerInsights-Prometheus-Setup-autodiscovery-ecs-examples"></a>

이 단원에는 ECS 서비스 검색을 보여 주는 예가 포함되어 있습니다.

**예제 1**.

```
"ecs_service_discovery": {
  "sd_frequency": "1m",
  "sd_result_file": "/tmp/cwagent_ecs_auto_sd.yaml",
  "docker_label": {
  }
}
```

이 예에서는 Docker 레이블 기반 서비스 검색을 사용 설정합니다. CloudWatch 에이전트는 1분마다 한 번씩 ECS 태스크의 메타데이터를 쿼리하고 검색된 대상을 CloudWatch 에이전트 컨테이너 내의 `/tmp/cwagent_ecs_auto_sd.yaml` 파일에 씁니다.

`docker_label` 섹션에 있는 `sd_port_label`의 기본값은 `ECS_PROMETHEUS_EXPORTER_PORT`입니다. ECS 태스크의 실행 중인 컨테이너에 `ECS_PROMETHEUS_EXPORTER_PORT` Docker 레이블이 있는 경우 CloudWatch 에이전트는 해당 값을 `container port`로 사용하여 컨테이너의 노출된 포트를 모두 스캔합니다. 일치하는 항목이 있다면 매핑된 호스트 포트와 컨테이너의 프라이빗 IP를 사용하여 `private_ip:host_port` 형식으로 Prometheus Exporter 대상을 구성합니다.

`docker_label` 섹션에 있는 `sd_metrics_path_label`의 기본값은 `ECS_PROMETHEUS_METRICS_PATH`입니다. 컨테이너에 이 Docker 레이블이 있는 경우 해당 값을 `__metrics_path__`로 사용합니다. 컨테이너에 이 레이블이 없다면 기본값인 `/metrics`를 사용합니다.

`docker_label` 섹션에 있는 `sd_job_name_label`의 기본값은 `job`입니다. 컨테이너에 이 Docker 레이블이 있는 경우 해당 값은 대상에 대한 레이블 중 하나로 추가되어 Prometheus 구성에 지정된 기본 작업 이름을 대체합니다. 이 Docker 레이블의 값은 CloudWatch Logs 로그 그룹의 로그 스트림 이름으로 사용됩니다.

**예제 2**.

```
"ecs_service_discovery": {
  "sd_frequency": "15s",
  "sd_result_file": "/tmp/cwagent_ecs_auto_sd.yaml",
  "docker_label": {
    "sd_port_label": "ECS_PROMETHEUS_EXPORTER_PORT_SUBSET_A",
    "sd_job_name_label": "ECS_PROMETHEUS_JOB_NAME"  
  }
}
```

이 예에서는 Docker 레이블 기반 서비스 검색을 사용 설정합니다. CloudWatch 에이전트는 15초마다 ECS 태스크의 메타데이터를 쿼리하고 검색된 대상을 CloudWatch 에이전트 컨테이너 내의 `/tmp/cwagent_ecs_auto_sd.yaml` 파일에 씁니다. `ECS_PROMETHEUS_EXPORTER_PORT_SUBSET_A`의 Docker 레이블이 있는 컨테이너를 스캔합니다. Docker 레이블 `ECS_PROMETHEUS_JOB_NAME`의 값을 작업 이름으로 사용합니다.

**예 3**

```
"ecs_service_discovery": {
  "sd_frequency": "5m",
  "sd_result_file": "/tmp/cwagent_ecs_auto_sd.yaml",
  "task_definition_list": [
    {
      "sd_job_name": "java-prometheus",
      "sd_metrics_path": "/metrics",
      "sd_metrics_ports": "9404; 9406",
      "sd_task_definition_arn_pattern": ".*:task-definition/.*javajmx.*:[0-9]+"
    },
    {
      "sd_job_name": "envoy-prometheus",
      "sd_metrics_path": "/stats/prometheus",
      "sd_container_name_pattern": "^envoy$", 
      "sd_metrics_ports": "9901",
      "sd_task_definition_arn_pattern": ".*:task-definition/.*appmesh.*:23"
    }
  ]
}
```

이 예에서는 ECS 태스크 정의 ARN 정규 표현식 기반 서비스 검색을 사용 설정합니다. CloudWatch 에이전트는 5분마다 ECS 태스크의 메타데이터를 쿼리하고 검색된 대상을 CloudWatch 에이전트 컨테이너 내의 `/tmp/cwagent_ecs_auto_sd.yaml` 파일에 씁니다.

다음과 같이 두 태스크 정의 ARN 정규 표현식 섹션이 정의됩니다.
+  첫 번째 섹션의 경우 ECS 태스크 정의 ARN에 `javajmx`가 있는 ECS 태스크가 컨테이너 포트 스캔에 대해 필터링됩니다. 이러한 ECS 태스크 내의 컨테이너가 9404 또는 9406의 컨테이너 포트를 노출하는 경우 컨테이너의 프라이빗 IP와 함께 매핑된 호스트 포트를 사용하여 Prometheus Exporter 대상을 생성합니다. `sd_metrics_path` 값은 `__metrics_path__`를 `/metrics`로 설정합니다. 따라서 CloudWatch 에이전트는 `private_ip:host_port/metrics`에서 Prometheus 지표를 스크레이프하고, 스크레이프한 지표를 CloudWatch Logs 로그 그룹 `/aws/ecs/containerinsights/cluster_name/prometheus`의 `java-prometheus` 로그 스트림에 전송합니다.
+  두 번째 섹션의 경우 ECS 태스크 정의 ARN에 `appmesh`가 있고 `version`이 `:23`인 ECS 태스크가 컨테이너 포트 스캔에 대해 필터링됩니다. `envoy`라는 이름의 컨테이너가 `9901`의 컨테이너 포트를 노출하는 경우 컨테이너의 프라이빗 IP와 함께 매핑된 호스트 포트를 사용하여 Prometheus Exporter 대상을 생성합니다. 이러한 ECS 태스크 내의 값은 9404 또는 9406의 컨테이너 포트를 노출하며, 컨테이너의 프라이빗 IP와 함께 매핑된 호스트 포트를 사용하여 Prometheus Exporter 대상을 생성합니다. `sd_metrics_path` 값은 `__metrics_path__`를 `/stats/prometheus`로 설정합니다. 따라서 CloudWatch 에이전트는 `private_ip:host_port/stats/prometheus`에서 Prometheus 지표를 스크레이프하고, 스크레이프한 지표를 CloudWatch Logs 로그 그룹 `/aws/ecs/containerinsights/cluster_name/prometheus`의 `envoy-prometheus` 로그 스트림에 전송합니다.

**예 4**

```
"ecs_service_discovery": {
  "sd_frequency": "5m",
  "sd_result_file": "/tmp/cwagent_ecs_auto_sd.yaml",
  "service_name_list_for_tasks": [
    {
      "sd_job_name": "nginx-prometheus",
      "sd_metrics_path": "/metrics",
      "sd_metrics_ports": "9113",
      "sd_service_name_pattern": "^nginx-.*"
    },
    {
      "sd_job_name": "haproxy-prometheus",
      "sd_metrics_path": "/stats/metrics",
      "sd_container_name_pattern": "^haproxy$",
      "sd_metrics_ports": "8404",
      "sd_service_name_pattern": ".*haproxy-service.*"
    }
  ]
}
```

이 예에서는 ECS 서비스 이름 정규 표현식 기반 서비스 검색을 사용 설정합니다. CloudWatch 에이전트는 5분마다 ECS 서비스의 메타데이터를 쿼리하고 검색된 대상을 CloudWatch 에이전트 컨테이너 내의 `/tmp/cwagent_ecs_auto_sd.yaml` 파일에 씁니다.

다음과 같이 두 서비스 이름 정규 표현식 섹션이 정의됩니다.
+  첫 번째 섹션의 경우 이름이 정규 표현식 `^nginx-.*`와 일치하는 ECS 서비스와 연결된 ECS 태스크가 컨테이너 포트 스캔에 대해 필터링됩니다. 이러한 ECS 태스크 내의 컨테이너가 9113의 컨테이너 포트를 노출하는 경우 컨테이너의 프라이빗 IP와 함께 매핑된 호스트 포트를 사용하여 Prometheus Exporter 대상을 생성합니다. `sd_metrics_path` 값은 `__metrics_path__`를 `/metrics`로 설정합니다. 따라서 CloudWatch 에이전트는 `private_ip:host_port/metrics`에서 Prometheus 지표를 스크레이프하고, 스크레이프한 지표를 CloudWatch Logs 로그 그룹 `/aws/ecs/containerinsights/cluster_name/prometheus`의 `nginx-prometheus` 로그 스트림에 전송합니다.
+  두 번째 섹션의 경우 이름이 정규 표현식 `.*haproxy-service.*`와 일치하는 ECS 서비스와 연결된 ECS 태스크가 컨테이너 포트 스캔에 대해 필터링됩니다. `haproxy`라는 이름의 컨테이너가 8404의 컨테이너 포트를 노출하는 경우 컨테이너의 프라이빗 IP와 함께 매핑된 호스트 포트를 사용하여 Prometheus Exporter 대상을 생성합니다. `sd_metrics_path` 값은 `__metrics_path__`를 `/stats/metrics`로 설정합니다. 따라서 CloudWatch 에이전트는 `private_ip:host_port/stats/metrics`에서 Prometheus 지표를 스크레이프하고, 스크레이프한 지표를 CloudWatch Logs 로그 그룹 `/aws/ecs/containerinsights/cluster_name/prometheus`의 `haproxy-prometheus` 로그 스트림에 전송합니다.

**예 5**

```
"ecs_service_discovery": {
  "sd_frequency": "1m30s",
  "sd_result_file": "/tmp/cwagent_ecs_auto_sd.yaml",
  "docker_label": {
    "sd_port_label": "MY_PROMETHEUS_EXPORTER_PORT_LABEL",
    "sd_metrics_path_label": "MY_PROMETHEUS_METRICS_PATH_LABEL",
    "sd_job_name_label": "MY_PROMETHEUS_METRICS_NAME_LABEL"  
  }
  "task_definition_list": [
    {
      "sd_metrics_ports": "9150",
      "sd_task_definition_arn_pattern": "*memcached.*"
    }
  ]
}
```

이 예에서는 두 ECS 서비스 검색 모드를 모두 사용하도록 설정합니다. CloudWatch 에이전트는 90초마다 ECS 태스크의 메타데이터를 쿼리하고 검색된 대상을 CloudWatch 에이전트 컨테이너 내의 `/tmp/cwagent_ecs_auto_sd.yaml` 파일에 씁니다.

Docker 기반 서비스 검색 구성의 경우:
+ Docker 레이블 `MY_PROMETHEUS_EXPORTER_PORT_LABEL`이 있는 ECS 태스크가 Prometheus 포트 스캔에 대해 필터링됩니다. 대상 Prometheus 컨테이너 포트는 `MY_PROMETHEUS_EXPORTER_PORT_LABEL` 레이블의 값으로 지정합니다.
+ `__metrics_path__`에 Docker 레이블 `MY_PROMETHEUS_EXPORTER_PORT_LABEL`의 값을 사용합니다. 컨테이너에 이 Docker 레이블이 없다면 기본값인 `/metrics`를 사용합니다.
+ Docker 레이블 `MY_PROMETHEUS_EXPORTER_PORT_LABEL`의 값을 작업 레이블로 사용합니다. 컨테이너에 이 Docker 레이블이 없다면 Prometheus 구성에 정의된 작업 이름을 사용합니다.

ECS 태스크 정의 ARN 정규 표현식 기반 서비스 검색 구성의 경우:
+ ECS 태스크 정의 ARN에 `memcached`가 있는 ECS 태스크가 컨테이너 포트 스캔에 대해 필터링됩니다. 대상 Prometheus 컨테이너 포트는 `sd_metrics_ports`에 정의된 대로 9150입니다. 기본 지표 경로인 `/metrics`를 사용합니다. Prometheus 구성에 정의된 작업 이름을 사용합니다.

# (선택 사항) Prometheus 지표 테스트를 위한 컨테이너화된 Amazon ECS 워크로드 샘플 설정
<a name="ContainerInsights-Prometheus-Sample-Workloads-ECS"></a>

CloudWatch Container Insights에서 Prometheus 지표 지원을 테스트하기 위해 다음과 같은 컨테이너화된 워크로드 중 하나 이상을 설정할 수 있습니다. Prometheus가 지원되는 CloudWatch 에이전트는 이러한 각 워크로드에서 지표를 자동으로 수집합니다. 기본적으로 수집되는 지표를 보려면 [CloudWatch 에이전트가 수집하는 Prometheus 지표](ContainerInsights-Prometheus-metrics.md) 단원을 참조하세요.

**Topics**
+ [Amazon ECS 클러스터의 App Mesh 워크로드 샘플](ContainerInsights-Prometheus-Sample-Workloads-ECS-appmesh.md)
+ [Amazon ECS 클러스터의 Java/JMX 워크로드 샘플](ContainerInsights-Prometheus-Sample-Workloads-ECS-javajmx.md)
+ [Amazon ECS 클러스터의 NGINX 워크로드 샘플](ContainerInsights-Prometheus-Setup-nginx-ecs.md)
+ [Amazon ECS 클러스터의 NGINX Plus 워크로드 샘플](ContainerInsights-Prometheus-Setup-nginx-plus-ecs.md)
+ [새로운 Prometheus 스크레이프 대상을 추가하기 위한 튜토리얼: Amazon ECS의 Memcached](ContainerInsights-Prometheus-Setup-memcached-ecs.md)
+ [Amazon OSS Fargate의 Redis Prometheus 지표 스크레이핑 자습서](ContainerInsights-Prometheus-Setup-redis-ecs.md)

# Amazon ECS 클러스터의 App Mesh 워크로드 샘플
<a name="ContainerInsights-Prometheus-Sample-Workloads-ECS-appmesh"></a>

Amazon ECS의 Prometheus 워크로드 샘플에서 지표를 수집하려면 클러스터에서 Container Insights를 실행 중이어야 합니다. Container Insights 설치에 대한 자세한 내용은 [Amazon ECS에서 Container Insights 설정](deploy-container-insights-ECS.md) 단원을 참조하세요.

먼저, 이 [시연](https://github.com/aws/aws-app-mesh-examples/tree/main/examples/apps/colorapp#app-mesh-walkthrough-deploy-the-color-app-on-ecs)에 따라 Amazon ECS 클러스터에 샘플 컬러 앱을 배포합니다. 완료하면 포트 9901에 App Mesh Prometheus 지표가 노출됩니다.

다음으로, 다음 단계에 따라 컬러 앱을 설치한 동일한 Amazon ECS 클러스터에 Prometheus 모니터링이 포함된 CloudWatch 에이전트를 설치합니다. 이 단원의 단계에서는 브리지 네트워크 모드에서 CloudWatch 에이전트를 설치합니다.

시연에서 설정한 환경 변수인 `ENVIRONMENT_NAME`, `AWS_PROFILE`, `AWS_DEFAULT_REGION`은 다음 단계에서도 사용됩니다.

**테스트를 위해 Prometheus 모니터링이 포함된 CloudWatch 에이전트를 설치하려면**

1. 다음 명령을 입력하여 CloudFormation 템플릿을 다운로드합니다.

   ```
   curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/ecs-task-definition-templates/deployment-mode/replica-service/cwagent-prometheus/cloudformation-quickstart/cwagent-ecs-prometheus-metric-for-bridge-host.yaml
   ```

1. 다음 명령을 입력하여 네트워크 모드를 설정합니다.

   ```
   export ECS_CLUSTER_NAME=${ENVIRONMENT_NAME}
   export ECS_NETWORK_MODE=bridge
   ```

1. 다음 명령을 입력하여 CloudFormation 스택을 생성합니다.

   ```
   aws cloudformation create-stack --stack-name CWAgent-Prometheus-ECS-${ECS_CLUSTER_NAME}-EC2-${ECS_NETWORK_MODE} \
       --template-body file://cwagent-ecs-prometheus-metric-for-bridge-host.yaml \
       --parameters ParameterKey=ECSClusterName,ParameterValue=${ECS_CLUSTER_NAME} \
                    ParameterKey=CreateIAMRoles,ParameterValue=True \
                    ParameterKey=ECSNetworkMode,ParameterValue=${ECS_NETWORK_MODE} \
                    ParameterKey=TaskRoleName,ParameterValue=CWAgent-Prometheus-TaskRole-${ECS_CLUSTER_NAME} \
                    ParameterKey=ExecutionRoleName,ParameterValue=CWAgent-Prometheus-ExecutionRole-${ECS_CLUSTER_NAME} \
       --capabilities CAPABILITY_NAMED_IAM \
       --region ${AWS_DEFAULT_REGION} \
       --profile ${AWS_PROFILE}
   ```

1. (선택 사항) CloudFormation 스택이 생성되면 `CREATE_COMPLETE` 메시지가 표시됩니다. 해당 메시지가 표시되기 전에 상태를 확인하려면 다음 명령을 입력합니다.

   ```
   aws cloudformation describe-stacks \
   --stack-name CWAgent-Prometheus-ECS-${ECS_CLUSTER_NAME}-EC2-${ECS_NETWORK_MODE} \
   --query 'Stacks[0].StackStatus' \
   --region ${AWS_DEFAULT_REGION} \
   --profile ${AWS_PROFILE}
   ```

**문제 해결**

시연 단계에서는 jq를 사용하여 AWS CLI의 출력 결과를 구문 분석합니다. jq 설치에 대한 자세한 내용은 [jq](https://stedolan.github.io/jq/)를 참조하세요. jq가 올바르게 구문 분석할 수 있도록 다음 명령을 사용하여 AWS CLI의 기본 출력 형식을 JSON으로 설정합니다.

```
$ aws configure
```

[기본 출력 형식(`Default output format`)] 응답에 **json**을 입력합니다.

## Prometheus 모니터링이 포함된 CloudWatch 에이전트 제거
<a name="ContainerInsights-Prometheus-Sample-Workloads-ECS-appmesh-uninstall"></a>

테스트를 마쳤으면 다음 명령을 입력하여 CloudFormation 스택을 삭제함으로써 CloudWatch 에이전트를 제거합니다.

```
aws cloudformation delete-stack \
--stack-name CWAgent-Prometheus-ECS-${ECS_CLUSTER_NAME}-EC2-${ECS_NETWORK_MODE} \
--region ${AWS_DEFAULT_REGION} \
--profile ${AWS_PROFILE}
```

# Amazon ECS 클러스터의 Java/JMX 워크로드 샘플
<a name="ContainerInsights-Prometheus-Sample-Workloads-ECS-javajmx"></a>

JMX Exporter는 JMX mBeans를 스크레이프하여 노출할 수 있는 공식 Prometheus 익스포터입니다. 자세한 내용은 [prometheus/jmx\$1exporter](https://github.com/prometheus/jmx_exporter)를 참조하세요.

Prometheus가 지원되는 CloudWatch 에이전트는 Amazon ECS 클러스터의 서비스 검색 구성을 기반으로 Java/JMX Prometheus 지표를 스크레이프합니다. 지표를 다른 포트 또는 metrics\$1path에 노출하도록 JMX Exporter를 구성할 수 있습니다. 포트 또는 경로를 변경하는 경우 CloudWatch 에이전트 구성의 기본 `ecs_service_discovery` 섹션을 업데이트하세요.

Amazon ECS의 Prometheus 워크로드 샘플에서 지표를 수집하려면 클러스터에서 Container Insights를 실행 중이어야 합니다. Container Insights 설치에 대한 자세한 내용은 [Amazon ECS에서 Container Insights 설정](deploy-container-insights-ECS.md) 단원을 참조하세요.

**Amazon ECS 클러스터의 Java/JMX 샘플 워크로드를 설치하려면**

1. 이 단원의 절차에 따라 Docker 이미지를 생성합니다.
   + [예: Prometheus 지표가 있는 Java Jar 애플리케이션 Docker 이미지](ContainerInsights-Prometheus-Sample-Workloads-javajmx.md#ContainerInsights-Prometheus-Sample-Workloads-javajmx-jar)
   + [예: Prometheus 지표가 있는 Apache Tomcat Docker 이미지](ContainerInsights-Prometheus-Sample-Workloads-javajmx.md#ContainerInsights-Prometheus-Sample-Workloads-javajmx-tomcat)

1. Amazon ECS 태스크 정의 파일에서 다음과 같은 두 Docker 레이블을 지정합니다. 그러면 클러스터에서 태스크 정의를 Amazon ECS 서비스 또는 Amazon ECS 태스크로 실행할 수 있습니다.
   + `ECS_PROMETHEUS_EXPORTER_PORT`를 Prometheus 지표가 노출되는 containerPort를 가리키도록 설정합니다.
   + `Java_EMF_Metrics`를 `true`으로 설정합니다. CloudWatch 에이전트는 이 플래그를 사용하여 로그 이벤트에 임베디드 지표 형식을 생성합니다.

   다음은 예제입니다.

   ```
   {
     "family": "workload-java-ec2-bridge",
     "taskRoleArn": "{{task-role-arn}}",
     "executionRoleArn": "{{execution-role-arn}}",
     "networkMode": "bridge",
     "containerDefinitions": [
       {
         "name": "tomcat-prometheus-workload-java-ec2-bridge-dynamic-port",
         "image": "your_docker_image_tag_for_tomcat_with_prometheus_metrics",
         "portMappings": [
           {
             "hostPort": 0,
             "protocol": "tcp",
             "containerPort": 9404
           }
         ],
         "dockerLabels": {
           "ECS_PROMETHEUS_EXPORTER_PORT": "9404",
           "Java_EMF_Metrics": "true"
         }
       }
     ],
     "requiresCompatibilities": [
       "EC2"  ],
     "cpu": "256",
     "memory": "512"
     }
   ```

CloudFormation 템플릿에서 CloudWatch 에이전트의 기본 설정은 Docker 레이블 기반 서비스 검색과 태스크 정의 ARN 기반 서비스 검색을 모두 사용 설정합니다. 이러한 기본 설정을 보려면 [CloudWatch 에이전트 YAML 구성 파일](https://github.com/aws-samples/amazon-cloudwatch-container-insights/blob/latest/ecs-task-definition-templates/deployment-mode/replica-service/cwagent-prometheus/cloudformation-quickstart/cwagent-ecs-prometheus-metric-for-bridge-host.yaml#L65)의 65번 코드 줄을 참조하세요. `ECS_PROMETHEUS_EXPORTER_PORT` 레이블이 있는 컨테이너는 Prometheus 스크레이핑에 대해 지정된 컨테이너 포트를 기반으로 자동 검색됩니다.

또한 CloudWatch 에이전트의 기본 설정에는 동일한 파일의 112번 코드 줄에서 찾아볼 수 있는 Java/JMX의 `metric_declaration` 설정도 있습니다. 대상 컨테이너의 모든 Docker 레이블은 Prometheus 지표의 레이블로 추가되고 CloudWatch Logs에 전송됩니다. `Java_EMF_Metrics=“true”`의 Docker 레이블이 있는 Java/JMX 컨테이너의 경우 임베디드 지표 형식이 생성됩니다.

# Amazon ECS 클러스터의 NGINX 워크로드 샘플
<a name="ContainerInsights-Prometheus-Setup-nginx-ecs"></a>

NGINX Prometheus Exporter는 NGINX 데이터를 Prometheus 지표로 스크레이프하고 노출할 수 있습니다. 이 예에서는 Amazon ECS의 NGINX 역방향 프록시 서비스와 함께 Exporter를 사용합니다.

NGINX Prometheus Exporter에 대한 자세한 내용은 Github의 [nginx-prometheus-exporter](https://github.com/nginxinc/nginx-prometheus-exporter)를 참조하세요. NGINX 역방향 프록시에 대한 자세한 내용은 Github의 [ecs-nginx-reverse-proxy](https://github.com/awslabs/ecs-nginx-reverse-proxy)를 참조하세요.

Prometheus가 지원되는 CloudWatch 에이전트는 Amazon ECS 클러스터의 서비스 검색 구성을 기반으로 NGINX Prometheus 지표를 스크레이프합니다. 지표를 다른 포트 또는 경로에 노출하도록 NGINX Prometheus Exporter를 구성할 수 있습니다. 포트 또는 경로를 변경하는 경우 CloudWatch 에이전트 구성 파일의 `ecs_service_discovery` 섹션을 업데이트하세요.

## Amazon ECS 클러스터의 NGINX 역방향 프록시 샘플 워크로드 설치
<a name="ContainerInsights-Prometheus-nginx-ecs-setup"></a>

다음 단계에 따라 NGINX 역방향 프록시 샘플 워크로드를 설치합니다.

### Docker 이미지 생성
<a name="ContainerInsights-Prometheus-nginx-ecs-setup-docker"></a>

**NGINX 역방향 프록시 샘플 워크로드의 Docker 이미지를 생성하려면**

1. NGINX 역방향 프록시 리포지토리에서 다음 폴더를 다운로드합니다. [ https://github.com/awslabs/ecs-nginx-reverse-proxy/tree/master/reverse-proxy/](https://github.com/awslabs/ecs-nginx-reverse-proxy/tree/master/reverse-proxy/)

1. `app` 디렉터리를 찾아 해당 디렉터리에서 이미지를 구축합니다.

   ```
   docker build -t web-server-app ./path-to-app-directory
   ```

1. NGINX용 사용자 지정 이미지를 구축합니다. 먼저, 다음과 같은 두 파일이 포함된 디렉터리를 만듭니다.
   + 샘플 Dockerfile:

     ```
     FROM nginx
     COPY nginx.conf /etc/nginx/nginx.conf
     ```
   + [https://github.com/awslabs/ecs-nginx-reverse-proxy/tree/master/reverse-proxy/](https://github.com/awslabs/ecs-nginx-reverse-proxy/tree/master/reverse-proxy/)에서 수정한 `nginx.conf` 파일:

     ```
     events {
       worker_connections 768;
     }
     
     http {
       # Nginx will handle gzip compression of responses from the app server
       gzip on;
       gzip_proxied any;
       gzip_types text/plain application/json;
       gzip_min_length 1000;
     
       server{
         listen 8080;
         location /stub_status {
             stub_status   on;
         }
       }
     
       server {
         listen 80;
     
         # Nginx will reject anything not matching /api
         location /api {
           # Reject requests with unsupported HTTP method
           if ($request_method !~ ^(GET|POST|HEAD|OPTIONS|PUT|DELETE)$) {
             return 405;
           }
     
           # Only requests matching the whitelist expectations will
           # get sent to the application server
           proxy_pass http://app:3000;
           proxy_http_version 1.1;
           proxy_set_header Upgrade $http_upgrade;
           proxy_set_header Connection 'upgrade';
           proxy_set_header Host $host;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_cache_bypass $http_upgrade;
         }
       }
     }
     ```
**참고**  
`nginx-prometheus-exporter`가 지표를 스크레이프하도록 구성된 동일한 포트에서 `stub_status`를 사용하도록 설정해야 합니다. 태스크 정의 예에서 `nginx-prometheus-exporter`는 포트 8080에서 지표를 스크레이프하도록 구성됩니다.

1. 새 디렉터리의 파일에서 이미지를 구축합니다.

   ```
   docker build -t nginx-reverse-proxy ./path-to-your-directory
   ```

1. 나중에 사용할 수 있도록 새 이미지를 이미지 리포지토리에 업로드합니다.

### Amazon ECS에서 NGINX 및 웹 서버 앱을 실행하는 태스크 정의 생성
<a name="ContainerInsights-Prometheus-nginx-ecs-setup-task"></a>

다음으로, 태스크 정의를 설정합니다.

이 태스크 정의를 사용하면 NGINX Prometheus 지표를 수집하고 내보낼 수 있습니다. NGINX 컨테이너는 앱의 입력을 추적하고, `nginx.conf`에 설정된 대로 해당 데이터를 포트 8080에 노출합니다. NGINX Prometheus Exporter 컨테이너는 이러한 지표를 스크레이프하며 CloudWatch에서 사용할 수 있도록 포트 9113에 게시합니다.

**NGINX 샘플 Amazon ECS 워크로드의 태스크 정의를 설정하려면**

1. 다음 내용이 포함된 태스크 정의 JSON 파일을 생성합니다. *your-customized-nginx-iamge*를 사용자 지정 NGINX 이미지의 이미지 URI로 바꾸고 *your-web-server-app-image*를 웹 서버 앱 이미지의 이미지 URI로 바꿉니다.

   ```
   {
     "containerDefinitions": [
       {
         "name": "nginx",
         "image": "your-customized-nginx-image",
         "memory": 256,
         "cpu": 256,
         "essential": true,
         "portMappings": [
           {
             "containerPort": 80,
             "protocol": "tcp"
           }
         ],
         "links": [
           "app"
         ]
       },
       {
         "name": "app",
         "image": "your-web-server-app-image",
         "memory": 256,
         "cpu": 256,
         "essential": true
       },
       {
         "name": "nginx-prometheus-exporter",
         "image": "docker.io/nginx/nginx-prometheus-exporter:0.8.0",
         "memory": 256,
         "cpu": 256,
         "essential": true,
         "command": [
           "-nginx.scrape-uri",
           "http://nginx:8080/stub_status"
       ],
       "links":[
         "nginx"
       ],
         "portMappings":[
           {
             "containerPort": 9113,
             "protocol": "tcp"
           }
         ]
       }
     ],
     "networkMode": "bridge",
     "placementConstraints": [],
     "family": "nginx-sample-stack"
   }
   ```

1. 다음 명령을 입력하여 태스크 정의를 등록합니다.

   ```
   aws ecs register-task-definition --cli-input-json file://path-to-your-task-definition-json
   ```

1. 다음 명령을 입력하여 태스크를 실행할 서비스를 생성합니다.

   서비스 이름을 변경해서는 안 됩니다. 태스크를 시작한 서비스의 이름 패턴을 사용해 태스크를 검색하는 구성을 사용하여 CloudWatch 에이전트 서비스를 실행합니다. 예를 들어 CloudWatch 에이전트가 이 명령으로 시작된 태스크를 찾도록 하려면 `sd_service_name_pattern` 값을 `^nginx-service$`로 지정할 수 있습니다. 다음 단원에서 더 자세히 설명합니다.

   ```
   aws ecs create-service \
    --cluster your-cluster-name \
    --service-name nginx-service \
    --task-definition nginx-sample-stack:1 \
    --desired-count 1
   ```

### NGINX Prometheus 지표를 스크레이프하도록 CloudWatch 에이전트 구성
<a name="ContainerInsights-Prometheus-nginx-ecs-setup-agent"></a>

마지막 단계는 NGINX 지표를 스크레이프하도록 CloudWatch 에이전트를 구성하는 것입니다. 이 예에서 CloudWatch 에이전트는 서비스 이름 패턴과 Exporter가 NGINX에 대한 Prometheus 지표를 노출하는 포트 9113을 통해 태스크를 검색합니다. 태스크를 검색하고 지표를 사용할 수 있게 되면 CloudWatch 에이전트는 수집된 지표를 로그 스트림 **nginx-prometheus-exporter**에 게시하기 시작합니다.

**NGINX 지표를 스크레이프하도록 CloudWatch 에이전트를 구성하려면**

1. 다음 명령을 입력하여 필요한 YAML 파일의 최신 버전을 다운로드합니다.

   ```
   curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/ecs-task-definition-templates/deployment-mode/replica-service/cwagent-prometheus/cloudformation-quickstart/cwagent-ecs-prometheus-metric-for-bridge-host.yaml
   ```

1. 텍스트 편집기를 사용하여 파일을 열고 `resource:CWAgentConfigSSMParameter` 섹션에서 `value` 키의 전체 CloudWatch 에이전트 구성을 찾습니다. 그런 다음, `ecs_service_discovery` 섹션에서 다음 `service_name_list_for_tasks` 섹션을 추가합니다.

   ```
   "service_name_list_for_tasks": [
     {
       "sd_job_name": "nginx-prometheus-exporter",
       "sd_metrics_path": "/metrics",
       "sd_metrics_ports": "9113",
       "sd_service_name_pattern": "^nginx-service$"
      }
   ],
   ```

1. 동일한 파일의 `metric_declaration` 섹션에 다음 섹션을 추가하여 NGINX 지표를 허용합니다. 이때 기존의 들여쓰기 패턴을 따라야 합니다.

   ```
   {
     "source_labels": ["job"],
     "label_matcher": ".*nginx.*",
     "dimensions": [["ClusterName", "TaskDefinitionFamily", "ServiceName"]],
     "metric_selectors": [
       "^nginx_.*$"
     ]
   },
   ```

1. 이 클러스터에 CloudWatch 에이전트를 아직 배포하지 않은 경우 8단계로 건너뜁니다.

   AWS CloudFormation을 사용하여 Amazon ECS 클러스터에 CloudWatch 에이전트를 이미 배포한 경우 다음 명령을 입력하여 변경 세트를 생성할 수 있습니다.

   ```
   ECS_CLUSTER_NAME=your_cluster_name
   AWS_REGION=your_aws_region
   ECS_NETWORK_MODE=bridge
   CREATE_IAM_ROLES=True
   ECS_TASK_ROLE_NAME=your_selected_ecs_task_role_name
   ECS_EXECUTION_ROLE_NAME=your_selected_ecs_execution_role_name
   
   aws cloudformation create-change-set --stack-name CWAgent-Prometheus-ECS-${ECS_CLUSTER_NAME}-EC2-${ECS_NETWORK_MODE} \
       --template-body file://cwagent-ecs-prometheus-metric-for-bridge-host.yaml \
       --parameters ParameterKey=ECSClusterName,ParameterValue=$ECS_CLUSTER_NAME \
                    ParameterKey=CreateIAMRoles,ParameterValue=$CREATE_IAM_ROLES \
                    ParameterKey=ECSNetworkMode,ParameterValue=$ECS_NETWORK_MODE \
                    ParameterKey=TaskRoleName,ParameterValue=$ECS_TASK_ROLE_NAME \
                    ParameterKey=ExecutionRoleName,ParameterValue=$ECS_EXECUTION_ROLE_NAME \
       --capabilities CAPABILITY_NAMED_IAM \
       --region $AWS_REGION \
       --change-set-name nginx-scraping-support
   ```

1. CloudFormation 콘솔([https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/))을 엽니다.

1. 새로 생성한 변경 세트인 **nginx-scraping-support**를 검토합니다. **CWAgentConfigSSMParameter** 리소스에 적용된 변경 사항 하나가 표시되어야 합니다. 변경 세트를 실행하고 다음 명령을 입력하여 CloudWatch 에이전트 태스크를 다시 시작합니다.

   ```
   aws ecs update-service --cluster $ECS_CLUSTER_NAME \
   --desired-count 0 \
   --service cwagent-prometheus-replica-service-EC2-$ECS_NETWORK_MODE \
   --region $AWS_REGION
   ```

1. 10초 정도 기다린 후 다음 명령을 입력합니다.

   ```
   aws ecs update-service --cluster $ECS_CLUSTER_NAME \
   --desired-count 1 \
   --service cwagent-prometheus-replica-service-EC2-$ECS_NETWORK_MODE \
   --region $AWS_REGION
   ```

1. 클러스터에 처음으로 Prometheus 지표 수집이 포함된 CloudWatch 에이전트를 설치하는 경우 다음 명령을 입력합니다.

   ```
   ECS_CLUSTER_NAME=your_cluster_name
   AWS_REGION=your_aws_region
   ECS_NETWORK_MODE=bridge
   CREATE_IAM_ROLES=True
   ECS_TASK_ROLE_NAME=your_selected_ecs_task_role_name
   ECS_EXECUTION_ROLE_NAME=your_selected_ecs_execution_role_name
   
   aws cloudformation create-stack --stack-name CWAgent-Prometheus-ECS-${ECS_CLUSTER_NAME}-EC2-${ECS_NETWORK_MODE} \
       --template-body file://cwagent-ecs-prometheus-metric-for-bridge-host.yaml \
       --parameters ParameterKey=ECSClusterName,ParameterValue=$ECS_CLUSTER_NAME \
                    ParameterKey=CreateIAMRoles,ParameterValue=$CREATE_IAM_ROLES \
                    ParameterKey=ECSNetworkMode,ParameterValue=$ECS_NETWORK_MODE \
                    ParameterKey=TaskRoleName,ParameterValue=$ECS_TASK_ROLE_NAME \
                    ParameterKey=ExecutionRoleName,ParameterValue=$ECS_EXECUTION_ROLE_NAME \
       --capabilities CAPABILITY_NAMED_IAM \
       --region $AWS_REGION
   ```

## NGINX 지표 및 로그 보기
<a name="ContainerInsights-Prometheus-Setup-nginx-view"></a>

이제 수집 중인 NGINX 지표를 볼 수 있습니다.

**샘플 NGINX 워크로드에 대한 지표를 보려면**

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

1. 클러스터가 실행되고 있는 리전에서 왼쪽 탐색 창의 [**지표(Metrics)**]를 선택합니다. **ContainerInsights/Prometheus** 네임스페이스를 찾아 지표를 확인합니다.

1. CloudWatch Logs 이벤트를 보려면 탐색 창에서 [**로그 그룹(Log groups)**]을 선택합니다. 이벤트는 로그 그룹 **/aws/containerinsights/*your\$1cluster\$1name*/prometheus**의 로그 스트림 *nginx-prometheus-exporter*에 있습니다.

# Amazon ECS 클러스터의 NGINX Plus 워크로드 샘플
<a name="ContainerInsights-Prometheus-Setup-nginx-plus-ecs"></a>

NGINX Plus는 NGINX의 상용 버전입니다. 사용하려면 라이선스가 있어야 합니다. 자세한 내용은 [NGINX Plus](https://www.nginx.com/products/nginx/)를 참조하세요.

NGINX Prometheus Exporter는 NGINX 데이터를 Prometheus 지표로 스크레이프하고 노출할 수 있습니다. 이 예에서는 Amazon ECS의 NGINX Plus 역방향 프록시 서비스와 함께 Exporter를 사용합니다.

NGINX Prometheus Exporter에 대한 자세한 내용은 Github의 [nginx-prometheus-exporter](https://github.com/nginxinc/nginx-prometheus-exporter)를 참조하세요. NGINX 역방향 프록시에 대한 자세한 내용은 Github의 [ecs-nginx-reverse-proxy](https://github.com/awslabs/ecs-nginx-reverse-proxy)를 참조하세요.

Prometheus가 지원되는 CloudWatch 에이전트는 Amazon ECS 클러스터의 서비스 검색 구성을 기반으로 NGINX Plus Prometheus 지표를 스크레이프합니다. 지표를 다른 포트 또는 경로에 노출하도록 NGINX Prometheus Exporter를 구성할 수 있습니다. 포트 또는 경로를 변경하는 경우 CloudWatch 에이전트 구성 파일의 `ecs_service_discovery` 섹션을 업데이트하세요.

## Amazon ECS 클러스터의 NGINX Plus 역방향 프록시 샘플 워크로드 설치
<a name="ContainerInsights-Prometheus-nginx-plus-ecs-setup"></a>

다음 단계에 따라 NGINX 역방향 프록시 샘플 워크로드를 설치합니다.

### Docker 이미지 생성
<a name="ContainerInsights-Prometheus-nginx-plus-ecs-setup-docker"></a>

**NGINX Plus 역방향 프록시 샘플 워크로드의 Docker 이미지를 생성하려면**

1. NGINX 역방향 프록시 리포지토리에서 다음 폴더를 다운로드합니다. [ https://github.com/awslabs/ecs-nginx-reverse-proxy/tree/master/reverse-proxy/](https://github.com/awslabs/ecs-nginx-reverse-proxy/tree/master/reverse-proxy/)

1. `app` 디렉터리를 찾아 해당 디렉터리에서 이미지를 구축합니다.

   ```
   docker build -t web-server-app ./path-to-app-directory
   ```

1. NGINX Plus용 사용자 지정 이미지를 구축합니다. NGINX Plus용 이미지를 구축하기 전에 먼저, `nginx-repo.key`라는 키와 라이선스가 있는 NGINX Plus의 SSL 인증서인 `nginx-repo.crt`를 가져와야 합니다. 디렉터리를 만들어서 그 안에 `nginx-repo.key` 및 `nginx-repo.crt` 파일을 저장합니다.

   방금 만든 디렉터리에서 다음과 같은 두 파일을 생성합니다.
   + 다음 내용이 포함된 샘플 Dockerfile: 이 Docker 파일은 [https://docs.nginx.com/nginx/admin-guide/installing-nginx/installing-nginx-docker/\$1docker\$1plus\$1image](https://docs.nginx.com/nginx/admin-guide/installing-nginx/installing-nginx-docker/#docker_plus_image)에서 제공한 샘플 파일에서 채택한 것입니다. 중요한 변경 사항은 다음 단계에서 생성될 `nginx.conf`라는 별도의 파일을 로드한다는 것입니다.

     ```
     FROM debian:buster-slim
     
     LABEL maintainer="NGINX Docker Maintainers <docker-maint@nginx.com>“
     
     # Define NGINX versions for NGINX Plus and NGINX Plus modules
     # Uncomment this block and the versioned nginxPackages block in the main RUN
     # instruction to install a specific release
     # ENV NGINX_VERSION 21
     # ENV NJS_VERSION 0.3.9
     # ENV PKG_RELEASE 1~buster
     
     # Download certificate and key from the customer portal (https://cs.nginx.com (https://cs.nginx.com/))
     # and copy to the build context
     COPY nginx-repo.crt /etc/ssl/nginx/
     COPY nginx-repo.key /etc/ssl/nginx/
     # COPY nginx.conf /etc/ssl/nginx/nginx.conf
     
     RUN set -x \
     # Create nginx user/group first, to be consistent throughout Docker variants
     && addgroup --system --gid 101 nginx \
     && adduser --system --disabled-login --ingroup nginx --no-create-home --home /nonexistent --gecos "nginx user" --shell /bin/false --uid 101 nginx \
     && apt-get update \
     && apt-get install --no-install-recommends --no-install-suggests -y ca-certificates gnupg1 \
     && \
     NGINX_GPGKEY=573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62; \
     found=''; \
     for server in \
     ha.pool.sks-keyservers.net (http://ha.pool.sks-keyservers.net/) \
     hkp://keyserver.ubuntu.com:80 \
     hkp://p80.pool.sks-keyservers.net:80 \
     pgp.mit.edu (http://pgp.mit.edu/) \
     ; do \
     echo "Fetching GPG key $NGINX_GPGKEY from $server"; \
     apt-key adv --keyserver "$server" --keyserver-options timeout=10 --recv-keys "$NGINX_GPGKEY" && found=yes && break; \
     done; \
     test -z "$found" && echo >&2 "error: failed to fetch GPG key $NGINX_GPGKEY" && exit 1; \
     apt-get remove --purge --auto-remove -y gnupg1 && rm -rf /var/lib/apt/lists/* \
     # Install the latest release of NGINX Plus and/or NGINX Plus modules
     # Uncomment individual modules if necessary
     # Use versioned packages over defaults to specify a release
     && nginxPackages=" \
     nginx-plus \
     # nginx-plus=${NGINX_VERSION}-${PKG_RELEASE} \
     # nginx-plus-module-xslt \
     # nginx-plus-module-xslt=${NGINX_VERSION}-${PKG_RELEASE} \
     # nginx-plus-module-geoip \
     # nginx-plus-module-geoip=${NGINX_VERSION}-${PKG_RELEASE} \
     # nginx-plus-module-image-filter \
     # nginx-plus-module-image-filter=${NGINX_VERSION}-${PKG_RELEASE} \
     # nginx-plus-module-perl \
     # nginx-plus-module-perl=${NGINX_VERSION}-${PKG_RELEASE} \
     # nginx-plus-module-njs \
     # nginx-plus-module-njs=${NGINX_VERSION}+${NJS_VERSION}-${PKG_RELEASE} \
     " \
     && echo "Acquire::https::plus-pkgs.nginx.com::Verify-Peer \"true\";" >> /etc/apt/apt.conf.d/90nginx \
     && echo "Acquire::https::plus-pkgs.nginx.com::Verify-Host \"true\";" >> /etc/apt/apt.conf.d/90nginx \
     && echo "Acquire::https::plus-pkgs.nginx.com::SslCert \"/etc/ssl/nginx/nginx-repo.crt\";" >> /etc/apt/apt.conf.d/90nginx \
     && echo "Acquire::https::plus-pkgs.nginx.com::SslKey \"/etc/ssl/nginx/nginx-repo.key\";" >> /etc/apt/apt.conf.d/90nginx \
     && printf "deb https://plus-pkgs.nginx.com/debian buster nginx-plus\n" > /etc/apt/sources.list.d/nginx-plus.list \
     && apt-get update \
     && apt-get install --no-install-recommends --no-install-suggests -y \
     $nginxPackages \
     gettext-base \
     curl \
     && apt-get remove --purge --auto-remove -y && rm -rf /var/lib/apt/lists/* /etc/apt/sources.list.d/nginx-plus.list \
     && rm -rf /etc/apt/apt.conf.d/90nginx /etc/ssl/nginx
     
     # Forward request logs to Docker log collector
     RUN ln -sf /dev/stdout /var/log/nginx/access.log \
     && ln -sf /dev/stderr /var/log/nginx/error.log
     
     COPY nginx.conf /etc/nginx/nginx.conf
     
     EXPOSE 80
     
     STOPSIGNAL SIGTERM
     
     CMD ["nginx", "-g", "daemon off;"]
     ```
   + [https://github.com/awslabs/ecs-nginx-reverse-proxy/tree/master/reverse-proxy/nginx](https://github.com/awslabs/ecs-nginx-reverse-proxy/tree/master/reverse-proxy/nginx)에서 수정한 `nginx.conf` 파일

     ```
     events {
       worker_connections 768;
     }
     
     http {
       # Nginx will handle gzip compression of responses from the app server
       gzip on;
       gzip_proxied any;
       gzip_types text/plain application/json;
       gzip_min_length 1000;
     
       upstream backend {
         zone name 10m;
         server app:3000    weight=2;
         server app2:3000    weight=1;
       }
     
       server{
         listen 8080;
         location /api {
           api write=on;
         }
       }
     
       match server_ok {
         status 100-599;
       }
     
       server {
         listen 80;
         status_zone zone;
         # Nginx will reject anything not matching /api
         location /api {
           # Reject requests with unsupported HTTP method
           if ($request_method !~ ^(GET|POST|HEAD|OPTIONS|PUT|DELETE)$) {
             return 405;
           }
     
           # Only requests matching the whitelist expectations will
           # get sent to the application server
           proxy_pass http://backend;
           health_check uri=/lorem-ipsum match=server_ok;
           proxy_http_version 1.1;
           proxy_set_header Upgrade $http_upgrade;
           proxy_set_header Connection 'upgrade';
           proxy_set_header Host $host;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_cache_bypass $http_upgrade;
         }
       }
     }
     ```

1. 새 디렉터리의 파일에서 이미지를 구축합니다.

   ```
   docker build -t nginx-plus-reverse-proxy ./path-to-your-directory
   ```

1. 나중에 사용할 수 있도록 새 이미지를 이미지 리포지토리에 업로드합니다.

### Amazon ECS에서 NGINX Plus 및 웹 서버 앱을 실행하는 태스크 정의 생성
<a name="ContainerInsights-Prometheus-nginx-plus-ecs-setup-task"></a>

다음으로, 태스크 정의를 설정합니다.

이 태스크 정의를 사용하면 NGINX Plus Prometheus 지표를 수집하고 내보낼 수 있습니다. NGINX 컨테이너는 앱의 입력을 추적하고, `nginx.conf`에 설정된 대로 해당 데이터를 포트 8080에 노출합니다. NGINX Prometheus Exporter 컨테이너는 이러한 지표를 스크레이프하며 CloudWatch에서 사용할 수 있도록 포트 9113에 게시합니다.

**NGINX 샘플 Amazon ECS 워크로드의 태스크 정의를 설정하려면**

1. 다음 내용이 포함된 태스크 정의 JSON 파일을 생성합니다. *your-customized-nginx-plus-image*를 사용자 지정 NGINX Plus 이미지의 이미지 URI로 바꾸고 *your-web-server-app-image*를 웹 서버 앱 이미지의 이미지 URI로 바꿉니다.

   ```
   {
     "containerDefinitions": [
       {
         "name": "nginx",
         "image": "your-customized-nginx-plus-image",
         "memory": 256,
         "cpu": 256,
         "essential": true,
         "portMappings": [
           {
             "containerPort": 80,
             "protocol": "tcp"
           }
         ],
         "links": [
           "app",
           "app2"
         ]
       },
       {
         "name": "app",
         "image": "your-web-server-app-image",
         "memory": 256,
         "cpu": 128,
         "essential": true
       },
       {
         "name": "app2",
         "image": "your-web-server-app-image",
         "memory": 256,
         "cpu": 128,
         "essential": true
       },
       {
         "name": "nginx-prometheus-exporter",
         "image": "docker.io/nginx/nginx-prometheus-exporter:0.8.0",
         "memory": 256,
         "cpu": 256,
         "essential": true,
         "command": [
           "-nginx.plus",
           "-nginx.scrape-uri",
            "http://nginx:8080/api"
       ],
       "links":[
         "nginx"
       ],
         "portMappings":[
           {
             "containerPort": 9113,
             "protocol": "tcp"
           }
         ]
       }
     ],
     "networkMode": "bridge",
     "placementConstraints": [],
     "family": "nginx-plus-sample-stack"
   }
   ```

1. 태스크 정의를 등록합니다.

   ```
   aws ecs register-task-definition --cli-input-json file://path-to-your-task-definition-json
   ```

1. 다음 명령을 입력하여 태스크를 실행할 서비스를 생성합니다.

   ```
   aws ecs create-service \
    --cluster your-cluster-name \
    --service-name nginx-plus-service \
    --task-definition nginx-plus-sample-stack:1 \
    --desired-count 1
   ```

   서비스 이름을 변경해서는 안 됩니다. 태스크를 시작한 서비스의 이름 패턴을 사용해 태스크를 검색하는 구성을 사용하여 CloudWatch 에이전트 서비스를 실행합니다. 예를 들어 CloudWatch 에이전트가 이 명령으로 시작된 태스크를 찾도록 하려면 `sd_service_name_pattern` 값을 `^nginx-plus-service$`로 지정할 수 있습니다. 다음 단원에서 더 자세히 설명합니다.

### NGINX Plus Prometheus 지표를 스크레이프하도록 CloudWatch 에이전트 구성
<a name="ContainerInsights-Prometheus-nginx-plus-ecs-setup-agent"></a>

마지막 단계는 NGINX 지표를 스크레이프하도록 CloudWatch 에이전트를 구성하는 것입니다. 이 예에서 CloudWatch 에이전트는 서비스 이름 패턴과 Exporter가 NGINX에 대한 Prometheus 지표를 노출하는 포트 9113을 통해 태스크를 검색합니다. 태스크를 검색하고 지표를 사용할 수 있게 되면 CloudWatch 에이전트는 수집된 지표를 로그 스트림 **nginx-prometheus-exporter**에 게시하기 시작합니다.

**NGINX 지표를 스크레이프하도록 CloudWatch 에이전트를 구성하려면**

1. 다음 명령을 입력하여 필요한 YAML 파일의 최신 버전을 다운로드합니다.

   ```
   curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/ecs-task-definition-templates/deployment-mode/replica-service/cwagent-prometheus/cloudformation-quickstart/cwagent-ecs-prometheus-metric-for-bridge-host.yaml
   ```

1. 텍스트 편집기를 사용하여 파일을 열고 `resource:CWAgentConfigSSMParameter` 섹션에서 `value` 키의 전체 CloudWatch 에이전트 구성을 찾습니다. 그런 다음, `ecs_service_discovery` 섹션에서 다음 `service_name_list_for_tasks` 섹션을 추가합니다.

   ```
   "service_name_list_for_tasks": [
     {
       "sd_job_name": "nginx-plus-prometheus-exporter",
       "sd_metrics_path": "/metrics",
       "sd_metrics_ports": "9113",
       "sd_service_name_pattern": "^nginx-plus.*"
      }
   ],
   ```

1. 동일한 파일의 `metric_declaration` 섹션에 다음 섹션을 추가하여 NGINX Plus 지표를 허용합니다. 이때 기존의 들여쓰기 패턴을 따라야 합니다.

   ```
   {
     "source_labels": ["job"],
     "label_matcher": "^nginx-plus.*",
     "dimensions": [["ClusterName", "TaskDefinitionFamily", "ServiceName"]],
     "metric_selectors": [
       "^nginxplus_connections_accepted$",
       "^nginxplus_connections_active$",
       "^nginxplus_connections_dropped$",
       "^nginxplus_connections_idle$",
       "^nginxplus_http_requests_total$",
       "^nginxplus_ssl_handshakes$",
       "^nginxplus_ssl_handshakes_failed$",
       "^nginxplus_up$",
       "^nginxplus_upstream_server_health_checks_fails$"
     ]
   },
   {
     "source_labels": ["job"],
     "label_matcher": "^nginx-plus.*",
     "dimensions": [["ClusterName", "TaskDefinitionFamily", "ServiceName", "upstream"]],
     "metric_selectors": [
       "^nginxplus_upstream_server_response_time$"
     ]
   },
   {
     "source_labels": ["job"],
     "label_matcher": "^nginx-plus.*",
     "dimensions": [["ClusterName", "TaskDefinitionFamily", "ServiceName", "code"]],
     "metric_selectors": [
       "^nginxplus_upstream_server_responses$",
       "^nginxplus_server_zone_responses$"
     ]
   },
   ```

1. 이 클러스터에 CloudWatch 에이전트를 아직 배포하지 않은 경우 8단계로 건너뜁니다.

   AWS CloudFormation을 사용하여 Amazon ECS 클러스터에 CloudWatch 에이전트를 이미 배포한 경우 다음 명령을 입력하여 변경 세트를 생성할 수 있습니다.

   ```
   ECS_CLUSTER_NAME=your_cluster_name
   AWS_REGION=your_aws_region
   ECS_NETWORK_MODE=bridge
   CREATE_IAM_ROLES=True
   ECS_TASK_ROLE_NAME=your_selected_ecs_task_role_name
   ECS_EXECUTION_ROLE_NAME=your_selected_ecs_execution_role_name
   
   aws cloudformation create-change-set --stack-name CWAgent-Prometheus-ECS-${ECS_CLUSTER_NAME}-EC2-${ECS_NETWORK_MODE} \
       --template-body file://cwagent-ecs-prometheus-metric-for-bridge-host.yaml \
       --parameters ParameterKey=ECSClusterName,ParameterValue=$ECS_CLUSTER_NAME \
                    ParameterKey=CreateIAMRoles,ParameterValue=$CREATE_IAM_ROLES \
                    ParameterKey=ECSNetworkMode,ParameterValue=$ECS_NETWORK_MODE \
                    ParameterKey=TaskRoleName,ParameterValue=$ECS_TASK_ROLE_NAME \
                    ParameterKey=ExecutionRoleName,ParameterValue=$ECS_EXECUTION_ROLE_NAME \
       --capabilities CAPABILITY_NAMED_IAM \
       --region $AWS_REGION \
       --change-set-name nginx-plus-scraping-support
   ```

1. CloudFormation 콘솔([https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/))을 엽니다.

1. 새로 생성한 변경 세트인 **nginx-plus-scraping-support**를 검토합니다. **CWAgentConfigSSMParameter** 리소스에 적용된 변경 사항 하나가 표시되어야 합니다. 변경 세트를 실행하고 다음 명령을 입력하여 CloudWatch 에이전트 태스크를 다시 시작합니다.

   ```
   aws ecs update-service --cluster $ECS_CLUSTER_NAME \
   --desired-count 0 \
   --service cwagent-prometheus-replica-service-EC2-$ECS_NETWORK_MODE \
   --region $AWS_REGION
   ```

1. 10초 정도 기다린 후 다음 명령을 입력합니다.

   ```
   aws ecs update-service --cluster $ECS_CLUSTER_NAME \
   --desired-count 1 \
   --service cwagent-prometheus-replica-service-EC2-$ECS_NETWORK_MODE \
   --region $AWS_REGION
   ```

1. 클러스터에 처음으로 Prometheus 지표 수집이 포함된 CloudWatch 에이전트를 설치하는 경우 다음 명령을 입력합니다.

   ```
   ECS_CLUSTER_NAME=your_cluster_name
   AWS_REGION=your_aws_region
   ECS_NETWORK_MODE=bridge
   CREATE_IAM_ROLES=True
   ECS_TASK_ROLE_NAME=your_selected_ecs_task_role_name
   ECS_EXECUTION_ROLE_NAME=your_selected_ecs_execution_role_name
   
   aws cloudformation create-stack --stack-name CWAgent-Prometheus-ECS-${ECS_CLUSTER_NAME}-EC2-${ECS_NETWORK_MODE} \
       --template-body file://cwagent-ecs-prometheus-metric-for-bridge-host.yaml \
       --parameters ParameterKey=ECSClusterName,ParameterValue=$ECS_CLUSTER_NAME \
                    ParameterKey=CreateIAMRoles,ParameterValue=$CREATE_IAM_ROLES \
                    ParameterKey=ECSNetworkMode,ParameterValue=$ECS_NETWORK_MODE \
                    ParameterKey=TaskRoleName,ParameterValue=$ECS_TASK_ROLE_NAME \
                    ParameterKey=ExecutionRoleName,ParameterValue=$ECS_EXECUTION_ROLE_NAME \
       --capabilities CAPABILITY_NAMED_IAM \
       --region $AWS_REGION
   ```

## NGINX Plus 지표 및 로그 보기
<a name="ContainerInsights-Prometheus-Setup-nginx-plus-view"></a>

이제 수집 중인 NGINX Plus 지표를 볼 수 있습니다.

**샘플 NGINX 워크로드에 대한 지표를 보려면**

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

1. 클러스터가 실행되고 있는 리전에서 왼쪽 탐색 창의 [**지표(Metrics)**]를 선택합니다. **ContainerInsights/Prometheus** 네임스페이스를 찾아 지표를 확인합니다.

1. CloudWatch Logs 이벤트를 보려면 탐색 창에서 [**로그 그룹(Log groups)**]을 선택합니다. 이벤트는 로그 그룹 **/aws/containerinsights/*your\$1cluster\$1name*/prometheus**의 로그 스트림 *nginx-plus-prometheus-exporter*에 있습니다.

# 새로운 Prometheus 스크레이프 대상을 추가하기 위한 튜토리얼: Amazon ECS의 Memcached
<a name="ContainerInsights-Prometheus-Setup-memcached-ecs"></a>

이 튜토리얼에서는 EC2 시작 유형의 Amazon ECS 클러스터에서 샘플 Memcached 애플리케이션의 Prometheus 지표를 스크레이프하는 실습을 소개합니다. CloudWatch 에이전트는 ECS 태스크 정의 기반 서비스 검색을 통해 Memcached Prometheus Exporter 대상을 자동 검색합니다.

Memcached는 범용 분산 메모리 캐싱 시스템으로, 흔히 외부 데이터 소스(예: 데이터베이스 또는 API)를 읽어야 하는 횟수를 줄이기 위해 RAM에 데이터 및 객체를 캐싱하여 동적 데이터베이스 기반 웹 사이트의 속도를 높이는 데 사용됩니다. 자세한 내용은 [Memcached란 무엇입니까?](https://www.memcached.org/)를 참조하세요.

[memchached\$1exporter](https://github.com/prometheus/memcached_exporter)(Apache 라이선스 2.0)는 공식 Prometheus Exporter 중 하나입니다. 기본적으로 memcache\$1exporter는 `/metrics.`의 포트 0.0.0.0:9150에서 제공됩니다.

이 튜토리얼에서는 다음과 같은 두 Docker Hub 리포지토리의 Docker 이미지를 사용합니다.
+ [ Memcached](https://hub.docker.com/_/memcached?tab=description)
+ [ prom/memcached-exporter](https://hub.docker.com/r/prom/memcached-exporter/)

**사전 조건**

Amazon ECS의 Prometheus 워크로드 샘플에서 지표를 수집하려면 클러스터에서 Container Insights를 실행 중이어야 합니다. Container Insights 설치에 대한 자세한 내용은 [Amazon ECS에서 Container Insights 설정](deploy-container-insights-ECS.md) 단원을 참조하세요.

**Topics**
+ [Amazon ECS EC2 클러스터 환경 변수 설정](#ContainerInsights-Prometheus-Setup-memcached-ecs-environment)
+ [샘플 Memcached 워크로드 설치](#ContainerInsights-Prometheus-Setup-memcached-ecs-install-workload)
+ [Memcached Prometheus 지표를 스크레이프하도록 CloudWatch 에이전트 구성](#ContainerInsights-Prometheus-Setup-memcached-ecs-agent)
+ [Memcached 지표 보기](#ContainerInsights-Prometheus-ECS-memcached-view)

## Amazon ECS EC2 클러스터 환경 변수 설정
<a name="ContainerInsights-Prometheus-Setup-memcached-ecs-environment"></a>

**Amazon ECS EC2 클러스터 환경 변수를 설정하려면**

1. 아직 설치하지 않은 경우 Amazon ECS CLI를 설치합니다. 자세한 내용은 [Amazon ECS CLI 설치](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_CLI_installation.html) 단원을 참조하세요.

1. 새 Amazon ECS 클러스터 이름 및 리전을 설정합니다. 예:

   ```
   ECS_CLUSTER_NAME=ecs-ec2-memcached-tutorial
   AWS_DEFAULT_REGION=ca-central-1
   ```

1. (선택 사항) 샘플 Memcached 워크로드 및 CloudWatch 에이전트를 설치하려는 EC2 시작 유형의 Amazon ECS 클러스터가 아직 없는 경우 다음 명령을 입력하여 클러스터를 생성할 수 있습니다.

   ```
   ecs-cli up --capability-iam --size 1 \
   --instance-type t3.medium \
   --cluster $ECS_CLUSTER_NAME \
   --region $AWS_REGION
   ```

   이 명령의 예상 결과는 다음과 같습니다.

   ```
   WARN[0000] You will not be able to SSH into your EC2 instances without a key pair. 
   INFO[0000] Using recommended Amazon Linux 2 AMI with ECS Agent 1.44.4 and Docker version 19.03.6-ce 
   INFO[0001] Created cluster                               cluster=ecs-ec2-memcached-tutorial region=ca-central-1
   INFO[0002] Waiting for your cluster resources to be created... 
   INFO[0002] Cloudformation stack status                   stackStatus=CREATE_IN_PROGRESS
   INFO[0063] Cloudformation stack status                   stackStatus=CREATE_IN_PROGRESS
   INFO[0124] Cloudformation stack status                   stackStatus=CREATE_IN_PROGRESS
   VPC created: vpc-xxxxxxxxxxxxxxxxx
   Security Group created: sg-xxxxxxxxxxxxxxxxx
   Subnet created: subnet-xxxxxxxxxxxxxxxxx
   Subnet created: subnet-xxxxxxxxxxxxxxxxx
   Cluster creation succeeded.
   ```

## 샘플 Memcached 워크로드 설치
<a name="ContainerInsights-Prometheus-Setup-memcached-ecs-install-workload"></a>

**Prometheus 지표를 노출하는 샘플 Memcached 워크로드를 설치하려면**

1. 다음 명령을 입력하여 Memcached CloudFormation 템플릿을 다운로드합니다.

   ```
   curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/ecs-task-definition-templates/deployment-mode/replica-service/cwagent-prometheus/sample_traffic/memcached/memcached-traffic-sample.yaml
   ```

1. 다음 명령을 입력하여 Memcached용으로 생성할 IAM 역할 이름을 설정합니다.

   ```
   MEMCACHED_ECS_TASK_ROLE_NAME=memcached-prometheus-demo-ecs-task-role-name
   MEMCACHED_ECS_EXECUTION_ROLE_NAME=memcached-prometheus-demo-ecs-execution-role-name
   ```

1. 다음 명령을 입력하여 샘플 Memcached 워크로드를 설치합니다. 이 샘플은 `host` 네트워크 모드에서 워크로드를 설치합니다.

   ```
   MEMCACHED_ECS_NETWORK_MODE=host
   
   aws cloudformation create-stack --stack-name Memcached-Prometheus-Demo-ECS-$ECS_CLUSTER_NAME-EC2-$MEMCACHED_ECS_NETWORK_MODE \
       --template-body file://memcached-traffic-sample.yaml \
       --parameters ParameterKey=ECSClusterName,ParameterValue=$ECS_CLUSTER_NAME \
                    ParameterKey=ECSNetworkMode,ParameterValue=$MEMCACHED_ECS_NETWORK_MODE \
                    ParameterKey=TaskRoleName,ParameterValue=$MEMCACHED_ECS_TASK_ROLE_NAME \
                    ParameterKey=ExecutionRoleName,ParameterValue=$MEMCACHED_ECS_EXECUTION_ROLE_NAME \
       --capabilities CAPABILITY_NAMED_IAM \
       --region $AWS_REGION
   ```

CloudFormation 스택은 다음과 같은 네 개의 리소스를 생성합니다.
+ ECS 태스크 역할 1개
+ ECS 태스크 실행 역할 1개
+ Memcached 태스크 정의 1개
+ Memcached 서비스 1개

Memcached 태스크 정의에서는 다음과 같이 두 컨테이너가 정의됩니다.
+ 기본 컨테이너는 단순한 Memcached 애플리케이션을 실행하고 액세스를 위해 포트 11211을 엽니다.
+ 다른 컨테이너에서는 Redis OSS 내보내기 도구 프로세스를 실행하여 포트 9150에서 Prometheus 지표를 노출합니다. 이는 CloudWatch 에이전트가 검색하고 스크레이프할 컨테이너입니다.

## Memcached Prometheus 지표를 스크레이프하도록 CloudWatch 에이전트 구성
<a name="ContainerInsights-Prometheus-Setup-memcached-ecs-agent"></a>

**Memcached Prometheus 지표를 스크레이프하도록 CloudWatch 에이전트를 구성하려면**

1. 다음 명령을 입력하여 최신 버전의 `cwagent-ecs-prometheus-metric-for-awsvpc.yaml`을 다운로드합니다.

   ```
   curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/ecs-task-definition-templates/deployment-mode/replica-service/cwagent-prometheus/cloudformation-quickstart/cwagent-ecs-prometheus-metric-for-awsvpc.yaml
   ```

1. 텍스트 편집기를 사용하여 파일을 열고 `resource:CWAgentConfigSSMParameter` 섹션에서 `value` 키 뒤에 있는 전체 CloudWatch 에이전트 구성을 찾습니다.

   그런 다음, `ecs_service_discovery` 섹션에서 다음 구성을 `task_definition_list` 섹션에 추가합니다.

   ```
   {
       "sd_job_name": "ecs-memcached",
       "sd_metrics_ports": "9150",
       "sd_task_definition_arn_pattern": ".*:task-definition/memcached-prometheus-demo.*:[0-9]+"
   },
   ```

   `metric_declaration` 섹션의 경우 기본 설정은 어느 Memcached 지표도 허용하지 않습니다. Memcached 지표를 허용하려면 다음 섹션을 추가합니다. 이때 기존의 들여쓰기 패턴을 따라야 합니다.

   ```
   {
     "source_labels": ["container_name"],
     "label_matcher": "memcached-exporter-.*",
     "dimensions": [["ClusterName", "TaskDefinitionFamily"]],
     "metric_selectors": [
       "^memcached_current_(bytes|items|connections)$",
       "^memcached_items_(reclaimed|evicted)_total$",
       "^memcached_(written|read)_bytes_total$",
       "^memcached_limit_bytes$",
       "^memcached_commands_total$"
     ]
   },
   {
     "source_labels": ["container_name"],
     "label_matcher": "memcached-exporter-.*",
     "dimensions": [["ClusterName", "TaskDefinitionFamily","status","command"], ["ClusterName", "TaskDefinitionFamily","command"]],
     "metric_selectors": [
       "^memcached_commands_total$"
     ]
   },
   ```

1. CloudFormation에서 Amazon ECS 클러스터에 CloudWatch 에이전트를 이미 배포한 경우 다음 명령을 입력하여 변경 세트를 생성할 수 있습니다.

   ```
   ECS_NETWORK_MODE=bridge
   CREATE_IAM_ROLES=True
   ECS_TASK_ROLE_NAME=your_selected_ecs_task_role_name
   ECS_EXECUTION_ROLE_NAME=your_selected_ecs_execution_role_name
   
   aws cloudformation create-change-set --stack-name CWAgent-Prometheus-ECS-${ECS_CLUSTER_NAME}-EC2-${ECS_NETWORK_MODE} \
       --template-body file://cwagent-ecs-prometheus-metric-for-bridge-host.yaml \
       --parameters ParameterKey=ECSClusterName,ParameterValue=$ECS_CLUSTER_NAME \
                    ParameterKey=CreateIAMRoles,ParameterValue=$CREATE_IAM_ROLES \
                    ParameterKey=ECSNetworkMode,ParameterValue=$ECS_NETWORK_MODE \
                    ParameterKey=TaskRoleName,ParameterValue=$ECS_TASK_ROLE_NAME \
                    ParameterKey=ExecutionRoleName,ParameterValue=$ECS_EXECUTION_ROLE_NAME \
       --capabilities CAPABILITY_NAMED_IAM \
       --region $AWS_REGION \
       --change-set-name memcached-scraping-support
   ```

1. CloudFormation 콘솔([https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/))을 엽니다.

1. 새로 생성한 변경 세트인 `memcached-scraping-support`를 검토합니다. `CWAgentConfigSSMParameter` 리소스에 적용된 변경 사항 하나가 표시되어야 합니다. 변경 세트를 실행하고 다음 명령을 입력하여 CloudWatch 에이전트 태스크를 다시 시작합니다.

   ```
   aws ecs update-service --cluster $ECS_CLUSTER_NAME \
   --desired-count 0 \
   --service cwagent-prometheus-replica-service-EC2-$ECS_NETWORK_MODE \
   --region $AWS_REGION
   ```

1. 10초 정도 기다린 후 다음 명령을 입력합니다.

   ```
   aws ecs update-service --cluster $ECS_CLUSTER_NAME \
   --desired-count 1 \
   --service cwagent-prometheus-replica-service-EC2-$ECS_NETWORK_MODE \
   --region $AWS_REGION
   ```

1. 클러스터에 처음으로 Prometheus 지표 수집이 포함된 CloudWatch 에이전트를 설치하는 경우 다음 명령을 입력합니다.

   ```
   ECS_NETWORK_MODEE=bridge
   CREATE_IAM_ROLES=True
   ECS_TASK_ROLE_NAME=your_selected_ecs_task_role_name
   ECS_EXECUTION_ROLE_NAME=your_selected_ecs_execution_role_name
   
   aws cloudformation create-stack --stack-name CWAgent-Prometheus-ECS-${ECS_CLUSTER_NAME}-EC2-${ECS_NETWORK_MODE} \
       --template-body file://cwagent-ecs-prometheus-metric-for-bridge-host.yaml \
       --parameters ParameterKey=ECSClusterName,ParameterValue=$ECS_CLUSTER_NAME \
                    ParameterKey=CreateIAMRoles,ParameterValue=$CREATE_IAM_ROLES \
                    ParameterKey=ECSNetworkMode,ParameterValue=$ECS_NETWORK_MODE \
                    ParameterKey=TaskRoleName,ParameterValue=$ECS_TASK_ROLE_NAME \
                    ParameterKey=ExecutionRoleName,ParameterValue=$ECS_EXECUTION_ROLE_NAME \
       --capabilities CAPABILITY_NAMED_IAM \
       --region $AWS_REGION
   ```

## Memcached 지표 보기
<a name="ContainerInsights-Prometheus-ECS-memcached-view"></a>

이 튜토리얼에서는 CloudWatch의 **ECS/ContainerInsights/Prometheus** 네임스페이스에 다음 지표를 전송합니다. CloudWatch 콘솔을 사용하여 해당 네임스페이스의 지표를 볼 수 있습니다.


| 지표 이름 | 측정기준 | 
| --- | --- | 
|  `memcached_current_items` |  `ClusterName`, `TaskDefinitionFamily`  | 
|  `memcached_current_connections` |  `ClusterName`, `TaskDefinitionFamily`  | 
|  `memcached_limit_bytes` |  `ClusterName`, `TaskDefinitionFamily`  | 
|  `memcached_current_bytes` |  `ClusterName`, `TaskDefinitionFamily`  | 
|  `memcached_written_bytes_total` |  `ClusterName`, `TaskDefinitionFamily`  | 
|  `memcached_read_bytes_total` |  `ClusterName`, `TaskDefinitionFamily`  | 
|  `memcached_items_evicted_total` |  `ClusterName`, `TaskDefinitionFamily`  | 
|  `memcached_items_reclaimed_total` |  `ClusterName`, `TaskDefinitionFamily`  | 
|  `memcached_commands_total` |  `ClusterName`, `TaskDefinitionFamily` `ClusterName`, TaskDefinitionFamily, 명령 `ClusterName`, TaskDefinitionFamily, 상태, 명령  | 

**참고**  
[**명령(command)**] 측정기준의 값은 `delete`, `get`, `cas`, `set`, `decr`, `touch`, `incr` 또는 `flush`일 수 있습니다.  
[**상태(status)**] 측정기준의 값은 `hit`, `miss` 또는 `badval`일 수 있습니다.

또한 Memcached Prometheus 지표에 대한 CloudWatch 대시보드를 생성할 수도 있습니다.

**Memcached Prometheus 지표에 대한 대시보드를 생성하려면**

1. 환경 변수를 만들어서 아래의 값을 배포와 일치하도록 바꿉니다.

   ```
   DASHBOARD_NAME=your_memcached_cw_dashboard_name
   ECS_TASK_DEF_FAMILY=memcached-prometheus-demo-$ECS_CLUSTER_NAME-EC2-$MEMCACHED_ECS_NETWORK_MOD
   ```

1. 다음 명령을 입력하여 대시보드를 생성합니다.

   ```
   curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/ecs-task-definition-templates/deployment-mode/replica-service/cwagent-prometheus/sample_cloudwatch_dashboards/memcached/cw_dashboard_memcached.json \
   | sed "s/{{YOUR_AWS_REGION}}/$AWS_REGION/g" \
   | sed "s/{{YOUR_CLUSTER_NAME}}/$ECS_CLUSTER_NAME/g" \
   | sed "s/{{YOUR_TASK_DEF_FAMILY}}/$ECS_TASK_DEF_FAMILY/g" \
   | xargs -0 aws cloudwatch put-dashboard --dashboard-name ${DASHBOARD_NAME} --region $AWS_REGION --dashboard-body
   ```

# Amazon OSS Fargate의 Redis Prometheus 지표 스크레이핑 자습서
<a name="ContainerInsights-Prometheus-Setup-redis-ecs"></a>

이 자습서에서는 Amazon ECS Fargate 클러스터에서 샘플 Redis OSS 애플리케이션의 Prometheus 지표를 스크레이핑하는 실습 입문을 제공합니다. CloudWatch 에이전트는 컨테이너의 Docker 레이블을 기반으로 하는 Prometheus 지표 지원을 통해 Redis OSS Prometheus 내보내기 도구 대상을 자동 검색합니다.

Redis OSS(https://redis.io/)는 데이터베이스, 캐시 및 메시지 브로커로 사용되는 오픈 소스(BSD 라이선스), 인메모리 구조 데이터 스토어입니다. 자세한 내용은 [redis](https://redis.io/)를 참조하세요.

redis\$1exporter(MIT License 라이선스)는 지정된 포트(기본값: 0.0.0.0:9121)에서 Redis OSS Prometheus 지표를 노출하는 데 사용됩니다. 자세한 내용은 [redis\$1exporter](https://github.com/oliver006/redis_exporter)를 참조하세요.

이 튜토리얼에서는 다음과 같은 두 Docker Hub 리포지토리의 Docker 이미지를 사용합니다.
+ [ redis](https://hub.docker.com/_/redis?tab=description)
+ [ redis\$1exporter](https://hub.docker.com/r/oliver006/redis_exporter)

**사전 조건**

Amazon ECS의 Prometheus 워크로드 샘플에서 지표를 수집하려면 클러스터에서 Container Insights를 실행 중이어야 합니다. Container Insights 설치에 대한 자세한 내용은 [Amazon ECS에서 Container Insights 설정](deploy-container-insights-ECS.md) 단원을 참조하세요.

**Topics**
+ [Amazon ECS Fargate 클러스터 환경 변수 설정](#ContainerInsights-Prometheus-Setup-redis-ecs-variable)
+ [Amazon ECS Fargate 클러스터의 네트워크 환경 변수 설정](#ContainerInsights-Prometheus-Setup-redis-ecs-variable2)
+ [샘플 Redis OSS 워크로드 설치](#ContainerInsights-Prometheus-Setup-redis-ecs-install-workload)
+ [Redis OSS Prometheus 지표를 스크레이핑하도록 CloudWatch 에이전트 구성](#ContainerInsights-Prometheus-Setup-redis-ecs-agent)
+ [Redis OSS 지표 보기](#ContainerInsights-Prometheus-Setup-redis-view)

## Amazon ECS Fargate 클러스터 환경 변수 설정
<a name="ContainerInsights-Prometheus-Setup-redis-ecs-variable"></a>

**Amazon ECS Fargate 클러스터 환경 변수를 설정하려면**

1. 아직 설치하지 않은 경우 Amazon ECS CLI를 설치합니다. 자세한 내용은 [Amazon ECS CLI 설치](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_CLI_installation.html) 단원을 참조하세요.

1. 새 Amazon ECS 클러스터 이름 및 리전을 설정합니다. 예제:

   ```
   ECS_CLUSTER_NAME=ecs-fargate-redis-tutorial
   AWS_DEFAULT_REGION=ca-central-1
   ```

1. (선택 사항) 샘플 Redis OSS 워크로드 및 CloudWatch 에이전트를 설치하려는 Amazon ECS Fargate 클러스터가 아직 없는 경우 다음 명령을 입력하여 클러스터를 생성할 수 있습니다.

   ```
   ecs-cli up --capability-iam \
   --cluster $ECS_CLUSTER_NAME \
   --launch-type FARGATE \
   --region $AWS_DEFAULT_REGION
   ```

   이 명령의 예상 결과는 다음과 같습니다.

   ```
   INFO[0000] Created cluster   cluster=ecs-fargate-redis-tutorial region=ca-central-1
   INFO[0001] Waiting for your cluster resources to be created...
   INFO[0001] Cloudformation stack status   stackStatus=CREATE_IN_PROGRESS
   VPC created: vpc-xxxxxxxxxxxxxxxxx
   Subnet created: subnet-xxxxxxxxxxxxxxxxx
   Subnet created: subnet-xxxxxxxxxxxxxxxxx
   Cluster creation succeeded.
   ```

## Amazon ECS Fargate 클러스터의 네트워크 환경 변수 설정
<a name="ContainerInsights-Prometheus-Setup-redis-ecs-variable2"></a>

**Amazon ECS Fargate 클러스터의 네트워크 환경 변수를 설정하려면**

1. Amazon ECS 클러스터의 VPC 및 서브넷 ID를 설정합니다. 이전 절차에서 새 클러스터를 생성한 경우 마지막 명령의 결과에 다음과 같은 값이 표시됩니다. 그렇지 않으면 Redis와 함께 사용할 기존 클러스터의 ID를 사용합니다.

   ```
   ECS_CLUSTER_VPC=vpc-xxxxxxxxxxxxxxxxx
   ECS_CLUSTER_SUBNET_1=subnet-xxxxxxxxxxxxxxxxx
   ECS_CLUSTER_SUBNET_2=subnet-xxxxxxxxxxxxxxxxx
   ```

1. 이 자습서에서는 Amazon ECS 클러스터 VPC의 기본 보안 그룹에 Redis OSS 애플리케이션 및 CloudWatch 에이전트를 설치합니다. 기본 보안 그룹은 동일한 보안 그룹 내의 모든 네트워크 연결을 허용하므로 CloudWatch 에이전트가 Redis OSS 컨테이너에 노출된 Prometheus 지표를 스크레이링할 수 있습니다. 실제 프로덕션 환경에서는 Redis OSS 애플리케이션 및 CloudWatch 에이전트의 전용 보안 그룹을 생성하고 이에 대한 사용자 지정 권한을 설정할 수 있습니다.

   다음 명령을 입력하여 기본 보안 그룹 ID를 가져옵니다.

   ```
   aws ec2 describe-security-groups \
   --filters Name=vpc-id,Values=$ECS_CLUSTER_VPC  \
   --region $AWS_DEFAULT_REGION
   ```

   그다음에는 다음 명령을 입력하여 Fargate 클러스터 기본 보안 그룹 변수를 설정하고 *my-default-security-group*을 이전의 명령에서 찾은 값으로 바꿉니다.

   ```
   ECS_CLUSTER_SECURITY_GROUP=my-default-security-group
   ```

## 샘플 Redis OSS 워크로드 설치
<a name="ContainerInsights-Prometheus-Setup-redis-ecs-install-workload"></a>

**Prometheus 지표를 노출하는 샘플 Redis OSS 워크로드를 설치하는 방법**

1. 다음 명령을 입력하여 Redis OSS CloudFormation 템플릿을 다운로드합니다.

   ```
   curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/ecs-task-definition-templates/deployment-mode/replica-service/cwagent-prometheus/sample_traffic/redis/redis-traffic-sample.yaml
   ```

1. 다음 명령을 입력하여 Redis OSS 용으로 생성할 IAM 역할 이름을 설정합니다.

   ```
   REDIS_ECS_TASK_ROLE_NAME=redis-prometheus-demo-ecs-task-role-name
   REDIS_ECS_EXECUTION_ROLE_NAME=redis-prometheus-demo-ecs-execution-role-name
   ```

1. 다음 명령을 입력하여 샘플 Redis OSS 워크로드를 설치합니다.

   ```
   aws cloudformation create-stack --stack-name Redis-Prometheus-Demo-ECS-$ECS_CLUSTER_NAME-fargate-awsvpc \
       --template-body file://redis-traffic-sample.yaml \
       --parameters ParameterKey=ECSClusterName,ParameterValue=$ECS_CLUSTER_NAME \
                    ParameterKey=SecurityGroupID,ParameterValue=$ECS_CLUSTER_SECURITY_GROUP \
                    ParameterKey=SubnetID,ParameterValue=$ECS_CLUSTER_SUBNET_1 \
                    ParameterKey=TaskRoleName,ParameterValue=$REDIS_ECS_TASK_ROLE_NAME \
                    ParameterKey=ExecutionRoleName,ParameterValue=$REDIS_ECS_EXECUTION_ROLE_NAME \
       --capabilities CAPABILITY_NAMED_IAM \
       --region $AWS_DEFAULT_REGION
   ```

CloudFormation 스택은 다음과 같은 네 개의 리소스를 생성합니다.
+ ECS 태스크 역할 1개
+ ECS 태스크 실행 역할 1개
+ Redis OSS 태스크 정의 1개
+ Redis OSS 서비스 1개

Redis OSS 태스크 정의에서는 다음과 같이 두 컨테이너가 정의됩니다.
+ 기본 컨테이너는 단순한 Redis OSS 애플리케이션을 실행하고 액세스를 위해 포트 6379를 엽니다.
+ 다른 컨테이너에서는 Redis OSS 내보내기 도구 프로세스를 실행하여 포트 9121에서 Prometheus 지표를 노출합니다. 이는 CloudWatch 에이전트가 검색하고 스크레이프할 컨테이너입니다. 다음 Docker 레이블을 정의하여 CloudWatch 에이전트가 해당 레이블을 기반으로 이 컨테이너를 검색할 수 있도록 합니다.

  ```
  ECS_PROMETHEUS_EXPORTER_PORT: 9121
  ```

## Redis OSS Prometheus 지표를 스크레이핑하도록 CloudWatch 에이전트 구성
<a name="ContainerInsights-Prometheus-Setup-redis-ecs-agent"></a>

**Redis OSS Prometheus 지표를 스크레이핑하도록 CloudWatch 에이전트를 구성하려는 방법**

1. 다음 명령을 입력하여 최신 버전의 `cwagent-ecs-prometheus-metric-for-awsvpc.yaml`을 다운로드합니다.

   ```
   curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/ecs-task-definition-templates/deployment-mode/replica-service/cwagent-prometheus/cloudformation-quickstart/cwagent-ecs-prometheus-metric-for-awsvpc.yaml
   ```

1. 텍스트 편집기를 사용하여 파일을 열고 `resource:CWAgentConfigSSMParameter` 섹션에서 `value` 키 뒤에 있는 전체 CloudWatch 에이전트 구성을 찾습니다.

   여기에 나와 있는 `ecs_service_discovery` 섹션에서는 Redis OSS ECS 태스크 정의에서 정의한 Docker 레이블과 일치하는 `ECS_PROMETHEUS_EXPORTER_PORT`를 기반으로 하는 기본 설정으로 `docker_label` 기반 서비스 검색이 사용 설정됩니다. 따라서 이 섹션에서는 아무것도 변경할 필요가 없습니다.

   ```
   ecs_service_discovery": {
     "sd_frequency": "1m",
     "sd_result_file": "/tmp/cwagent_ecs_auto_sd.yaml",
   *  "docker_label": {
     },*
     ...
   ```

   `metric_declaration` 섹션의 경우 기본 설정은 어느 Redis OSS 지표도 허용하지 않습니다. Redis OSS 지표를 허용하려면 다음 섹션을 추가합니다. 이때 기존의 들여쓰기 패턴을 따라야 합니다.

   ```
   {
     "source_labels": ["container_name"],
     "label_matcher": "^redis-exporter-.*$",
     "dimensions": [["ClusterName","TaskDefinitionFamily"]],
     "metric_selectors": [
       "^redis_net_(in|out)put_bytes_total$",
       "^redis_(expired|evicted)_keys_total$",
       "^redis_keyspace_(hits|misses)_total$",
       "^redis_memory_used_bytes$",
       "^redis_connected_clients$"
     ]
   },
   {
     "source_labels": ["container_name"],
     "label_matcher": "^redis-exporter-.*$",
     "dimensions": [["ClusterName","TaskDefinitionFamily","cmd"]],
     "metric_selectors": [
       "^redis_commands_total$"
     ]
   },
   {
     "source_labels": ["container_name"],
     "label_matcher": "^redis-exporter-.*$",
     "dimensions": [["ClusterName","TaskDefinitionFamily","db"]],
     "metric_selectors": [
       "^redis_db_keys$"
     ]
   },
   ```

1. CloudFormation에서 Amazon ECS 클러스터에 CloudWatch 에이전트를 이미 배포한 경우 다음 명령을 입력하여 변경 세트를 생성할 수 있습니다.

   ```
   ECS_LAUNCH_TYPE=FARGATE
   CREATE_IAM_ROLES=True
   ECS_CLUSTER_SUBNET=$ECS_CLUSTER_SUBNET_1
   ECS_TASK_ROLE_NAME=your_selected_ecs_task_role_name
   ECS_EXECUTION_ROLE_NAME=your_selected_ecs_execution_role_name
   
   aws cloudformation create-change-set --stack-name CWAgent-Prometheus-ECS-$ECS_CLUSTER_NAME-$ECS_LAUNCH_TYPE-awsvpc \
       --template-body file://cwagent-ecs-prometheus-metric-for-awsvpc.yaml \
       --parameters ParameterKey=ECSClusterName,ParameterValue=$ECS_CLUSTER_NAME \
                    ParameterKey=CreateIAMRoles,ParameterValue=$CREATE_IAM_ROLES \
                    ParameterKey=ECSLaunchType,ParameterValue=$ECS_LAUNCH_TYPE \
                    ParameterKey=SecurityGroupID,ParameterValue=$ECS_CLUSTER_SECURITY_GROUP \
                    ParameterKey=SubnetID,ParameterValue=$ECS_CLUSTER_SUBNET \
                    ParameterKey=TaskRoleName,ParameterValue=$ECS_TASK_ROLE_NAME \
                    ParameterKey=ExecutionRoleName,ParameterValue=$ECS_EXECUTION_ROLE_NAME \
       --capabilities CAPABILITY_NAMED_IAM \
       --region ${AWS_DEFAULT_REGION} \
       --change-set-name redis-scraping-support
   ```

1. CloudFormation 콘솔([https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/))을 엽니다.

1. 새로 생성한 변경 세트인 `redis-scraping-support`를 검토합니다. `CWAgentConfigSSMParameter` 리소스에 적용된 변경 사항 하나가 표시되어야 합니다. 변경 세트를 실행하고 다음 명령을 입력하여 CloudWatch 에이전트 태스크를 다시 시작합니다.

   ```
   aws ecs update-service --cluster $ECS_CLUSTER_NAME \
   --desired-count 0 \
   --service cwagent-prometheus-replica-service-$ECS_LAUNCH_TYPE-awsvpc \
   --region ${AWS_DEFAULT_REGION}
   ```

1. 10초 정도 기다린 후 다음 명령을 입력합니다.

   ```
   aws ecs update-service --cluster $ECS_CLUSTER_NAME \
   --desired-count 1 \
   --service cwagent-prometheus-replica-service-$ECS_LAUNCH_TYPE-awsvpc \
   --region ${AWS_DEFAULT_REGION}
   ```

1. 클러스터에 처음으로 Prometheus 지표 수집이 포함된 CloudWatch 에이전트를 설치하는 경우 다음 명령을 입력합니다.

   ```
   ECS_LAUNCH_TYPE=FARGATE
   CREATE_IAM_ROLES=True
   ECS_CLUSTER_SUBNET=$ECS_CLUSTER_SUBNET_1
   ECS_TASK_ROLE_NAME=your_selected_ecs_task_role_name
   ECS_EXECUTION_ROLE_NAME=your_selected_ecs_execution_role_name
   
   aws cloudformation create-stack --stack-name CWAgent-Prometheus-ECS-$ECS_CLUSTER_NAME-$ECS_LAUNCH_TYPE-awsvpc \
       --template-body file://cwagent-ecs-prometheus-metric-for-awsvpc.yaml \
       --parameters ParameterKey=ECSClusterName,ParameterValue=$ECS_CLUSTER_NAME \
                    ParameterKey=CreateIAMRoles,ParameterValue=$CREATE_IAM_ROLES \
                    ParameterKey=ECSLaunchType,ParameterValue=$ECS_LAUNCH_TYPE \
                    ParameterKey=SecurityGroupID,ParameterValue=$ECS_CLUSTER_SECURITY_GROUP \
                    ParameterKey=SubnetID,ParameterValue=$ECS_CLUSTER_SUBNET \
                    ParameterKey=TaskRoleName,ParameterValue=$ECS_TASK_ROLE_NAME \
                    ParameterKey=ExecutionRoleName,ParameterValue=$ECS_EXECUTION_ROLE_NAME \
       --capabilities CAPABILITY_NAMED_IAM \
       --region ${AWS_DEFAULT_REGION}
   ```

## Redis OSS 지표 보기
<a name="ContainerInsights-Prometheus-Setup-redis-view"></a>

이 튜토리얼에서는 CloudWatch의 **ECS/ContainerInsights/Prometheus** 네임스페이스에 다음 지표를 전송합니다. CloudWatch 콘솔을 사용하여 해당 네임스페이스의 지표를 볼 수 있습니다.


| 지표 이름 | 측정기준 | 
| --- | --- | 
|  `redis_net_input_bytes_total` |  ClusterName, `TaskDefinitionFamily`   | 
|  `redis_net_output_bytes_total` |  ClusterName, `TaskDefinitionFamily`   | 
|  `redis_expired_keys_total` |  ClusterName, `TaskDefinitionFamily`   | 
|  `redis_evicted_keys_total` |  ClusterName, `TaskDefinitionFamily`   | 
|  `redis_keyspace_hits_total` |  ClusterName, `TaskDefinitionFamily`   | 
|  `redis_keyspace_misses_total` |  ClusterName, `TaskDefinitionFamily`   | 
|  `redis_memory_used_bytes` |  ClusterName, `TaskDefinitionFamily`   | 
|  `redis_connected_clients` |  ClusterName, `TaskDefinitionFamily`   | 
|  `redis_commands_total` |  ` ClusterName`, `TaskDefinitionFamily`, `cmd`  | 
|  `redis_db_keys` |  `ClusterName`, `TaskDefinitionFamily`, `db`  | 

**참고**  
[**cmd**] 측정기준의 값은 `append`, `client`, `command`, `config`, `dbsize`, `flushall`, `get`, `incr`, `info`, `latency` 또는 `slowlog`일 수 있습니다.  
[**db**] 측정기준의 값은 `db0`\$1`db15`일 수 있습니다.

Redis OSS Prometheus 지표에 대한 CloudWatch 대시보드를 생성할 수도 있습니다.

**Redis OSS Prometheus 지표에 대한 대시보드를 생성하는 방법**

1. 환경 변수를 만들어서 아래의 값을 배포와 일치하도록 바꿉니다.

   ```
   DASHBOARD_NAME=your_cw_dashboard_name
   ECS_TASK_DEF_FAMILY=redis-prometheus-demo-$ECS_CLUSTER_NAME-fargate-awsvpc
   ```

1. 다음 명령을 입력하여 대시보드를 생성합니다.

   ```
   curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/sample_cloudwatch_dashboards/redis/cw_dashboard_redis.json \
   | sed "s/{{YOUR_AWS_REGION}}/${REGION_NAME}/g" \
   | sed "s/{{YOUR_CLUSTER_NAME}}/${CLUSTER_NAME}/g" \
   | sed "s/{{YOUR_NAMESPACE}}/${NAMESPACE}/g" \
   ```

# Amazon EKS 및 Kubernetes 클러스터에서 Prometheus 지표 수집 설정 및 구성
<a name="ContainerInsights-Prometheus-install-EKS"></a>

Amazon EKS 또는 Kubernetes를 실행하는 클러스터에서 Prometheus 지표를 수집하려면 CloudWatch 에이전트를 수집기로 사용하거나 AWS Distro for OpenTelemetry Collector를 사용하면 됩니다. AWS Distro for OpenTelemetry Collector 사용에 대한 자세한 내용은 [https://aws-otel.github.io/docs/getting-started/container-insights/eks-prometheus](https://aws-otel.github.io/docs/getting-started/container-insights/eks-prometheus)를 참조하세요.

다음 단원에서는 CloudWatch 에이전트를 사용하여 Prometheus 지표를 수집하는 방법을 설명합니다. Amazon EKS 또는 Kubernetes를 실행 중인 클러스터에 Prometheus 모니터링이 포함된 CloudWatch 에이전트를 설치하는 방법과 추가 대상을 스크레이프하도록 에이전트를 구성하는 방법을 설명합니다. 또한 Prometheus 모니터링을 통해 테스트하는 데 사용할 샘플 워크로드를 설정하기 위한 선택적 튜토리얼도 제공합니다.

**Topics**
+ [Amazon EKS 및 Kubernetes 클러스터에 Prometheus 지표 수집과 함께 CloudWatch 에이전트 설치](ContainerInsights-Prometheus-Setup.md)

# Amazon EKS 및 Kubernetes 클러스터에 Prometheus 지표 수집과 함께 CloudWatch 에이전트 설치
<a name="ContainerInsights-Prometheus-Setup"></a>

이 단원에서는 Amazon EKS 또는 Kubernetes를 실행 중인 클러스터에서 Prometheus 모니터링이 포함된 CloudWatch 에이전트를 설정하는 방법을 설명합니다. 이렇게 에이전트를 설정하면 에이전트가 해당 클러스터에서 실행 중인 다음 워크로드에 대한 지표를 자동으로 스크레이프하고 가져옵니다.
+ AWS App Mesh
+ NGINX
+ Memcached
+ Java/JMX
+ HAProxy
+ Fluent Bit

추가 Prometheus 워크로드 및 소스를 스크레이프하고 가져오도록 에이전트를 구성할 수도 있습니다.

다음 단계에 따라 Prometheus 지표 수집용 CloudWatch 에이전트를 설치하기 전에 먼저, Amazon EKS에서 클러스터가 실행 중이거나 Amazon EC2 인스턴스에서 Kubernetes 클러스터가 실행 중이어야 합니다.

**VPC 보안 그룹 요구 사항**

Prometheus 워크로드의 보안 그룹 수신 규칙은 프라이빗 IP로 Prometheus 지표를 스크레이프하기 위해 CloudWatch 에이전트에 대한 Prometheus 포트를 열어야 합니다.

CloudWatch 에이전트의 보안 그룹 송신 규칙은 CloudWatch 에이전트가 프라이빗 IP로 Prometheus 워크로드의 포트에 연결할 수 있도록 허용해야 합니다.

**Topics**
+ [Amazon EKS 및 Kubernetes 클러스터에 Prometheus 지표 수집과 함께 CloudWatch 에이전트 설치](#ContainerInsights-Prometheus-Setup-roles)
+ [추가 Prometheus 소스 스크레이핑 및 해당 지표 가져오기](ContainerInsights-Prometheus-Setup-configure.md)
+ [(선택 사항) Prometheus 지표 테스트를 위한 컨테이너화된 Amazon EKS 워크로드 샘플 설정](ContainerInsights-Prometheus-Sample-Workloads.md)

## Amazon EKS 및 Kubernetes 클러스터에 Prometheus 지표 수집과 함께 CloudWatch 에이전트 설치
<a name="ContainerInsights-Prometheus-Setup-roles"></a>

이 단원에서는 Amazon EKS 또는 Kubernetes를 실행 중인 클러스터에서 Prometheus 모니터링이 포함된 CloudWatch 에이전트를 설정하는 방법을 설명합니다. 이렇게 에이전트를 설정하면 에이전트가 해당 클러스터에서 실행 중인 다음 워크로드에 대한 지표를 자동으로 스크레이프하고 가져옵니다.
+ AWS App Mesh
+ NGINX
+ Memcached
+ Java/JMX
+ HAProxy
+ Fluent Bit

추가 Prometheus 워크로드 및 소스를 스크레이프하고 가져오도록 에이전트를 구성할 수도 있습니다.

다음 단계에 따라 Prometheus 지표 수집용 CloudWatch 에이전트를 설치하기 전에 먼저, Amazon EKS에서 클러스터가 실행 중이거나 Amazon EC2 인스턴스에서 Kubernetes 클러스터가 실행 중이어야 합니다.

**VPC 보안 그룹 요구 사항**

Prometheus 워크로드의 보안 그룹 수신 규칙은 프라이빗 IP로 Prometheus 지표를 스크레이프하기 위해 CloudWatch 에이전트에 대한 Prometheus 포트를 열어야 합니다.

CloudWatch 에이전트의 보안 그룹 송신 규칙은 CloudWatch 에이전트가 프라이빗 IP로 Prometheus 워크로드의 포트에 연결할 수 있도록 허용해야 합니다.

**Topics**
+ [IAM 역할 설정](#ContainerInsights-Prometheus-Setup-roles)
+ [Prometheus 지표를 수집하기 위한 CloudWatch 에이전트 설치](#ContainerInsights-Prometheus-Setup-install-agent)

### IAM 역할 설정
<a name="ContainerInsights-Prometheus-Setup-roles"></a>

첫 번째 단계는 클러스터에 필요한 IAM 역할을 설정하는 것입니다. 다음과 같은 두 가지 방법으로 설정할 수 있습니다.
+ **‘서비스 역할’이라고도 하는 서비스 계정의 IAM 역할을 설정합니다. 이 방법은 EC2 시작 유형과 Fargate 시작 유형 모두에 적용됩니다.
+ 클러스터에 사용되는 IAM 역할에 IAM 정책을 추가합니다. 이는 EC2 시작 유형에만 적용됩니다.

**서비스 역할 설정(EC2 시작 유형 및 Fargate 시작 유형)**

서비스 역할을 설정하려면 다음 명령을 입력합니다. *MyCluster*를 클러스터 이름으로 바꿉니다.

```
eksctl create iamserviceaccount \
 --name cwagent-prometheus \
--namespace amazon-cloudwatch \
 --cluster MyCluster \
--attach-policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy \
--approve \
--override-existing-serviceaccounts
```

**노드 그룹의 IAM 역할에 정책 추가(EC2 시작 유형만 해당)**

**Prometheus 지원을 위해 노드 그룹에서 IAM 정책을 설정하려면**

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

1. 탐색 창에서 **인스턴스**를 선택합니다.

1. 클러스터에 대한 IAM 역할 이름의 접두사를 찾아야 합니다. 이렇게 하려면 클러스터에 있는 인스턴스 이름 옆의 확인란을 선택하고 **작업**, **보안**, **IAM 역할 수정**을 선택합니다. 그런 다음, `eksctl-dev303-workshop-nodegroup`과 같은 IAM 역할의 접두사를 복사합니다.

1. IAM 콘솔([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/))을 엽니다.

1. 탐색 창에서 **역할**을 선택합니다.

1. 검색 상자를 사용하여 이 절차의 앞부분에서 복사한 접두사를 찾은 다음 해당 역할을 선택합니다.

1. **정책 연결**을 선택합니다.

1. 검색 상자를 사용하여 **CloudWatchAgentServerPolicy**를 찾습니다. **CloudWatchAgentServerPolicy** 옆의 확인란을 선택하고 **정책 연결**을 선택합니다.

### Prometheus 지표를 수집하기 위한 CloudWatch 에이전트 설치
<a name="ContainerInsights-Prometheus-Setup-install-agent"></a>

지표를 수집하려면 클러스터에 CloudWatch 에이전트를 설치해야 합니다. Amazon EKS 클러스터와 Kubernetes 클러스터의 에이전트 설치 방법은 다릅니다.

**Prometheus가 지원되는 CloudWatch 에이전트의 이전 버전 삭제**

클러스터에 Prometheus가 지원되는 CloudWatch 에이전트 버전을 이미 설치한 경우 다음 명령을 입력하여 해당 버전을 삭제해야 합니다. 이는 Prometheus가 지원되는 이전 버전의 에이전트에만 필요합니다. Prometheus가 지원되지 않는 Container Insights를 사용하는 CloudWatch 에이전트는 삭제할 필요가 없습니다.

```
kubectl delete deployment cwagent-prometheus -n amazon-cloudwatch
```

#### EC2 시작 유형의 Amazon EKS 클러스터에 CloudWatch 에이전트 설치
<a name="ContainerInsights-Prometheus-Setup-install-agent-EKS"></a>

Amazon EKS 클러스터에 Prometheus가 지원되는 CloudWatch 에이전트를 설치하려면 다음 단계를 따릅니다.

**Amazon EKS 클러스터에 Prometheus가 지원되는 CloudWatch 에이전트를 설치하려면**

1. 다음 명령을 입력하여 `amazon-cloudwatch` 네임스페이스가 이미 생성되었는지 확인합니다.

   ```
   kubectl get namespace
   ```

1. `amazon-cloudwatch`가 결과에 표시되지 않으면 다음 명령을 입력하여 생성합니다.

   ```
   kubectl create namespace amazon-cloudwatch
   ```

1. 기본 구성으로 에이전트를 배포하고 에이전트가 설치된 AWS 리전으로 데이터를 전송하도록 하려면 다음 명령을 입력합니다.

   ```
   kubectl apply -f https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/prometheus-eks.yaml
   ```

   에이전트가 대신 다른 리전으로 데이터를 전송하도록 하려면 다음 단계를 따르세요.

   1. 다음 명령을 입력하여 에이전트에 대한 YAML 파일을 다운로드합니다.

      ```
      curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/prometheus-eks.yaml
      ```

   1. 텍스트 편집기로 파일을 열고 파일의 `cwagentconfig.json` 블록을 검색합니다.

   1. 강조 표시된 선을 추가하여 원하는 리전을 지정합니다.

      ```
      cwagentconfig.json: |
          {
            "agent": {
              "region": "us-east-2"
            },
            "logs": { ...
      ```

   1. 파일을 저장하고, 업데이트된 파일을 사용하여 에이전트를 배포합니다.

      ```
      kubectl apply -f prometheus-eks.yaml
      ```

#### Fargate 시작 유형의 Amazon EKS 클러스터에 CloudWatch 에이전트 설치
<a name="ContainerInsights-Prometheus-Setup-install-agent-EKS-fargate"></a>

Fargate 시작 유형의 Amazon EKS 클러스터에 Prometheus가 지원되는 CloudWatch 에이전트를 설치하려면 다음 단계를 따릅니다.

**Fargate 시작 유형의 Amazon EKS 클러스터에 Prometheus가 지원되는 CloudWatch 에이전트를 설치하려면**

1. 다음 명령을 입력하여 CloudWatch 에이전트의 Fargate 프로파일을 생성하여 클러스터 내에서 실행될 수 있도록 합니다. *MyCluster*를 클러스터 이름으로 바꿉니다.

   ```
   eksctl create fargateprofile --cluster MyCluster \
   --name amazon-cloudwatch \
   --namespace amazon-cloudwatch
   ```

1. CloudWatch 에이전트를 설치하려면 다음 명령을 입력합니다. *MyCluster*를 클러스터 이름으로 바꿉니다. 이 이름은 에이전트가 수집한 로그 이벤트를 저장하는 로그 그룹 이름에 사용되며, 에이전트에서 수집한 지표에 대한 측정기준으로도 사용됩니다.

   *region*을 지표를 전송할 리전의 이름으로 바꿉니다. 예를 들어 `us-west-1`입니다.

   ```
   curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/prometheus-eks-fargate.yaml | 
   sed "s/{{cluster_name}}/MyCluster/;s/{{region_name}}/region/" | 
   kubectl apply -f -
   ```

#### Kubernetes 클러스터에 CloudWatch 에이전트 설치
<a name="ContainerInsights-Prometheus-Setup-install-agent-Kubernetes"></a>

Kubernetes를 실행하는 클러스터에 Prometheus가 지원되는 CloudWatch 에이전트를 설치하려면 다음 명령을 입력합니다.

```
curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/prometheus-k8s.yaml | 
sed "s/{{cluster_name}}/MyCluster/;s/{{region_name}}/region/" | 
kubectl apply -f -
```

*MyCluster*를 클러스터 이름으로 바꿉니다. 이 이름은 에이전트가 수집한 로그 이벤트를 저장하는 로그 그룹 이름에 사용되며, 에이전트에서 수집한 지표에 대한 측정기준으로도 사용됩니다.

*리전*을 지표를 전송할 AWS 리전의 이름으로 바꿉니다. 예를 들어 **us-west-1**입니다.

#### 에이전트가 실행 중인지 확인
<a name="ContainerInsights-Prometheus-Setup-install-agent-verify"></a>

Amazon EKS 클러스터와 Kubernetes 클러스터 모두에서 다음 명령을 입력하여 에이전트가 실행 중인지 확인할 수 있습니다.

```
kubectl get pod -l "app=cwagent-prometheus" -n amazon-cloudwatch
```

결과에 `Running` 상태의 단일 CloudWatch 에이전트 포드가 포함되어 있다면 에이전트가 실행 중이며 Prometheus 지표를 수집하고 있는 것입니다. 기본적으로 CloudWatch 에이전트는 1분마다 App Mesh, NGINX, Memcached, Java/JMX, HAProxy에 대한 지표를 수집합니다. 지표에 대한 자세한 내용은 [CloudWatch 에이전트가 수집하는 Prometheus 지표](ContainerInsights-Prometheus-metrics.md) 단원을 참조하세요. CloudWatch에서 Prometheus 지표를 확인하는 방법에 대한 지침은 [Prometheus 지표 보기](ContainerInsights-Prometheus-viewmetrics.md) 단원을 참조하세요.

또한 다른 Prometheus Exporter에서 지표를 수집하도록 CloudWatch 에이전트를 구성할 수도 있습니다. 자세한 내용은 [추가 Prometheus 소스 스크레이핑 및 해당 지표 가져오기](ContainerInsights-Prometheus-Setup-configure.md) 섹션을 참조하세요.

# 추가 Prometheus 소스 스크레이핑 및 해당 지표 가져오기
<a name="ContainerInsights-Prometheus-Setup-configure"></a>

Prometheus 모니터링이 포함된 CloudWatch 에이전트는 Prometheus 지표를 스크레이프하는 데 두 가지 구성이 필요합니다. 하나는 Prometheus 설명서의 [<scrape\$1config>](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config)에 설명된 표준 Prometheus 구성을 위한 것입니다. 다른 하나는 CloudWatch 에이전트 구성을 위한 것입니다.

Amazon EKS 클러스터에서 구성은 `prometheus-eks.yaml`(EC2 시작 유형의 경우) 또는 `prometheus-eks-fargate.yaml`(Fargate 시작 유형의 경우)에 다음과 같은 두 config 맵으로 정의됩니다.
+ `name: prometheus-config` 섹션에는 Prometheus 스크레이핑 설정이 포함되어 있습니다.
+ `name: prometheus-cwagentconfig` 섹션에는 CloudWatch 에이전트에 대한 구성이 포함되어 있습니다. 이 섹션을 사용하여 CloudWatch가 Prometheus 지표를 수집하는 방법을 구성할 수 있습니다. 예를 들어 CloudWatch에 가져올 지표를 지정하고 해당 지표의 측정기준을 정의합니다.

Amazon EC2 인스턴스에서 실행되는 Kubernetes 클러스터에서 구성은 `prometheus-k8s.yaml` YAML 파일에 다음과 같은 두 config 맵으로 정의됩니다.
+ `name: prometheus-config` 섹션에는 Prometheus 스크레이핑 설정이 포함되어 있습니다.
+ `name: prometheus-cwagentconfig` 섹션에는 CloudWatch 에이전트에 대한 구성이 포함되어 있습니다.

추가 Prometheus 지표 소스를 스크레이프하고 해당 지표를 CloudWatch에 가져오려면 Prometheus 스크레이프 구성과 CloudWatch 에이전트 구성을 모두 수정한 다음, 업데이트된 구성으로 에이전트를 다시 배포합니다.

**VPC 보안 그룹 요구 사항**

Prometheus 워크로드의 보안 그룹 수신 규칙은 프라이빗 IP로 Prometheus 지표를 스크레이프하기 위해 CloudWatch 에이전트에 대한 Prometheus 포트를 열어야 합니다.

CloudWatch 에이전트의 보안 그룹 송신 규칙은 CloudWatch 에이전트가 프라이빗 IP로 Prometheus 워크로드의 포트에 연결할 수 있도록 허용해야 합니다.

## Prometheus 스크레이프 구성
<a name="ContainerInsights-Prometheus-Setup-config-global"></a>

CloudWatch 에이전트는 Prometheus 설명서의 [ <scrape\$1config>](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config)에 설명된 대로 표준 Prometheus 스크레이프 구성을 지원합니다. 이 섹션을 편집하여 이 파일에 이미 있는 구성을 업데이트하고 Prometheus 스크레이핑 대상을 더 추가할 수 있습니다. 기본적으로 샘플 구성 파일에는 다음과 같은 글로벌 구성 줄이 포함되어 있습니다.

```
global:
  scrape_interval: 1m
  scrape_timeout: 10s
```
+ **scrape\$1interval** - 대상을 스크레이프하는 빈도를 정의합니다.
+ **scrape\$1timeout** - 스크레이프 요청 시간이 초과되기 전에 대기할 시간을 정의합니다.

작업 수준에서 이러한 설정에 다른 값을 정의하여 전역 구성을 재정의할 수도 있습니다.

### Prometheus 스크레이핑 작업
<a name="ContainerInsights-Prometheus-Setup-config-scrape"></a>

CloudWatch 에이전트 YAML 파일에는 일부 기본 스크레이핑 작업이 이미 구성되어 있습니다. 예를 들어 `prometheus-eks.yaml`에서 기본 스크레이핑 작업은 `scrape_configs` 섹션의 `job_name` 줄에서 구성됩니다. 이 파일에서 다음 기본 `kubernetes-pod-jmx` 섹션에서는 JMX Exporter 지표를 스크레이프합니다.

```
   - job_name: 'kubernetes-pod-jmx'
      sample_limit: 10000
      metrics_path: /metrics
      kubernetes_sd_configs:
      - role: pod
      relabel_configs:
      - source_labels: [__address__]
        action: keep
        regex: '.*:9404$'
      - action: labelmap
        regex: __meta_kubernetes_pod_label_(.+)
      - action: replace
        source_labels:
        - __meta_kubernetes_namespace
        target_label: Namespace
      - source_labels: [__meta_kubernetes_pod_name]
        action: replace
        target_label: pod_name
      - action: replace
        source_labels:
        - __meta_kubernetes_pod_container_name
        target_label: container_name
      - action: replace
        source_labels:
        - __meta_kubernetes_pod_controller_name
        target_label: pod_controller_name
      - action: replace
        source_labels:
        - __meta_kubernetes_pod_controller_kind
        target_label: pod_controller_kind
      - action: replace
        source_labels:
        - __meta_kubernetes_pod_phase
        target_label: pod_phase
```

이러한 각 기본 대상은 스크레이프되고 지표는 임베디드 지표 형식을 사용하여 로그 이벤트로 CloudWatch에 전송됩니다. 자세한 내용은 [로그 내에 지표 포함](CloudWatch_Embedded_Metric_Format.md) 섹션을 참조하세요.

Amazon EKS 및 Kubernetes 클러스터의 로그 이벤트는 CloudWatch Logs의 **/aws/containerinsights/*cluster\$1name*/prometheus** 로그 그룹에 저장됩니다. Amazon ECS 클러스터의 로그 이벤트는 **/aws/ecs/containerinsights/*cluster\$1name*/prometheus** 로그 그룹에 저장됩니다.

각 스크레이핑 작업은 이 로그 그룹의 서로 다른 로그 스트림에 포함됩니다. 예를 들어 Prometheus 스크레이핑 작업 `kubernetes-pod-appmesh-envoy`는 App Mesh에 대해 정의됩니다. Amazon EKS 및 Kubernetes 클러스터의 모든 App Mesh Prometheus 지표는 **/aws/containerinsights/*cluster\$1name*>prometheus/kubernetes-pod-appmesh-envoy/**라는 로그 스트림에 전송됩니다.

새 스크레이핑 대상을 추가하려면 YAML 파일의 `scrape_configs` 섹션에 새 `job_name` 섹션을 추가하고 에이전트를 다시 시작합니다. 이 프로세스의 예는 [새로운 Prometheus 스크레이프 대상을 추가하기 위한 튜토리얼: Prometheus API 서버 지표](#ContainerInsights-Prometheus-Setup-new-exporters) 단원을 참조하세요.

## Prometheus에 대한 CloudWatch 에이전트 구성
<a name="ContainerInsights-Prometheus-Setup-cw-agent-config2"></a>

CloudWatch 에이전트 구성 파일에는 `metrics_collected` 아래에 Prometheus 스크레이핑 구성에 대한 `prometheus` 섹션이 있습니다. 여기에는 다음 구성 옵션이 포함됩니다.
+ **cluster\$1name** - 로그 이벤트에서 레이블로 추가할 클러스터 이름을 지정합니다. 이 필드는 선택 사항입니다. 생략하는 경우 에이전트가 Amazon EKS 또는 Kubernetes 클러스터 이름을 감지할 수 있습니다.
+ **log\$1group\$1name** - 스크레이프한 Prometheus 지표의 로그 그룹 이름을 지정합니다. 이 필드는 선택 사항입니다. 생략하는 경우 CloudWatch는 Amazon EKS 및 Kubernetes 클러스터의 로그에 **/aws/containerinsights/*cluster\$1name*/prometheus**를 사용합니다.
+ **prometheus\$1config\$1path** - Prometheus 스크레이프 구성 파일 경로를 지정합니다. 이 필드의 값이 `env:`로 시작하는 경우 Prometheus 스크레이프 구성 파일 내용이 컨테이너의 환경 변수에서 검색됩니다. 이 값은 변경하지 마세요.
+ **ecs\$1service\$1discovery** - Amazon ECS Prometheus 서비스 검색을 위한 구성을 지정하는 섹션입니다. 자세한 내용은 [Amazon ECS 클러스터의 자동 검색에 대한 자세한 가이드](ContainerInsights-Prometheus-Setup-autodiscovery-ecs.md) 섹션을 참조하세요.

  `ecs_service_discovery` 섹션에는 다음 필드가 포함될 수 있습니다.
  + `sd_frequency`는 Prometheus Exporter를 검색하는 빈도입니다. 숫자와 단위 접미사를 지정합니다. 예를 들어 1분마다 한 번의 경우 `1m` 또는 30초마다 한 번의 경우 `30s`입니다. 유효한 단위 접미사는 `ns`, `us`, `ms`, `s`, `m`, `h`입니다.

    이 필드는 선택 사항입니다. 기본값은 60초(1분)입니다.
  + `sd_target_cluster`는 자동 검색의 대상 Amazon ECS 클러스터 이름입니다. 이 필드는 선택 사항입니다. 기본값은 CloudWatch 에이전트가 설치된 Amazon ECS 클러스터의 이름입니다.
  + `sd_cluster_region`은 대상 Amazon ECS 클러스터의 리전입니다. 이 필드는 선택 사항입니다. 기본값은 CloudWatch 에이전트가 설치된 Amazon ECS 클러스터의 리전입니다.
  + `sd_result_file`은 Prometheus 대상 결과의 YAML 파일 경로입니다. Prometheus 스크레이프 구성은 이 파일을 참조합니다.
  + `docker_label`은 Docker 레이블 기반 서비스 검색을 위한 구성을 지정하는 데 사용할 수 있는 선택적 섹션입니다. 이 섹션을 생략하면 Docker 레이블 기반 검색이 사용되지 않습니다. 이 섹션에는 다음 필드가 포함될 수 있습니다.
    + `sd_port_label`은 Prometheus 지표에 대한 컨테이너 포트를 지정하는 컨테이너의 Docker 레이블 이름입니다. 기본값은 `ECS_PROMETHEUS_EXPORTER_PORT`입니다. 컨테이너에 이 Docker 레이블이 없다면 CloudWatch 에이전트는 이 필드를 건너뜁니다.
    + `sd_metrics_path_label`은 Prometheus 지표 경로를 지정하는 컨테이너의 Docker 레이블 이름입니다. 기본값은 `ECS_PROMETHEUS_METRICS_PATH`입니다. 컨테이너에 이 도커 레이블이 없다면 에이전트는 기본 경로 `/metrics`를 가정합니다.
    + `sd_job_name_label`은 Prometheus 스크레이프 작업 이름을 지정하는 컨테이너의 Docker 레이블 이름입니다. 기본값은 `job`입니다. 컨테이너에 이 Docker 레이블이 없다면 CloudWatch 에이전트는 Prometheus 스크레이프 구성의 작업 이름을 사용합니다.
  + `task_definition_list`는 태스크 정의 기반 서비스 검색의 구성을 지정하는 데 사용할 수 있는 선택적 섹션입니다. 이 섹션을 생략하면 태스크 정의 기반 검색이 사용되지 않습니다. 이 섹션에는 다음 필드가 포함될 수 있습니다.
    + `sd_task_definition_arn_pattern`은 검색할 Amazon ECS 태스크 정의를 지정하는 데 사용할 패턴입니다. 이는 정규 표현식입니다.
    + `sd_metrics_ports`는 Prometheus 지표에 대한 containerPort를 나열합니다. containerPort를 세미콜론으로 구분합니다.
    + `sd_container_name_pattern`은 Amazon ECS 태스크 컨테이너 이름을 지정합니다. 이는 정규 표현식입니다.
    + `sd_metrics_path`는 Prometheus 지표 경로를 지정합니다. 이 필드를 생략하면 에이전트는 기본 경로 `/metrics`를 가정합니다.
    + `sd_job_name`은 Prometheus 스크레이프 작업 이름을 지정합니다. 이 필드를 생략하면 CloudWatch 에이전트는 Prometheus 스크레이프 구성의 작업 이름을 사용합니다.
+ **metric\$1declaration** - 생성할 임베디드 지표 형식이 있는 로그 배열을 지정하는 섹션입니다. CloudWatch 에이전트가 기본적으로 가져오는 각 Prometheus 소스에 대한 `metric_declaration` 섹션이 있습니다. 이러한 섹션에는 각각 다음 필드가 포함됩니다.
  + `label_matcher`는 `source_labels`에 나열된 레이블의 값을 확인하는 정규 표현식입니다. 일치하는 지표는 CloudWatch에 전송된 임베디드 지표 형식에 포함할 수 있습니다.

    `source_labels`에 여러 레이블이 지정된 경우 `label_matcher`의 정규 표현식에 `^` 또는 `$` 문자를 사용하지 않는 것이 좋습니다.
  + `source_labels`는 `label_matcher` 줄에 의해 확인되는 레이블의 값을 지정합니다.
  + `label_separator`는 여러 `source_labels`가 지정된 경우 ` label_matcher` 줄에 사용할 구분 기호를 지정합니다. 기본값은 `;`입니다. 다음 예에서 `label_matcher` 줄에 이 기본값이 사용된 것을 볼 수 있습니다.
  + `metric_selectors`는 수집하여 CloudWatch에 보낼 지표를 지정하는 정규 표현식입니다.
  + `dimensions`는 선택한 각 지표의 CloudWatch 측정기준으로 사용할 레이블 목록입니다.

다음 `metric_declaration` 예를 참조하세요.

```
"metric_declaration": [
  {
     "source_labels":[ "Service", "Namespace"],
     "label_matcher":"(.*node-exporter.*|.*kube-dns.*);kube-system",
     "dimensions":[
        ["Service", "Namespace"]
     ],
     "metric_selectors":[
        "^coredns_dns_request_type_count_total$"
     ]
  }
]
```

이 예에서는 다음 조건이 충족될 경우 임베디드 지표 형식 섹션을 로그 이벤트로 전송하도록 구성합니다.
+ `Service`의 값에 `node-exporter` 또는 `kube-dns`가 포함되어 있습니다.
+ `Namespace`의 값이 `kube-system`입니다.
+ Prometheus `coredns_dns_request_type_count_total` 지표에 `Service`와 `Namespace` 레이블이 모두 포함되어 있습니다.

전송되는 로그 이벤트에는 다음과 같은 강조 표시된 섹션이 포함됩니다.

```
{
   "CloudWatchMetrics":[
      {
         "Metrics":[
            {
               "Name":"coredns_dns_request_type_count_total"
            }
         ],
         "Dimensions":[
            [
               "Namespace",
               "Service"
            ]
         ],
         "Namespace":"ContainerInsights/Prometheus"
      }
   ],
   "Namespace":"kube-system",
   "Service":"kube-dns",
   "coredns_dns_request_type_count_total":2562,
   "eks_amazonaws_com_component":"kube-dns",
   "instance":"192.168.61.254:9153",
   "job":"kubernetes-service-endpoints",
   ...
}
```

## 새로운 Prometheus 스크레이프 대상을 추가하기 위한 튜토리얼: Prometheus API 서버 지표
<a name="ContainerInsights-Prometheus-Setup-new-exporters"></a>

Kubernetes API 서버는 기본적으로 엔드포인트에 Prometheus 지표를 표시합니다. Kubernetes API 서버 스크레이핑 구성에 대한 공식 예제는 [Github](https://github.com/prometheus/prometheus/blob/main/documentation/examples/prometheus-kubernetes.yml)에 있습니다.

다음 튜토리얼에서는 아래 단계를 수행하여 Kubernetes API 서버 지표를 CloudWatch로 가져오는 방법을 보여 줍니다.
+ CloudWatch 에이전트 YAML 파일에 Kubernetes API 서버의 Prometheus 스크레이핑 구성 추가
+ CloudWatch 에이전트 YAML 파일에서 임베디드 지표 형식 지표 정의 구성
+ (선택 사항) Kubernetes API 서버 지표에 대한 CloudWatch 대시보드 생성

**참고**  
Kubernetes API 서버는 게이지, 카운터, 히스토그램 및 요약 지표를 표시합니다. 이 Prometheus 지표 지원 릴리스에서는 CloudWatch가 게이지, 카운터 및 요약 유형의 지표만 가져옵니다.

**CloudWatch에서 Kubernetes API 서버 Prometheus 지표 수집을 시작하려면**

1. 다음 명령 중 하나를 입력하여 `prometheus-eks.yaml`, `prometheus-eks-fargate.yaml` 또는 `prometheus-k8s.yaml` 파일의 최신 버전을 다운로드합니다.

   EC2 시작 유형의 Amazon EKS 클러스터의 경우 다음 명령을 입력합니다.

   ```
   curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/prometheus-eks.yaml
   ```

   Fargate 시작 유형의 Amazon EKS 클러스터의 경우 다음 명령을 입력합니다.

   ```
   curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/prometheus-eks-fargate.yaml
   ```

   Amazon EC2 인스턴스에서 실행되는 Kubernetes 클러스터의 경우 다음 명령을 입력합니다.

   ```
   curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/prometheus-k8s.yaml
   ```

1. 텍스트 편집기로 파일을 열고 `prometheus-config` 섹션을 찾은 후 이 섹션 안에 다음 섹션을 추가합니다. 그리고 변경 사항을 저장합니다.

   ```
       # Scrape config for API servers
       - job_name: 'kubernetes-apiservers'
         kubernetes_sd_configs:
           - role: endpoints
             namespaces:
               names:
                 - default
         scheme: https
         tls_config:
           ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
           insecure_skip_verify: true
         bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
         relabel_configs:
         - source_labels: [__meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]
           action: keep
           regex: kubernetes;https
         - action: replace
           source_labels:
           - __meta_kubernetes_namespace
           target_label: Namespace
         - action: replace
           source_labels:
           - __meta_kubernetes_service_name
           target_label: Service
   ```

1. 텍스트 편집기에서 YAML 파일을 열어 둔 상태로 `cwagentconfig.json` 섹션을 찾습니다. 다음 하위 섹션을 추가하고 변경 사항을 저장합니다. 이 섹션에서는 API 서버 지표를 CloudWatch 에이전트 허용 목록에 넣습니다. 다음과 같은 세 유형의 API 서버 지표가 허용 목록에 추가됩니다.
   + etcd 객체 카운트
   + API 서버 등록 컨트롤러 지표
   + API 서버 요청 지표

   ```
   {"source_labels": ["job", "resource"],
     "label_matcher": "^kubernetes-apiservers;(services|daemonsets.apps|deployments.apps|configmaps|endpoints|secrets|serviceaccounts|replicasets.apps)",
     "dimensions": [["ClusterName","Service","resource"]],
     "metric_selectors": [
     "^etcd_object_counts$"
     ]
   },
   {"source_labels": ["job", "name"],
      "label_matcher": "^kubernetes-apiservers;APIServiceRegistrationController$",
      "dimensions": [["ClusterName","Service","name"]],
      "metric_selectors": [
      "^workqueue_depth$",
      "^workqueue_adds_total$",
      "^workqueue_retries_total$"
     ]
   },
   {"source_labels": ["job","code"],
     "label_matcher": "^kubernetes-apiservers;2[0-9]{2}$",
     "dimensions": [["ClusterName","Service","code"]],
     "metric_selectors": [
      "^apiserver_request_total$"
     ]
   },
   {"source_labels": ["job"],
     "label_matcher": "^kubernetes-apiservers",
     "dimensions": [["ClusterName","Service"]],
     "metric_selectors": [
     "^apiserver_request_total$"
     ]
   },
   ```

1. 클러스터에 Prometheus가 지원되는 CloudWatch 에이전트를 이미 배포한 경우 다음 명령을 입력하여 해당 에이전트를 삭제해야 합니다.

   ```
   kubectl delete deployment cwagent-prometheus -n amazon-cloudwatch
   ```

1. 다음 명령 중 하나를 입력하여 업데이트된 구성으로 CloudWatch 에이전트를 배포합니다. EC2 시작 유형의 Amazon EKS 클러스터의 경우 다음 명령을 입력합니다.

   ```
   kubectl apply -f prometheus-eks.yaml
   ```

   Fargate 시작 유형의 Amazon EKS 클러스터의 경우 다음 명령을 입력합니다. *MyCluster* 및 *region*을 배포와 일치하는 값으로 바꿉니다.

   ```
   cat prometheus-eks-fargate.yaml \
   | sed "s/{{cluster_name}}/MyCluster/;s/{{region_name}}/region/" \
   | kubectl apply -f -
   ```

   Kubernetes 클러스터의 경우 다음 명령을 입력합니다. *MyCluster* 및 *region*을 배포와 일치하는 값으로 바꿉니다.

   ```
   cat prometheus-k8s.yaml \
   | sed "s/{{cluster_name}}/MyCluster/;s/{{region_name}}/region/" \
   | kubectl apply -f -
   ```

이 작업을 완료하면 **kubernetes-apiservers**라는 새 로그 스트림이 **/aws/containerinsights/*cluster\$1name*/prometheus** 로그 그룹에 나타납니다. 이 로그 스트림은 다음과 같은 임베디드 지표 형식 정의가 있는 로그 이벤트를 포함해야 합니다.

```
{
   "CloudWatchMetrics":[
      {
         "Metrics":[
            {
               "Name":"apiserver_request_total"
            }
         ],
         "Dimensions":[
            [
               "ClusterName",
               "Service"
            ]
         ],
         "Namespace":"ContainerInsights/Prometheus"
      }
   ],
   "ClusterName":"my-cluster-name",
   "Namespace":"default",
   "Service":"kubernetes",
   "Timestamp":"1592267020339",
   "Version":"0",
   "apiserver_request_count":0,
   "apiserver_request_total":0,
   "code":"0",
   "component":"apiserver",
   "contentType":"application/json",
   "instance":"192.0.2.0:443",
   "job":"kubernetes-apiservers",
   "prom_metric_type":"counter",
   "resource":"pods",
   "scope":"namespace",
   "verb":"WATCH",
   "version":"v1"
}
```

CloudWatch 콘솔의 **ContainerInsights/Prometheus** 네임스페이스에서 지표를 볼 수 있습니다. 또한 선택적으로 Prometheus Kubernetes API 서버 지표에 대한 CloudWatch 대시보드를 생성할 수도 있습니다.

### (선택 사항) Kubernetes API 서버 지표에 대한 대시보드 생성
<a name="ContainerInsights-Prometheus-Setup-KPI-dashboard"></a>

대시보드에서 Kubernetes API 서버 지표를 보려면 먼저, 이전 단원의 단계를 완료하여 CloudWatch에서 이러한 지표 수집을 시작해야 합니다.

**Kubernetes API 서버 지표에 대한 대시보드를 생성하려면**

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

1. 올바른 AWS 리전을 선택했는지 확인합니다.

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

1. **대시보드 생성**을 선택합니다. 새 대시보드의 이름을 입력하고 **대시보드 생성**을 선택합니다.

1. **이 대시보드에 추가**에서 **취소**를 선택합니다.

1. **작업**, **소스 보기/편집**을 선택합니다.

1. [Kubernetes API 대시보드 소스](https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/sample_cloudwatch_dashboards/kubernetes_api_server/cw_dashboard_kubernetes_api_server.json)라는 JSON 파일을 다운로드합니다.

1. 텍스트 편집기로 다운로드한 JSON 파일을 열고, 다음과 같이 변경합니다.
   + 모든 `{{YOUR_CLUSTER_NAME}}` 문자열을 정확한 클러스터 이름으로 바꿉니다. 텍스트 앞이나 뒤에 공백을 추가하지 않도록 하세요.
   + 모든 `{{YOUR_AWS_REGION}}` 문자열을 지표가 수집되는 리전의 이름으로 바꿉니다. 예: `us-west-2`. 텍스트 앞이나 뒤에 공백을 추가하지 않도록 하세요.

1. JSON blob 전체를 복사하여 CloudWatch 콘솔의 텍스트 상자에 붙여넣어 이미 상자에 있는 내용을 바꿉니다.

1. **업데이트**, **대시보드 저장**을 선택합니다.

# (선택 사항) Prometheus 지표 테스트를 위한 컨테이너화된 Amazon EKS 워크로드 샘플 설정
<a name="ContainerInsights-Prometheus-Sample-Workloads"></a>

CloudWatch Container Insights에서 Prometheus 지표 지원을 테스트하기 위해 다음과 같은 컨테이너화된 워크로드 중 하나 이상을 설정할 수 있습니다. Prometheus가 지원되는 CloudWatch 에이전트는 이러한 각 워크로드에서 지표를 자동으로 수집합니다. 기본적으로 수집되는 지표를 보려면 [CloudWatch 에이전트가 수집하는 Prometheus 지표](ContainerInsights-Prometheus-metrics.md) 단원을 참조하세요.

이러한 워크로드를 설치하려면 다음 명령을 입력하여 Helm 3.x를 설치해야 합니다.

```
brew install helm
```

자세한 내용은 [Helm](https://helm.sh)을 참조하세요.

**Topics**
+ [Amazon EKS 및 Kubernetes의 AWS App Mesh 샘플 워크로드 설정](ContainerInsights-Prometheus-Sample-Workloads-appmesh.md)
+ [Amazon EKS 및 Kubernetes에서 샘플 트래픽이 포함된 NGINX 설정](ContainerInsights-Prometheus-Sample-Workloads-nginx.md)
+ [Amazon EKS 및 Kubernetes에서 지표 익스포터가 포함된 Memcached 설정](ContainerInsights-Prometheus-Sample-Workloads-memcached.md)
+ [Amazon EKS 및 Kubernetes에서 Java/JMX 샘플 워크로드 설정](ContainerInsights-Prometheus-Sample-Workloads-javajmx.md)
+ [Amazon EKS 및 Kubernetes에서 지표 익스포터가 포함된 HAProxy 설정](ContainerInsights-Prometheus-Sample-Workloads-haproxy.md)
+ [새로운 Prometheus 스크레이핑 대상을 추가하는 자습서: Amazon EKS 및 Kubernetes 클러스터의 Redis OSS](ContainerInsights-Prometheus-Setup-redis-eks.md)

# Amazon EKS 및 Kubernetes의 AWS App Mesh 샘플 워크로드 설정
<a name="ContainerInsights-Prometheus-Sample-Workloads-appmesh"></a>

CloudWatch Container Insights의 Prometheus 지원은 AWS App Mesh를 지원합니다. 다음 단원에서는 App Mesh를 설정하는 방법을 설명합니다.

**Topics**
+ [EC2 시작 유형의 Amazon EKS 클러스터 또는 Kubernetes 클러스터에서 AWS App Mesh 샘플 워크로드 설정](ContainerInsights-Prometheus-Sample-Workloads-appmesh-EKS.md)
+ [Fargate 시작 유형의 Amazon EKS 클러스터에서 AWS App Mesh 샘플 워크로드 설정](ContainerInsights-Prometheus-Sample-Workloads-appmesh-Fargate.md)

# EC2 시작 유형의 Amazon EKS 클러스터 또는 Kubernetes 클러스터에서 AWS App Mesh 샘플 워크로드 설정
<a name="ContainerInsights-Prometheus-Sample-Workloads-appmesh-EKS"></a>

EC2 시작 유형의 Amazon EKS를 실행하는 클러스터 또는 Kubernetes 클러스터에서 App Mesh를 설정할 경우 다음 지침을 따르세요.

## IAM 권한 구성
<a name="ContainerInsights-Prometheus-Sample-Workloads-appmesh-iam"></a>

Amazon EKS 또는 Kubernetes 노드 그룹의 IAM 역할에 **AWSAppMeshFullAccess** 정책을 추가해야 합니다. Amazon EKS에서 이 노드 그룹 이름은 `eksctl-integ-test-eks-prometheus-NodeInstanceRole-ABCDEFHIJKL`과 유사합니다. Kubernetes에서는 `nodes.integ-test-kops-prometheus.k8s.local`과 유사하게 보일 수 있습니다.

## App Mesh 설치
<a name="ContainerInsights-Prometheus-Sample-Workloads-appmesh-install"></a>

App Mesh Kubernetes 컨트롤러를 설치하려면 [App Mesh 컨트롤러](https://github.com/aws/eks-charts/tree/master/stable/appmesh-controller#app-mesh-controller)의 지침을 따르세요.

## 샘플 애플리케이션 설치
<a name="ContainerInsights-Prometheus-Sample-Workloads-appmesh-application"></a>

[aws-app-mesh-examples](https://github.com/aws/aws-app-mesh-examples)에는 여러 Kubernetes App Mesh 시연이 포함되어 있습니다. 이 튜토리얼에서는 http 라우팅이 들어오는 요청을 일치시키기 위해 어떻게 헤더를 사용하는지 보여 주는 샘플 컬러 애플리케이션을 설치합니다.

**샘플 App Mesh 애플리케이션을 사용하여 Container Insights를 테스트하려면**

1. 다음 지침에 따라 애플리케이션을 설치합니다. [https://github.com/aws/aws-app-mesh-examples/tree/main/walkthroughs/howto-k8s-http-headers](https://github.com/aws/aws-app-mesh-examples/tree/main/walkthroughs/howto-k8s-http-headers) 

1. 다음과 같이 curler 포드를 시작하여 트래픽을 생성합니다.

   ```
   kubectl -n default run -it curler --image=tutum/curl /bin/bash
   ```

1. HTTP 헤더를 변경하여 다양한 엔드포인트를 curl합니다. 다음과 같이 curl 명령을 여러 번 실행합니다.

   ```
   curl -H "color_header: blue" front.howto-k8s-http-headers.svc.cluster.local:8080/; echo;
   
   curl -H "color_header: red" front.howto-k8s-http-headers.svc.cluster.local:8080/; echo;
   
   curl -H "color_header: yellow" front.howto-k8s-http-headers.svc.cluster.local:8080/; echo;
   ```

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

1. 클러스터가 실행되고 있는 AWS 리전에서 왼쪽 탐색 창의 [**지표(Metrics)**]를 선택합니다. 지표는 **ContainerInsights/Prometheus** 네임스페이스에 있습니다.

1. CloudWatch Logs 이벤트를 보려면 탐색 창에서 [**로그 그룹(Log groups)**]을 선택합니다. 이벤트는 로그 그룹 ` /aws/containerinsights/your_cluster_name/prometheus `의 로그 스트림 `kubernetes-pod-appmesh-envoy`에 있습니다.

## App Mesh 테스트 환경 삭제
<a name="ContainerInsights-Prometheus-Sample-Workloads-appmesh-delete"></a>

App Mesh 및 샘플 애플리케이션의 사용을 마쳤으면 다음 명령을 사용하여 불필요한 리소스를 삭제합니다. 다음 명령을 입력하여 샘플 애플리케이션을 삭제합니다.

```
cd aws-app-mesh-examples/walkthroughs/howto-k8s-http-headers/
kubectl delete -f _output/manifest.yaml
```

다음 명령을 입력하여 App Mesh 컨트롤러를 삭제합니다.

```
helm delete appmesh-controller -n appmesh-system
```

# Fargate 시작 유형의 Amazon EKS 클러스터에서 AWS App Mesh 샘플 워크로드 설정
<a name="ContainerInsights-Prometheus-Sample-Workloads-appmesh-Fargate"></a>

Fargate 시작 유형의 Amazon EKS를 실행하는 클러스터에서 App Mesh를 설정할 경우 다음 지침을 따르세요.

## IAM 권한 구성
<a name="ContainerInsights-Prometheus-Sample-Workloads-appmesh--fargate-iam"></a>

IAM 권한을 설정하려면 다음 명령을 입력합니다. *MyCluster*를 클러스터 이름으로 바꿉니다.

```
eksctl create iamserviceaccount --cluster MyCluster \
 --namespace howto-k8s-fargate \
 --name appmesh-pod \
 --attach-policy-arn arn:aws:iam::aws:policy/AWSAppMeshEnvoyAccess \
 --attach-policy-arn arn:aws:iam::aws:policy/AWSCloudMapDiscoverInstanceAccess \
 --attach-policy-arn arn:aws:iam::aws:policy/AWSXRayDaemonWriteAccess \
 --attach-policy-arn arn:aws:iam::aws:policy/CloudWatchLogsFullAccess \
 --attach-policy-arn arn:aws:iam::aws:policy/AWSAppMeshFullAccess \
 --attach-policy-arn arn:aws:iam::aws:policy/AWSCloudMapFullAccess \
 --override-existing-serviceaccounts \
 --approve
```

## App Mesh 설치
<a name="ContainerInsights-Prometheus-Sample-Workloads-appmesh-fargate-install"></a>

App Mesh Kubernetes 컨트롤러를 설치하려면 [App Mesh 컨트롤러](https://github.com/aws/eks-charts/tree/master/stable/appmesh-controller#app-mesh-controller)의 지침을 따르세요. Fargate 시작 유형의 Amazon EKS에 대한 지침을 따라야 합니다.

## 샘플 애플리케이션 설치
<a name="ContainerInsights-Prometheus-Sample-Workloads-appmesh-fargate-application"></a>

[aws-app-mesh-examples](https://github.com/aws/aws-app-mesh-examples)에는 여러 Kubernetes App Mesh 시연이 포함되어 있습니다. 이 튜토리얼에서는 Fargate 시작 유형의 Amazon EKS 클러스터에서 작동하는 샘플 컬러 애플리케이션을 설치합니다.

**샘플 App Mesh 애플리케이션을 사용하여 Container Insights를 테스트하려면**

1. 다음 지침에 따라 애플리케이션을 설치합니다. [https://github.com/aws/aws-app-mesh-examples/tree/main/walkthroughs/howto-k8s-fargate](https://github.com/aws/aws-app-mesh-examples/tree/main/walkthroughs/howto-k8s-fargate) 

   해당 지침에서는 올바른 Fargate 프로파일을 사용하여 새 클러스터를 생성한다고 가정합니다. 이미 설정한 Amazon EKS 클러스터를 사용하려는 경우 다음 명령을 사용하여 해당 클러스터를 이 데모에 맞게 설정할 수 있습니다. *MyCluster*를 클러스터 이름으로 바꿉니다.

   ```
   eksctl create iamserviceaccount --cluster MyCluster \
    --namespace howto-k8s-fargate \
    --name appmesh-pod \
    --attach-policy-arn arn:aws:iam::aws:policy/AWSAppMeshEnvoyAccess \
    --attach-policy-arn arn:aws:iam::aws:policy/AWSCloudMapDiscoverInstanceAccess \
    --attach-policy-arn arn:aws:iam::aws:policy/AWSXRayDaemonWriteAccess \
    --attach-policy-arn arn:aws:iam::aws:policy/CloudWatchLogsFullAccess \
    --attach-policy-arn arn:aws:iam::aws:policy/AWSAppMeshFullAccess \
    --attach-policy-arn arn:aws:iam::aws:policy/AWSCloudMapFullAccess \
    --override-existing-serviceaccounts \
    --approve
   ```

   ```
   eksctl create fargateprofile --cluster MyCluster \
   --namespace howto-k8s-fargate --name howto-k8s-fargate
   ```

1. 다음과 같이 프런트 애플리케이션 배포를 포트 포워딩합니다.

   ```
   kubectl -n howto-k8s-fargate port-forward deployment/front 8080:8080
   ```

1. 다음과 같이 프런트 앱을 curl합니다.

   ```
   while true; do  curl -s http://localhost:8080/color; sleep 0.1; echo ; done
   ```

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

1. 클러스터가 실행되고 있는 AWS 리전에서 왼쪽 탐색 창의 [**지표(Metrics)**]를 선택합니다. 지표는 **ContainerInsights/Prometheus** 네임스페이스에 있습니다.

1. CloudWatch Logs 이벤트를 보려면 탐색 창에서 [**로그 그룹(Log groups)**]을 선택합니다. 이벤트는 로그 그룹 ` /aws/containerinsights/your_cluster_name/prometheus `의 로그 스트림 `kubernetes-pod-appmesh-envoy`에 있습니다.

## App Mesh 테스트 환경 삭제
<a name="ContainerInsights-Prometheus-Sample-Workloads-appmesh-fargate-delete"></a>

App Mesh 및 샘플 애플리케이션의 사용을 마쳤으면 다음 명령을 사용하여 불필요한 리소스를 삭제합니다. 다음 명령을 입력하여 샘플 애플리케이션을 삭제합니다.

```
cd aws-app-mesh-examples/walkthroughs/howto-k8s-fargate/
kubectl delete -f _output/manifest.yaml
```

다음 명령을 입력하여 App Mesh 컨트롤러를 삭제합니다.

```
helm delete appmesh-controller -n appmesh-system
```

# Amazon EKS 및 Kubernetes에서 샘플 트래픽이 포함된 NGINX 설정
<a name="ContainerInsights-Prometheus-Sample-Workloads-nginx"></a>

NGINX는 로드 밸런서 및 역방향 프록시로도 사용할 수 있는 웹 서버입니다. Kubernetes가 진입에 NGINX를 사용하는 방법에 대한 자세한 내용은 [kubernetes/ingress-nginx](https://github.com/kubernetes/ingress-nginx)를 참조하세요.

**샘플 트래픽 서비스와 함께 Ingress-NGINX를 설치하여 Container Insights Prometheus 지원을 테스트하려면**

1. 다음 명령을 입력하여 Helm ingress-nginx 리포지토리를 추가합니다.

   ```
   helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
   ```

1. 다음 명령을 입력합니다.

   ```
   kubectl create namespace nginx-ingress-sample
   
   helm install my-nginx ingress-nginx/ingress-nginx \
   --namespace nginx-ingress-sample \
   --set controller.metrics.enabled=true \
   --set-string controller.metrics.service.annotations."prometheus\.io/port"="10254" \
   --set-string controller.metrics.service.annotations."prometheus\.io/scrape"="true"
   ```

1. 다음 명령을 입력하여 서비스가 올바르게 시작되었는지 확인합니다.

   ```
   kubectl get service -n nginx-ingress-sample
   ```

   이 명령의 출력에는 `EXTERNAL-IP` 열을 포함한 여러 열이 표시되어야 합니다.

1. `EXTERNAL-IP` 변수를 NGINX 수신 컨트롤러의 행에 있는 `EXTERNAL-IP` 열 값으로 설정합니다.

   ```
   EXTERNAL_IP=your-nginx-controller-external-ip
   ```

1. 다음 명령을 입력하여 샘플 NGINX 트래픽을 시작합니다.

   ```
   SAMPLE_TRAFFIC_NAMESPACE=nginx-sample-traffic
   curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/sample_traffic/nginx-traffic/nginx-traffic-sample.yaml | 
   sed "s/{{external_ip}}/$EXTERNAL_IP/g" | 
   sed "s/{{namespace}}/$SAMPLE_TRAFFIC_NAMESPACE/g" | 
   kubectl apply -f -
   ```

1. 다음 명령을 입력하여 세 개의 포드가 모두 `Running` 상태에 있는지 확인합니다.

   ```
   kubectl get pod -n $SAMPLE_TRAFFIC_NAMESPACE
   ```

   실행 중인 경우 **ContainerInsights/Prometheus** 네임스페이스에 지표가 곧 표시됩니다.

**NGINX 및 샘플 트래픽 애플리케이션을 제거하려면**

1. 다음 명령을 입력하여 샘플 트래픽 서비스를 삭제합니다.

   ```
   kubectl delete namespace $SAMPLE_TRAFFIC_NAMESPACE
   ```

1. Helm 릴리스 이름으로 NGINX egress를 삭제합니다.

   ```
   helm uninstall my-nginx --namespace nginx-ingress-sample
   kubectl delete namespace nginx-ingress-sample
   ```

# Amazon EKS 및 Kubernetes에서 지표 익스포터가 포함된 Memcached 설정
<a name="ContainerInsights-Prometheus-Sample-Workloads-memcached"></a>

memcached는 오픈 소스 메모리 객체 캐싱 시스템입니다. 자세한 내용은 [Memcached란 무엇입니까?](https://www.memcached.org)를 참조하세요.

Fargate 시작 유형의 클러스터에서 Memcached를 실행할 경우 이 절차의 단계를 수행하기 전에 먼저, Fargate 프로파일을 설정해야 합니다. 프로파일을 설정하려면 다음 명령을 입력합니다. *MyCluster*를 클러스터 이름으로 바꿉니다.

```
eksctl create fargateprofile --cluster MyCluster \
--namespace memcached-sample --name memcached-sample
```

**Container Insights Prometheus 지원을 테스트하기 위해 지표 익스포터와 함께 memcached를 설치하려면**

1. 다음 명령을 입력하여 리포지토리를 추가합니다.

   ```
   helm repo add bitnami https://charts.bitnami.com/bitnami
   ```

1. 다음 명령을 입력하여 새 네임스페이스를 생성합니다.

   ```
   kubectl create namespace memcached-sample
   ```

1. 다음 명령을 입력하여 Memcached를 설치합니다.

   ```
   helm install my-memcached bitnami/memcached --namespace memcached-sample \
   --set metrics.enabled=true \
   --set-string serviceAnnotations.prometheus\\.io/port="9150" \
   --set-string serviceAnnotations.prometheus\\.io/scrape="true"
   ```

1. 다음 명령을 입력하여 실행 중인 서비스의 주석을 확인합니다.

   ```
   kubectl describe service my-memcached-metrics -n memcached-sample
   ```

   다음 두 주석이 표시됩니다.

   ```
   Annotations:   prometheus.io/port: 9150
                  prometheus.io/scrape: true
   ```

**memcached를 제거하려면**
+ 다음 명령을 입력합니다.

  ```
  helm uninstall my-memcached --namespace memcached-sample
  kubectl delete namespace memcached-sample
  ```

# Amazon EKS 및 Kubernetes에서 Java/JMX 샘플 워크로드 설정
<a name="ContainerInsights-Prometheus-Sample-Workloads-javajmx"></a>

JMX Exporter는 JMX mBeans를 스크레이프하여 노출할 수 있는 공식 Prometheus 익스포터입니다. 자세한 내용은 [prometheus/jmx\$1exporter](https://github.com/prometheus/jmx_exporter)를 참조하세요.

Container Insights는 JMX Exporter를 사용하여 Java Virtual Machine(JVM), Java 및 Tomcat(Catalina)에서 사전 정의된 Prometheus 지표를 수집할 수 있습니다.

## 기본 Prometheus 스크레이프 구성
<a name="ContainerInsights-Prometheus-Sample-Workloads-javajmx-default"></a>

기본적으로 Prometheus가 지원되는 CloudWatch 에이전트는 Amazon EKS 또는 Kubernetes 클러스터에 있는 각 포드의 `http://CLUSTER_IP:9404/metrics`에서 Java/JMX Prometheus 지표를 스크레이프합니다. 이는 Prometheus `kubernetes_sd_config`의 `role: pod` 검색에 의해 수행됩니다. 9404는 Prometheus에서 JMX Exporter에 할당한 기본 포트입니다. `role: pod` 검색에 대한 자세한 내용은 [포드](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#pod)를 참조하세요. 지표를 다른 포트 또는 metrics\$1path에 노출하도록 JMX Exporter를 구성할 수 있습니다. 포트 또는 경로를 변경하는 경우 CloudWatch 에이전트 config 맵의 기본 jmx scrape\$1config를 업데이트하세요. 다음 명령을 실행하여 현재 CloudWatch 에이전트 Prometheus 구성을 가져옵니다.

```
kubectl describe cm prometheus-config -n amazon-cloudwatch
```

변경할 필드는 다음 예제에서 강조 표시된 대로 `/metrics` 및 `regex: '.*:9404$'` 필드입니다.

```
job_name: 'kubernetes-jmx-pod'
sample_limit: 10000
metrics_path: /metrics
kubernetes_sd_configs:
- role: pod
relabel_configs:
- source_labels: [__address__]
  action: keep
  regex: '.*:9404$'
- action: replace
  regex: (.+)
  source_labels:
```

## 기타 Prometheus 스크레이프 구성
<a name="ContainerInsights-Prometheus-Sample-Workloads-javajmx-other"></a>

Kubernetes Service의 Java/JMX Prometheus Exporter가 있는 포드 세트에서 실행 중인 애플리케이션을 노출하는 경우 Prometheus `kubernetes_sd_config`의 `role: service` 검색 또는 `role: endpoint` 검색을 사용하도록 전환할 수도 있습니다. 이러한 검색 방법에 대한 자세한 내용은 [서비스](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#service), [엔드포인트](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#endpoints), [<kubernetes\$1sd\$1config>](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#kubernetes_sd_config)를 참조하세요.

이러한 두 가지 서비스 검색 모드는 더 많은 메타 레이블을 제공하므로 CloudWatch 지표 측정기준을 구축하는 데 유용할 수 있습니다. 예를 들어 `__meta_kubernetes_service_name`의 레이블을 `Service`로 다시 지정하고 이를 지표의 측정기준에 포함할 수 있습니다. CloudWatch 지표 및 해당 측정기준의 사용자 지정에 대한 자세한 내용은 [Prometheus에 대한 CloudWatch 에이전트 구성](ContainerInsights-Prometheus-Setup-configure-ECS.md#ContainerInsights-Prometheus-Setup-cw-agent-config) 단원을 참조하세요.

## JMX Exporter가 포함된 Docker 이미지
<a name="ContainerInsights-Prometheus-Sample-Workloads-javajmx-docker"></a>

다음으로, Docker 이미지를 구축합니다. 다음 단원에서는 두 가지 Dockerfile 예를 제공합니다.

이미지를 구축한 경우 Amazon EKS 또는 Kubernetes에 로드한 후 다음 명령을 실행하여 Prometheus 지표가 포트 9404에서 `JMX_EXPORTER`에 의해 노출되는지 확인합니다. *\$1JAR\$1SAMPLE\$1TRAFFIC\$1POD*를 실행 중인 포드 이름으로 바꾸고 *\$1JAR\$1SAMPLE\$1TRAFFIC\$1NAMESPACE*를 애플리케이션 네임스페이스로 바꿉니다.

Fargate 시작 유형의 클러스터에서 JMX Exporter를 실행할 경우 이 절차의 단계를 수행하기 전에 먼저, Fargate 프로파일도 설정해야 합니다. 프로파일을 설정하려면 다음 명령을 입력합니다. *MyCluster*를 클러스터 이름으로 바꿉니다.

```
eksctl create fargateprofile --cluster MyCluster \
--namespace $JAR_SAMPLE_TRAFFIC_NAMESPACE\
 --name $JAR_SAMPLE_TRAFFIC_NAMESPACE
```

```
kubectl exec $JAR_SAMPLE_TRAFFIC_POD -n $JARCAT_SAMPLE_TRAFFIC_NAMESPACE -- curl http://localhost:9404
```

## 예: Prometheus 지표가 있는 Apache Tomcat Docker 이미지
<a name="ContainerInsights-Prometheus-Sample-Workloads-javajmx-tomcat"></a>

Apache Tomcat 서버는 기본적으로 JMX mBeans를 노출합니다. JMX Exporter를 Tomcat과 통합하여 JMX mBeans를 Prometheus 지표로 노출할 수 있습니다. 다음 Dockerfile 예는 테스트 이미지를 구축하는 단계를 보여 줍니다.

```
# From Tomcat 9.0 JDK8 OpenJDK 
FROM tomcat:9.0-jdk8-openjdk 

RUN mkdir -p /opt/jmx_exporter

COPY ./jmx_prometheus_javaagent-0.12.0.jar /opt/jmx_exporter
COPY ./config.yaml /opt/jmx_exporter
COPY ./setenv.sh /usr/local/tomcat/bin 
COPY your web application.war /usr/local/tomcat/webapps/

RUN chmod  o+x /usr/local/tomcat/bin/setenv.sh

ENTRYPOINT ["catalina.sh", "run"]
```

다음 목록은 이 Dockerfile에 있는 4개의 `COPY` 줄을 설명합니다.
+ [https://github.com/prometheus/jmx\$1exporter](https://github.com/prometheus/jmx_exporter)에서 최신 JMX Exporter jar 파일을 다운로드합니다.
+ `config.yaml`은 JMX Exporter 구성 파일입니다. 자세한 내용은 [https://github.com/prometheus/jmx\$1exporter\$1Configuration](https://github.com/prometheus/jmx_exporter#Configuration )을 참조하세요.

  다음은 Java 및 Tomcat의 샘플 구성 파일입니다.

  ```
  lowercaseOutputName: true
  lowercaseOutputLabelNames: true
  
  rules:
  - pattern: 'java.lang<type=OperatingSystem><>(FreePhysicalMemorySize|TotalPhysicalMemorySize|FreeSwapSpaceSize|TotalSwapSpaceSize|SystemCpuLoad|ProcessCpuLoad|OpenFileDescriptorCount|AvailableProcessors)'
    name: java_lang_OperatingSystem_$1
    type: GAUGE
  
  - pattern: 'java.lang<type=Threading><>(TotalStartedThreadCount|ThreadCount)'
    name: java_lang_threading_$1
    type: GAUGE
  
  - pattern: 'Catalina<type=GlobalRequestProcessor, name=\"(\w+-\w+)-(\d+)\"><>(\w+)'
    name: catalina_globalrequestprocessor_$3_total
    labels:
      port: "$2"
      protocol: "$1"
    help: Catalina global $3
    type: COUNTER
  
  - pattern: 'Catalina<j2eeType=Servlet, WebModule=//([-a-zA-Z0-9+&@#/%?=~_|!:.,;]*[-a-zA-Z0-9+&@#/%=~_|]), name=([-a-zA-Z0-9+/$%~_-|!.]*), J2EEApplication=none, J2EEServer=none><>(requestCount|maxTime|processingTime|errorCount)'
    name: catalina_servlet_$3_total
    labels:
      module: "$1"
      servlet: "$2"
    help: Catalina servlet $3 total
    type: COUNTER
  
  - pattern: 'Catalina<type=ThreadPool, name="(\w+-\w+)-(\d+)"><>(currentThreadCount|currentThreadsBusy|keepAliveCount|pollerThreadCount|connectionCount)'
    name: catalina_threadpool_$3
    labels:
      port: "$2"
      protocol: "$1"
    help: Catalina threadpool $3
    type: GAUGE
  
  - pattern: 'Catalina<type=Manager, host=([-a-zA-Z0-9+&@#/%?=~_|!:.,;]*[-a-zA-Z0-9+&@#/%=~_|]), context=([-a-zA-Z0-9+/$%~_-|!.]*)><>(processingTime|sessionCounter|rejectedSessions|expiredSessions)'
    name: catalina_session_$3_total
    labels:
      context: "$2"
      host: "$1"
    help: Catalina session $3 total
    type: COUNTER
  
  - pattern: ".*"
  ```
+ `setenv.sh`는 Tomcat과 함께 JMX Exporter를 시작하고 localhost의 포트 9404에 Prometheus 지표를 노출하는 Tomcat 시작 스크립트입니다. 또한 JMX Exporter에 `config.yaml` 파일 경로를 제공합니다.

  ```
  $ cat setenv.sh 
  export JAVA_OPTS="-javaagent:/opt/jmx_exporter/jmx_prometheus_javaagent-0.12.0.jar=9404:/opt/jmx_exporter/config.yaml $JAVA_OPTS"
  ```
+ web application.war는 Tomcat에 의해 로드될 웹 애플리케이션 `war` 파일입니다.

이 구성으로 Docker 이미지를 구축하고 이미지 리포지토리에 업로드합니다.

## 예: Prometheus 지표가 있는 Java Jar 애플리케이션 Docker 이미지
<a name="ContainerInsights-Prometheus-Sample-Workloads-javajmx-jar"></a>

다음 Dockerfile 예는 테스트 이미지를 구축하는 단계를 보여 줍니다.

```
# Alpine Linux with OpenJDK JRE
FROM openjdk:8-jre-alpine

RUN mkdir -p /opt/jmx_exporter

COPY ./jmx_prometheus_javaagent-0.12.0.jar /opt/jmx_exporter
COPY ./SampleJavaApplication-1.0-SNAPSHOT.jar /opt/jmx_exporter
COPY ./start_exporter_example.sh /opt/jmx_exporter
COPY ./config.yaml /opt/jmx_exporter

RUN chmod -R o+x /opt/jmx_exporter
RUN apk add curl

ENTRYPOINT exec /opt/jmx_exporter/start_exporter_example.sh
```

다음 목록은 이 Dockerfile에 있는 4개의 `COPY` 줄을 설명합니다.
+ [https://github.com/prometheus/jmx\$1exporter](https://github.com/prometheus/jmx_exporter)에서 최신 JMX Exporter jar 파일을 다운로드합니다.
+ `config.yaml`은 JMX Exporter 구성 파일입니다. 자세한 내용은 [https://github.com/prometheus/jmx\$1exporter\$1Configuration](https://github.com/prometheus/jmx_exporter#Configuration )을 참조하세요.

  다음은 Java 및 Tomcat의 샘플 구성 파일입니다.

  ```
  lowercaseOutputName: true
  lowercaseOutputLabelNames: true
  
  rules:
  - pattern: 'java.lang<type=OperatingSystem><>(FreePhysicalMemorySize|TotalPhysicalMemorySize|FreeSwapSpaceSize|TotalSwapSpaceSize|SystemCpuLoad|ProcessCpuLoad|OpenFileDescriptorCount|AvailableProcessors)'
    name: java_lang_OperatingSystem_$1
    type: GAUGE
  
  - pattern: 'java.lang<type=Threading><>(TotalStartedThreadCount|ThreadCount)'
    name: java_lang_threading_$1
    type: GAUGE
  
  - pattern: 'Catalina<type=GlobalRequestProcessor, name=\"(\w+-\w+)-(\d+)\"><>(\w+)'
    name: catalina_globalrequestprocessor_$3_total
    labels:
      port: "$2"
      protocol: "$1"
    help: Catalina global $3
    type: COUNTER
  
  - pattern: 'Catalina<j2eeType=Servlet, WebModule=//([-a-zA-Z0-9+&@#/%?=~_|!:.,;]*[-a-zA-Z0-9+&@#/%=~_|]), name=([-a-zA-Z0-9+/$%~_-|!.]*), J2EEApplication=none, J2EEServer=none><>(requestCount|maxTime|processingTime|errorCount)'
    name: catalina_servlet_$3_total
    labels:
      module: "$1"
      servlet: "$2"
    help: Catalina servlet $3 total
    type: COUNTER
  
  - pattern: 'Catalina<type=ThreadPool, name="(\w+-\w+)-(\d+)"><>(currentThreadCount|currentThreadsBusy|keepAliveCount|pollerThreadCount|connectionCount)'
    name: catalina_threadpool_$3
    labels:
      port: "$2"
      protocol: "$1"
    help: Catalina threadpool $3
    type: GAUGE
  
  - pattern: 'Catalina<type=Manager, host=([-a-zA-Z0-9+&@#/%?=~_|!:.,;]*[-a-zA-Z0-9+&@#/%=~_|]), context=([-a-zA-Z0-9+/$%~_-|!.]*)><>(processingTime|sessionCounter|rejectedSessions|expiredSessions)'
    name: catalina_session_$3_total
    labels:
      context: "$2"
      host: "$1"
    help: Catalina session $3 total
    type: COUNTER
  
  - pattern: ".*"
  ```
+ `start_exporter_example.sh`는 Prometheus 지표를 내보낸 JAR 애플리케이션을 시작하는 스크립트입니다. 또한 JMX Exporter에 `config.yaml` 파일 경로를 제공합니다.

  ```
  $ cat start_exporter_example.sh 
  java -javaagent:/opt/jmx_exporter/jmx_prometheus_javaagent-0.12.0.jar=9404:/opt/jmx_exporter/config.yaml -cp  /opt/jmx_exporter/SampleJavaApplication-1.0-SNAPSHOT.jar com.gubupt.sample.app.App
  ```
+ SampleJavaApplication-1.0-SNAPSHOT.jar은 샘플 Java 애플리케이션 jar 파일입니다. 이 파일을 모니터링할 Java 애플리케이션으로 바꿉니다.

이 구성으로 Docker 이미지를 구축하고 이미지 리포지토리에 업로드합니다.

# Amazon EKS 및 Kubernetes에서 지표 익스포터가 포함된 HAProxy 설정
<a name="ContainerInsights-Prometheus-Sample-Workloads-haproxy"></a>

HAProxy는 오픈 소스 프록시 애플리케이션입니다. 자세한 내용은 [HAProxy](https://www.haproxy.org)를 참조하세요.

Fargate 시작 유형의 클러스터에서 HAProxy를 실행할 경우 이 절차의 단계를 수행하기 전에 먼저, Fargate 프로파일을 설정해야 합니다. 프로파일을 설정하려면 다음 명령을 입력합니다. *MyCluster*를 클러스터 이름으로 바꿉니다.

```
eksctl create fargateprofile --cluster MyCluster \
--namespace haproxy-ingress-sample --name haproxy-ingress-sample
```

**지표 익스포터와 함께 HAProxy를 설치하여 Container Insights Prometheus 지원을 테스트하려면**

1. 다음 명령을 입력하여 Helm 인큐베이터 리포지토리를 추가합니다.

   ```
   helm repo add haproxy-ingress https://haproxy-ingress.github.io/charts
   ```

1. 다음 명령을 입력하여 새 네임스페이스를 생성합니다.

   ```
   kubectl create namespace haproxy-ingress-sample
   ```

1. 다음 명령을 입력하여 HAProxy를 설치합니다.

   ```
   helm install haproxy haproxy-ingress/haproxy-ingress \
   --namespace haproxy-ingress-sample \
   --set defaultBackend.enabled=true \
   --set controller.stats.enabled=true \
   --set controller.metrics.enabled=true \
   --set-string controller.metrics.service.annotations."prometheus\.io/port"="9101" \
   --set-string controller.metrics.service.annotations."prometheus\.io/scrape"="true"
   ```

1. 다음 명령을 입력하여 서비스의 주석을 확인합니다.

   ```
   kubectl describe service haproxy-haproxy-ingress-metrics -n haproxy-ingress-sample
   ```

   다음과 같은 주석이 표시됩니다.

   ```
   Annotations:   prometheus.io/port: 9101
                  prometheus.io/scrape: true
   ```

**HAProxy를 제거하려면**
+ 다음 명령을 입력합니다.

  ```
  helm uninstall haproxy --namespace haproxy-ingress-sample
  kubectl delete namespace haproxy-ingress-sample
  ```

# 새로운 Prometheus 스크레이핑 대상을 추가하는 자습서: Amazon EKS 및 Kubernetes 클러스터의 Redis OSS
<a name="ContainerInsights-Prometheus-Setup-redis-eks"></a>

이 자습서에서는 Amazon EKS 및 Kubernetes에서 샘플 Redis OSS 애플리케이션의 Prometheus 지표를 스크레이핑하는 실습 입문을 제공합니다. Redis OSS(https://redis.io/)는 데이터베이스, 캐시 및 메시지 브로커로 사용되는 오픈 소스(BSD 라이선스), 인메모리 구조 데이터 스토어입니다. 자세한 내용은 [redis](https://redis.io/)를 참조하세요.

redis\$1exporter(MIT License 라이선스)는 지정된 포트(기본값: 0.0.0.0:9121)에서 Redis OSS Prometheus 지표를 노출하는 데 사용됩니다. 자세한 내용은 [redis\$1exporter](https://github.com/oliver006/redis_exporter)를 참조하세요.

이 튜토리얼에서는 다음과 같은 두 Docker Hub 리포지토리의 Docker 이미지를 사용합니다.
+ [ redis](https://hub.docker.com/_/redis?tab=description)
+ [ redis\$1exporter](https://hub.docker.com/r/oliver006/redis_exporter)

**Prometheus 지표를 노출하는 샘플 Redis OSS 워크로드를 설치하는 방법**

1. 샘플 Redis OSS 워크로드의 네임스페이스를 설정합니다.

   ```
   REDIS_NAMESPACE=redis-sample
   ```

1. Fargate 시작 유형의 클러스터에서 Redis OSS를 실행하는 경우 Fargate 프로파일을 설정해야 합니다. 프로파일을 설정하려면 다음 명령을 입력합니다. *MyCluster*를 클러스터 이름으로 바꿉니다.

   ```
   eksctl create fargateprofile --cluster MyCluster \
   --namespace $REDIS_NAMESPACE --name $REDIS_NAMESPACE
   ```

1. 다음 명령을 입력하여 샘플 Redis OSS 워크로드를 설치합니다.

   ```
   curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/sample_traffic/redis/redis-traffic-sample.yaml \
   | sed "s/{{namespace}}/$REDIS_NAMESPACE/g" \
   | kubectl apply -f -
   ```

1. 설치에는 포트 9121에서 Redis OSS Prometheus 지표를 노출하는 `my-redis-metrics`라는 서비스가 포함되어 있습니다. 다음 명령을 입력하여 서비스 세부 정보를 가져옵니다.

   ```
   kubectl describe service/my-redis-metrics  -n $REDIS_NAMESPACE
   ```

   결과의 `Annotations` 섹션에는 다음과 같이 워크로드를 자동 검색할 수 있도록 CloudWatch 에이전트의 Prometheus 스크레이프 구성과 일치하는 두 개의 주석이 표시됩니다.

   ```
   prometheus.io/port: 9121
   prometheus.io/scrape: true
   ```

   관련 Prometheus 스크레이프 구성은 `kubernetes-eks.yaml` 또는 `kubernetes-k8s.yaml`의 `- job_name: kubernetes-service-endpoints` 섹션에서 찾아볼 수 있습니다.

**CloudWatch에서 Redis OSS Prometheus 지표 수집을 시작하는 방법**

1. 다음 명령 중 하나를 입력하여 최신 버전의 `kubernetes-eks.yaml` 또는 `kubernetes-k8s.yaml` 파일을 다운로드합니다. EC2 시작 유형의 Amazon EKS 클러스터의 경우 다음 명령을 입력합니다.

   ```
   curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/prometheus-eks.yaml
   ```

   Fargate 시작 유형의 Amazon EKS 클러스터의 경우 다음 명령을 입력합니다.

   ```
   curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/prometheus-eks-fargate.yaml
   ```

   Amazon EC2 인스턴스에서 실행되는 Kubernetes 클러스터의 경우 다음 명령을 입력합니다.

   ```
   curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/prometheus-k8s.yaml
   ```

1. 텍스트 편집기를 사용하여 파일을 열고 `cwagentconfig.json` 섹션을 찾습니다. 다음 하위 섹션을 추가하고 변경 사항을 저장합니다. 이때 들여쓰기가 기존 패턴을 따라야 합니다.

   ```
   {
     "source_labels": ["pod_name"],
     "label_matcher": "^redis-instance$",
     "dimensions": [["Namespace","ClusterName"]],
     "metric_selectors": [
       "^redis_net_(in|out)put_bytes_total$",
       "^redis_(expired|evicted)_keys_total$",
       "^redis_keyspace_(hits|misses)_total$",
       "^redis_memory_used_bytes$",
       "^redis_connected_clients$"
     ]
   },
   {
     "source_labels": ["pod_name"],
     "label_matcher": "^redis-instance$",
     "dimensions": [["Namespace","ClusterName","cmd"]],
     "metric_selectors": [
       "^redis_commands_total$"
     ]
   },
   {
     "source_labels": ["pod_name"],
     "label_matcher": "^redis-instance$",
     "dimensions": [["Namespace","ClusterName","db"]],
     "metric_selectors": [
       "^redis_db_keys$"
     ]
   },
   ```

   추가한 섹션에서는 Redis OSS 지표를 CloudWatch 에이전트 허용 목록에 넣습니다. 해당 지표 목록은 다음 단원을 참조하세요.

1. 이 클러스터에 Prometheus가 지원되는 CloudWatch 에이전트를 이미 배포한 경우 다음 명령을 입력하여 해당 에이전트를 삭제해야 합니다.

   ```
   kubectl delete deployment cwagent-prometheus -n amazon-cloudwatch
   ```

1. 다음 명령 중 하나를 입력하여 업데이트된 구성으로 CloudWatch 에이전트를 배포합니다. *MyCluster* 및 *region*을 설정과 일치하도록 바꿉니다.

   EC2 시작 유형의 Amazon EKS 클러스터의 경우 다음 명령을 입력합니다.

   ```
   kubectl apply -f prometheus-eks.yaml
   ```

   Fargate 시작 유형의 Amazon EKS 클러스터의 경우 다음 명령을 입력합니다.

   ```
   cat prometheus-eks-fargate.yaml \
   | sed "s/{{cluster_name}}/MyCluster/;s/{{region_name}}/region/" \
   | kubectl apply -f -
   ```

   Kubernetes 클러스터의 경우 다음 명령을 입력합니다.

   ```
   cat prometheus-k8s.yaml \
   | sed "s/{{cluster_name}}/MyCluster/;s/{{region_name}}/region/" \
   | kubectl apply -f -
   ```

## Redis OSS Prometheus 지표 보기
<a name="ContainerInsights-Prometheus-Setup-redis-eks-view"></a>

이 튜토리얼에서는 CloudWatch의 **ContainerInsights/Prometheus** 네임스페이스에 다음 지표를 전송합니다. CloudWatch 콘솔을 사용하여 해당 네임스페이스의 지표를 볼 수 있습니다.


| 지표 이름 | 측정기준 | 
| --- | --- | 
|  `redis_net_input_bytes_total` |  ClusterName, `Namespace`   | 
|  `redis_net_output_bytes_total` |  ClusterName, `Namespace`   | 
|  `redis_expired_keys_total` |  ClusterName, `Namespace`   | 
|  `redis_evicted_keys_total` |  ClusterName, `Namespace`   | 
|  `redis_keyspace_hits_total` |  ClusterName, `Namespace`   | 
|  `redis_keyspace_misses_total` |  ClusterName, `Namespace`   | 
|  `redis_memory_used_bytes` |  ClusterName, `Namespace`   | 
|  `redis_connected_clients` |  ClusterName, `Namespace`   | 
|  `redis_commands_total` |  ClusterName, `Namespace`, cmd  | 
|  `redis_db_keys` |  ClusterName, `Namespace`, db  | 

**참고**  
[**cmd**] 측정기준의 값은 `append`, `client`, `command`, `config`, `dbsize`, `flushall`, `get`, `incr`, `info`, `latency` 또는 `slowlog`일 수 있습니다.  
[**db**] 측정기준의 값은 `db0`\$1`db15`일 수 있습니다.

Redis OSS Prometheus 지표에 대한 CloudWatch 대시보드를 생성할 수도 있습니다.

**Redis OSS Prometheus 지표에 대한 대시보드를 생성하는 방법**

1. 환경 변수를 만들어서 아래의 값을 배포와 일치하도록 바꿉니다.

   ```
   DASHBOARD_NAME=your_cw_dashboard_name
   REGION_NAME=your_metric_region_such_as_us-east-1
   CLUSTER_NAME=your_k8s_cluster_name_here
   NAMESPACE=your_redis_service_namespace_here
   ```

1. 다음 명령을 입력하여 대시보드를 생성합니다.

   ```
   curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/sample_cloudwatch_dashboards/redis/cw_dashboard_redis.json \
   | sed "s/{{YOUR_AWS_REGION}}/${REGION_NAME}/g" \
   | sed "s/{{YOUR_CLUSTER_NAME}}/${CLUSTER_NAME}/g" \
   | sed "s/{{YOUR_NAMESPACE}}/${NAMESPACE}/g" \
   ```

# CloudWatch 에이전트의 Prometheus 지표 유형 변환
<a name="ContainerInsights-Prometheus-metrics-conversion"></a>

Prometheus 클라이언트 라이브러리는 다음과 같은 네 가지 핵심 지표 유형을 제공합니다.
+ Counter
+ 게이지
+ 요약
+ 히스토그램

CloudWatch 에이전트는 카운터, 게이지 및 요약 지표 유형을 지원합니다.

 지원되지 않는 히스토그램 지표 유형이 포함된 Prometheus 지표는 CloudWatch 에이전트에서 삭제합니다. 자세한 내용은 [삭제된 Prometheus 지표 로깅](ContainerInsights-Prometheus-troubleshooting-EKS.md#ContainerInsights-Prometheus-troubleshooting-droppedmetrics) 섹션을 참조하세요.

**게이지 지표**

Prometheus 게이지 지표는 임의로 올라가고 내려갈 수 있는 단일 숫자 값을 나타내는 지표입니다. CloudWatch 에이전트는 게이지 지표를 스크레이프하고 해당 값을 곧바로 내보냅니다.

**카운터 지표**

Prometheus 카운터 지표는 값이 증가하거나 0으로 재설정될 수만 있는 단일 단조 증가 카운터를 나타내는 누적 지표입니다. CloudWatch 에이전트는 이전 스크레이프에서 델타를 계산하고 델타 값을 로그 이벤트의 지표 값으로 보냅니다. 따라서 CloudWatch 에이전트는 두 번째 스크레이프에서 하나의 로그 이벤트를 생성하고 후속 스크레이프를 계속합니다(있는 경우).

**요약 지표**

Prometheus 요약 지표는 여러 데이터 요소로 표현되는 복잡한 지표 유형입니다. 이 지표는 총 관측 수 및 모든 관측값의 합계를 제공합니다. 슬라이딩 기간 동안 구성 가능한 분위수를 계산합니다.

요약 지표의 합계 및 개수는 누적되지만 분위수는 누적되지 않습니다. 다음 예에서는 분위수의 분산을 보여 줍니다.

```
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 7.123e-06
go_gc_duration_seconds{quantile="0.25"} 9.204e-06
go_gc_duration_seconds{quantile="0.5"} 1.1065e-05
go_gc_duration_seconds{quantile="0.75"} 2.8731e-05
go_gc_duration_seconds{quantile="1"} 0.003841496
go_gc_duration_seconds_sum 0.37630427
go_gc_duration_seconds_count 9774
```

CloudWatch 에이전트는 이전 단원에서 설명한 대로 카운터 지표를 처리하는 것과 동일한 방식으로 요약 지표의 합계 및 개수를 처리합니다. CloudWatch 에이전트는 원래 보고된 대로 분위수 값을 유지합니다.

# CloudWatch 에이전트가 수집하는 Prometheus 지표
<a name="ContainerInsights-Prometheus-metrics"></a>

Prometheus가 지원되는 CloudWatch 에이전트는 여러 서비스 및 워크로드에서 지표를 자동으로 수집합니다. 기본적으로 수집하는 지표 목록은 다음 단원에 나와 있습니다. 또한 이러한 서비스에서 더 많은 지표를 수집하고 다른 애플리케이션 및 서비스에서 Prometheus 지표를 수집하도록 에이전트를 구성할 수도 있습니다. 추가 지표 수집에 대한 자세한 내용은 [Prometheus에 대한 CloudWatch 에이전트 구성](ContainerInsights-Prometheus-Setup-configure-ECS.md#ContainerInsights-Prometheus-Setup-cw-agent-config) 단원을 참조하세요.

Amazon EKS 및 Kubernetes 클러스터에서 수집된 Prometheus 지표는 **ContainerInsights/Prometheus** 네임스페이스에 있습니다. Amazon ECS 클러스터에서 수집된 Prometheus 지표는 **ECS/ContainerInsights/Prometheus** 네임스페이스에 있습니다.

**Topics**
+ [App Mesh의 Prometheus 지표](#ContainerInsights-Prometheus-metrics-appmesh)
+ [NGINX의 Prometheus 지표](#ContainerInsights-Prometheus-metrics-nginx)
+ [Memcached의 Prometheus 지표](#ContainerInsights-Prometheus-metrics-memcached)
+ [Java/JMX의 Prometheus 지표](#ContainerInsights-Prometheus-metrics-jmx)
+ [HAProxy의 Prometheus 지표](#ContainerInsights-Prometheus-metrics-haproxy)

## App Mesh의 Prometheus 지표
<a name="ContainerInsights-Prometheus-metrics-appmesh"></a>

다음 지표는 App Mesh에서 자동으로 수집됩니다.

**Amazon EKS 및 Kubernetes 클러스터의 App Mesh에 대한 Prometheus 지표**


| 지표 이름 | 측정기준 | 
| --- | --- | 
|  `envoy_http_downstream_rq_total` |  ClusterName, `Namespace`   | 
|  `envoy_http_downstream_rq_xx` |  ClusterName, `Namespace`  ClusterName, `Namespace`, envoy\$1http\$1conn\$1manager\$1prefix, envoy\$1response\$1code\$1class  | 
|  `envoy_cluster_upstream_cx_rx_bytes_total` |  ClusterName, `Namespace`   | 
|  `envoy_cluster_upstream_cx_tx_bytes_total` |  ClusterName, `Namespace`   | 
|  `envoy_cluster_membership_healthy` |  ClusterName, `Namespace`   | 
|  `envoy_cluster_membership_total` |  ClusterName, `Namespace`   | 
|  `envoy_server_memory_heap_size` |  ClusterName, `Namespace`   | 
|  `envoy_server_memory_allocated` |  ClusterName, `Namespace`   | 
|  `envoy_cluster_upstream_cx_connect_timeout` |  ClusterName, `Namespace`   | 
|  `envoy_cluster_upstream_rq_pending_failure_eject` |  ClusterName, `Namespace`   | 
|  `envoy_cluster_upstream_rq_pending_overflow` |  ClusterName, `Namespace`   | 
|  `envoy_cluster_upstream_rq_timeout` |  ClusterName, `Namespace`   | 
|  `envoy_cluster_upstream_rq_try_per_timeout` |  ClusterName, `Namespace`   | 
|  `envoy_cluster_upstream_rq_rx_reset` |  ClusterName, `Namespace`   | 
|  `envoy_cluster_upstream_cx_destroy_local_with_active_rq` |  ClusterName, `Namespace`   | 
|  `envoy_cluster_upstream_cx_destroy_remote_active_rq` |  ClusterName, `Namespace`   | 
|  `envoy_cluster_upstream_rq_maintenance_mode` |  ClusterName, `Namespace`   | 
|  `envoy_cluster_upstream_flow_control_paused_reading_total` |  ClusterName, `Namespace`   | 
|  `envoy_cluster_upstream_flow_control_resumed_reading_total` |  ClusterName, `Namespace`   | 
|  `envoy_cluster_upstream_flow_control_backed_up_total` |  ClusterName, `Namespace`   | 
|  `envoy_cluster_upstream_flow_control_drained_total` |  ClusterName, `Namespace`   | 
|  `envoy_cluster_upstream_rq_retry` |  ClusterName, `Namespace`   | 
|  `envoy_cluster_upstream_rq_retry_success` |  ClusterName, `Namespace`   | 
|  `envoy_cluster_upstream_rq_retry_overflow` |  ClusterName, `Namespace`   | 
|  `envoy_server_live` |  ClusterName, `Namespace`   | 
|  `envoy_server_uptime` |  ClusterName, `Namespace`   | 

**Amazon ECS 클러스터의 App Mesh에 대한 Prometheus 지표**


| 지표 이름 | 측정기준 | 
| --- | --- | 
|  `envoy_http_downstream_rq_total` |  ClusterName, `TaskDefinitionFamily`   | 
|  `envoy_http_downstream_rq_xx` |  ClusterName, `TaskDefinitionFamily`  | 
|  `envoy_cluster_upstream_cx_rx_bytes_total` |  ClusterName, `TaskDefinitionFamily`   | 
|  `envoy_cluster_upstream_cx_tx_bytes_total` |  ClusterName, `TaskDefinitionFamily`   | 
|  `envoy_cluster_membership_healthy` |  ClusterName, `TaskDefinitionFamily`   | 
|  `envoy_cluster_membership_total` |  ClusterName, `TaskDefinitionFamily`   | 
|  `envoy_server_memory_heap_size` |  ClusterName, `TaskDefinitionFamily`   | 
|  `envoy_server_memory_allocated` |  ClusterName, `TaskDefinitionFamily`   | 
|  `envoy_cluster_upstream_cx_connect_timeout` |  ClusterName, `TaskDefinitionFamily`   | 
|  `envoy_cluster_upstream_rq_pending_failure_eject` |  ClusterName, `TaskDefinitionFamily`   | 
|  `envoy_cluster_upstream_rq_pending_overflow` |  ClusterName, `TaskDefinitionFamily`   | 
|  `envoy_cluster_upstream_rq_timeout` |  ClusterName, `TaskDefinitionFamily`   | 
|  `envoy_cluster_upstream_rq_try_per_timeout` |  ClusterName, `TaskDefinitionFamily`   | 
|  `envoy_cluster_upstream_rq_rx_reset` |  ClusterName, `TaskDefinitionFamily`   | 
|  `envoy_cluster_upstream_cx_destroy_local_with_active_rq` |  ClusterName, `TaskDefinitionFamily`   | 
|  `envoy_cluster_upstream_cx_destroy_remote_active_rq` |  ClusterName, `TaskDefinitionFamily`   | 
|  `envoy_cluster_upstream_rq_maintenance_mode` |  ClusterName, `TaskDefinitionFamily`   | 
|  `envoy_cluster_upstream_flow_control_paused_reading_total` |  ClusterName, `TaskDefinitionFamily`   | 
|  `envoy_cluster_upstream_flow_control_resumed_reading_total` |  ClusterName, `TaskDefinitionFamily`   | 
|  `envoy_cluster_upstream_flow_control_backed_up_total` |  ClusterName, `TaskDefinitionFamily`   | 
|  `envoy_cluster_upstream_flow_control_drained_total` |  ClusterName, `TaskDefinitionFamily`   | 
|  `envoy_cluster_upstream_rq_retry` |  ClusterName, `TaskDefinitionFamily`   | 
|  `envoy_cluster_upstream_rq_retry_success` |  ClusterName, `TaskDefinitionFamily`   | 
|  `envoy_cluster_upstream_rq_retry_overflow` |  ClusterName, `TaskDefinitionFamily`   | 
|  `envoy_server_live` |  ClusterName, `TaskDefinitionFamily`   | 
|  `envoy_server_uptime` |  ClusterName, `TaskDefinitionFamily`   | 
|  `envoy_http_downstream_rq_xx` |  ClusterName, TaskDefinitionFamily, envoy\$1http\$1conn\$1manager\$1prefix, envoy\$1response\$1code\$1class ClusterName, TaskDefinitionFamily, envoy\$1response\$1code\$1class | 

**참고**  
`TaskDefinitionFamily`는 Mesh의 Kubernetes 네임스페이스입니다.  
`envoy_http_conn_manager_prefix`의 값은 `ingress`, `egress` 또는 `admin`일 수 있습니다.  
`envoy_response_code_class`의 값은 `1`(`1xx`를 나타냄), `2`(`2xx`를 나타냄), `3`(`3xx`를 나타냄), `4`(`4xx`를 나타냄) 또는 `5`(`5xx`를 나타냄)일 수 있습니다.

## NGINX의 Prometheus 지표
<a name="ContainerInsights-Prometheus-metrics-nginx"></a>

다음 지표는 Amazon EKS 및 Kubernetes 클러스터의 NGINX에서 자동으로 수집됩니다.


| 지표 이름 | 측정기준 | 
| --- | --- | 
|  `nginx_ingress_controller_nginx_process_cpu_seconds_total` |  ClusterName, `Namespace`, 서비스  | 
|  `nginx_ingress_controller_success` |  ClusterName, `Namespace`, 서비스  | 
|  `nginx_ingress_controller_requests` |  ClusterName, `Namespace`, 서비스  | 
|  `nginx_ingress_controller_nginx_process_connections` |  ClusterName, `Namespace`, 서비스  | 
|  `nginx_ingress_controller_nginx_process_connections_total` |  ClusterName, `Namespace`, 서비스  | 
|  `nginx_ingress_controller_nginx_process_resident_memory_bytes` |  ClusterName, `Namespace`, 서비스  | 
|  `nginx_ingress_controller_config_last_reload_successful` |  ClusterName, `Namespace`, 서비스  | 
|  `nginx_ingress_controller_requests` |  ClusterName, `Namespace`, 서비스, 상태  | 

## Memcached의 Prometheus 지표
<a name="ContainerInsights-Prometheus-metrics-memcached"></a>

다음 지표는 Amazon EKS 및 Kubernetes 클러스터의 Memcached에서 자동으로 수집됩니다.


| 지표 이름 | 측정기준 | 
| --- | --- | 
|  `memcached_current_items` |  ClusterName, `Namespace`, 서비스  | 
|  `memcached_current_connections` |  ClusterName, `Namespace`, 서비스  | 
|  `memcached_limit_bytes` |  ClusterName, `Namespace`, 서비스  | 
|  `memcached_current_bytes` |  ClusterName, `Namespace`, 서비스  | 
|  `memcached_written_bytes_total` |  ClusterName, `Namespace`, 서비스  | 
|  `memcached_read_bytes_total` |  ClusterName, `Namespace`, 서비스  | 
|  `memcached_items_evicted_total` |  ClusterName, `Namespace`, 서비스  | 
|  `memcached_items_reclaimed_total` |  ClusterName, `Namespace`, 서비스  | 
|  `memcached_commands_total` |  ClusterName, `Namespace`, 서비스 ClusterName, `Namespace`, 서비스, 명령 ClusterName, `Namespace`, 서비스, 상태, 명령  | 

## Java/JMX의 Prometheus 지표
<a name="ContainerInsights-Prometheus-metrics-jmx"></a>

**Amazon EKS 및 Kubernetes 클러스터에서 수집된 지표**

Amazon EKS 및 Kubernetes 클러스터에서 Container Insights는 JMX Exporter를 사용하여 Java 가상 머신(JVM), Java 및 Tomcat(Catalina)에서 다음과 같은 미리 정의된 Prometheus 지표를 수집할 수 있습니다. 자세한 내용은 Github의 [prometheus/jmx\$1exporter](https://github.com/prometheus/jmx_exporter)를 참조하세요.

**Amazon EKS 및 Kubernetes 클러스터의 Java/JMX**


| 지표 이름 | 측정기준 | 
| --- | --- | 
|  `jvm_classes_loaded` |  `ClusterName`, `Namespace`  | 
|  `jvm_threads_current` |  `ClusterName`, `Namespace`  | 
|  `jvm_threads_daemon` |  `ClusterName`, `Namespace`  | 
|  `java_lang_operatingsystem_totalswapspacesize` |  `ClusterName`, `Namespace`  | 
|  `java_lang_operatingsystem_systemcpuload` |  `ClusterName`, `Namespace`  | 
|  `java_lang_operatingsystem_processcpuload` |  `ClusterName`, `Namespace`  | 
|  `java_lang_operatingsystem_freeswapspacesize` |  `ClusterName`, `Namespace`  | 
|  `java_lang_operatingsystem_totalphysicalmemorysize` |  `ClusterName`, `Namespace`  | 
|  `java_lang_operatingsystem_freephysicalmemorysize` |  `ClusterName`, `Namespace`  | 
|  `java_lang_operatingsystem_openfiledescriptorcount` |  `ClusterName`, `Namespace`  | 
|  `java_lang_operatingsystem_availableprocessors` |  `ClusterName`, `Namespace`  | 
|  `jvm_memory_bytes_used` |  `ClusterName`, `Namespace`, 영역  | 
|  `jvm_memory_pool_bytes_used` |  `ClusterName`, `Namespace`, 풀  | 

**참고**  
`area` 측정기준 값은 `heap` 또는 `nonheap`일 수 있습니다.  
`pool` 측정기준 값은 `Tenured Gen`, `Compress Class Space`, `Survivor Space`, `Eden Space`, `Code Cache` 또는 `Metaspace`일 수 있습니다.

**Amazon EKS 및 Kubernetes 클러스터의 Tomcat/JMX**

이전 테이블의 Java/JMX 지표 외에도 Tomcat 워크로드에 대해 다음 지표가 수집됩니다.


| 지표 이름 | 측정기준 | 
| --- | --- | 
|  `catalina_manager_activesessions` |  `ClusterName`, `Namespace`  | 
|  `catalina_manager_rejectedsessions` |  `ClusterName`, `Namespace`  | 
|  `catalina_globalrequestprocessor_bytesreceived` |  `ClusterName`, `Namespace`  | 
|  `catalina_globalrequestprocessor_bytessent` |  `ClusterName`, `Namespace`  | 
|  `catalina_globalrequestprocessor_requestcount` |  `ClusterName`, `Namespace`  | 
|  `catalina_globalrequestprocessor_errorcount` |  `ClusterName`, `Namespace`  | 
|  `catalina_globalrequestprocessor_processingtime` |  `ClusterName`, `Namespace`  | 

**Amazon ECS 클러스터의 Java/JMX**


| 지표 이름 | 측정기준 | 
| --- | --- | 
|  `jvm_classes_loaded` |  `ClusterName`, `TaskDefinitionFamily`  | 
|  `jvm_threads_current` |  `ClusterName`, `TaskDefinitionFamily`  | 
|  `jvm_threads_daemon` |  `ClusterName`, `TaskDefinitionFamily`  | 
|  `java_lang_operatingsystem_totalswapspacesize` |  `ClusterName`, `TaskDefinitionFamily`  | 
|  `java_lang_operatingsystem_systemcpuload` |  `ClusterName`, `TaskDefinitionFamily`  | 
|  `java_lang_operatingsystem_processcpuload` |  `ClusterName`, `TaskDefinitionFamily`  | 
|  `java_lang_operatingsystem_freeswapspacesize` |  `ClusterName`, `TaskDefinitionFamily`  | 
|  `java_lang_operatingsystem_totalphysicalmemorysize` |  `ClusterName`, `TaskDefinitionFamily`  | 
|  `java_lang_operatingsystem_freephysicalmemorysize` |  `ClusterName`, `TaskDefinitionFamily`  | 
|  `java_lang_operatingsystem_openfiledescriptorcount` |  `ClusterName`, `TaskDefinitionFamily`  | 
|  `java_lang_operatingsystem_availableprocessors` |  `ClusterName`, `TaskDefinitionFamily`  | 
|  `jvm_memory_bytes_used` |  `ClusterName`, TaskDefinitionFamily, 구역  | 
|  `jvm_memory_pool_bytes_used` |  `ClusterName`, TaskDefinitionFamily, 풀  | 

**참고**  
`area` 측정기준 값은 `heap` 또는 `nonheap`일 수 있습니다.  
`pool` 측정기준 값은 `Tenured Gen`, `Compress Class Space`, `Survivor Space`, `Eden Space`, `Code Cache` 또는 `Metaspace`일 수 있습니다.

**Amazon ECS 클러스터의 Tomcat/JMX**

이전 표의 Java/JMX 지표 외에도 Amazon ECS 클러스터의 Tomcat 워크로드에 대해 다음 지표도 수집됩니다.


| 지표 이름 | 측정기준 | 
| --- | --- | 
|  `catalina_manager_activesessions` |  `ClusterName`, `TaskDefinitionFamily`  | 
|  `catalina_manager_rejectedsessions` |  `ClusterName`, `TaskDefinitionFamily`  | 
|  `catalina_globalrequestprocessor_bytesreceived` |  `ClusterName`, `TaskDefinitionFamily`  | 
|  `catalina_globalrequestprocessor_bytessent` |  `ClusterName`, `TaskDefinitionFamily`  | 
|  `catalina_globalrequestprocessor_requestcount` |  `ClusterName`, `TaskDefinitionFamily`  | 
|  `catalina_globalrequestprocessor_errorcount` |  `ClusterName`, `TaskDefinitionFamily`  | 
|  `catalina_globalrequestprocessor_processingtime` |  `ClusterName`, `TaskDefinitionFamily`  | 

## HAProxy의 Prometheus 지표
<a name="ContainerInsights-Prometheus-metrics-haproxy"></a>

다음 지표는 Amazon EKS 및 Kubernetes 클러스터의 HAProxy에서 자동으로 수집됩니다.

수집된 지표는 사용 중인 HAProxy Ingress 버전에 따라 다릅니다. HAProxy Ingress 및 해당 버전에 대한 자세한 내용은 [haproxy-ingress](https://artifacthub.io/packages/helm/haproxy-ingress/haproxy-ingress)를 참조하세요.


| 지표 이름 | 측정기준 | 가용성 | 
| --- | --- | --- | 
|  `haproxy_backend_bytes_in_total` |  `ClusterName`, `Namespace`, 서비스  | 모든 HAProxy Ingress 버전 | 
|  `haproxy_backend_bytes_out_total` |  `ClusterName`, `Namespace`, 서비스  | 모든 HAProxy Ingress 버전 | 
|  `haproxy_backend_connection_errors_total` |  `ClusterName`, `Namespace`, 서비스  | 모든 HAProxy Ingress 버전 | 
|  `haproxy_backend_connections_total` |  `ClusterName`, `Namespace`, 서비스  | 모든 HAProxy Ingress 버전 | 
|  `haproxy_backend_current_sessions` |  `ClusterName`, `Namespace`, 서비스  | 모든 HAProxy Ingress 버전 | 
|  `haproxy_backend_http_responses_total` |  `ClusterName`, `Namespace`, 서비스, 코드, 백엔드  | 모든 HAProxy Ingress 버전 | 
|  `haproxy_backend_status` |  `ClusterName`, `Namespace`, 서비스  |  HAProxy Ingress 버전 0.10 이상에서만  | 
|  `haproxy_backend_up` |  `ClusterName`, `Namespace`, 서비스  |  HAProxy Ingress 버전 0.10 미만에서만  | 
|  `haproxy_frontend_bytes_in_total` |  `ClusterName`, `Namespace`, 서비스  | 모든 HAProxy Ingress 버전 | 
|  `haproxy_frontend_bytes_out_total` |  `ClusterName`, `Namespace`, 서비스  | 모든 HAProxy Ingress 버전 | 
|  `haproxy_frontend_connections_total` |  `ClusterName`, `Namespace`, 서비스  | 모든 HAProxy Ingress 버전 | 
|  `haproxy_frontend_current_sessions` |  `ClusterName`, `Namespace`, 서비스  | 모든 HAProxy Ingress 버전 | 
|  `haproxy_frontend_http_requests_total` |  `ClusterName`, `Namespace`, 서비스  | 모든 HAProxy Ingress 버전 | 
|  `haproxy_frontend_http_responses_total` |  `ClusterName`, `Namespace`, 서비스, 코드, 프런트엔드  | 모든 HAProxy Ingress 버전 | 
|  `haproxy_frontend_request_errors_total` |  `ClusterName`, `Namespace`, 서비스  | 모든 HAProxy Ingress 버전 | 
|  `haproxy_frontend_requests_denied_total` |  `ClusterName`, `Namespace`, 서비스  | 모든 HAProxy Ingress 버전 | 

**참고**  
`code` 측정기준 값은 `1xx`, `2xx`, `3xx`, `4xx`, `5xx` 또는 `other`일 수 있습니다.  
`backend` 측정기준의 값은 다음일 수 있습니다.  
HAProxy Ingress 버전 0.0.27 이하의 경우 `http-default-backend`, `http-shared-backend` 또는 `httpsback-shared-backend`
0.0.27보다 뒤에 출시된 HAProxy Ingress 버전의 경우 `_default_backend`
`frontend` 측정기준의 값은 다음일 수 있습니다.  
HAProxy Ingress 버전 0.0.27 이하의 경우 `httpfront-default-backend`, `httpfront-shared-frontend` 또는 `httpfronts`
0.0.27보다 뒤에 출시된 HAProxy Ingress 버전의 경우 `_front_http` 또는 `_front_https`

# Prometheus 지표 보기
<a name="ContainerInsights-Prometheus-viewmetrics"></a>

App Mesh, NGINX, Java/JMX, Memcached, HAProxy의 큐레이팅되고 사전 집계된 지표 및 사용자가 추가했을 수 있는 수동으로 구성된 기타 Prometheus Exporter를 포함하여 모든 Prometheus 지표를 모니터링하고 경보를 보낼 수 있습니다. 다른 Prometheus 익스포터에서 지표 수집에 대한 자세한 내용은 [새로운 Prometheus 스크레이프 대상을 추가하기 위한 튜토리얼: Prometheus API 서버 지표](ContainerInsights-Prometheus-Setup-configure.md#ContainerInsights-Prometheus-Setup-new-exporters) 단원을 참조하세요.

CloudWatch 콘솔에서 Container Insights는 다음과 같은 사전 구축된 보고서를 제공합니다.
+ Amazon EKS 및 Kubernetes 클러스터의 경우 App Mesh, NGINX, HAPROXY, Memcached, Java/JMX에 대해 사전 구축된 보고서가 있습니다.
+ Amazon ECS 클러스터의 경우 App Mesh 및 Java/JMX에 대해 사전 구축된 보고서가 있습니다.

또한 Container Insights는 Container Insights가 큐레이팅된 지표를 수집하는 각 워크로드에 대한 사용자 지정 대시보드를 제공합니다. GitHub에서 이러한 대시보드를 다운로드할 수 있습니다.

**모든 Prometheus 지표를 보려면**

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

1. 탐색 창에서 **지표**를 선택합니다.

1. 네임스페이스 목록에서 [**ContainerInsights/Prometheus**] 또는 [**ECS/ContainerInsights/Prometheus**]를 선택합니다.

1. 다음 목록에서 측정기준 세트 중 하나를 선택합니다. 그런 다음, 보려는 지표 옆의 확인란을 선택합니다.

**Prometheus 지표에 대한 사전 작성된 보고서를 보려면**

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

1. 탐색 창에서 **성능 모니터링**을 선택합니다.

1. 페이지 상단 근처의 드롭다운 상자에서 Prometheus 옵션을 선택합니다.

   다른 드롭다운 상자에서 보려는 클러스터를 선택합니다.

NGINX, App Mesh, Memcached, HAProxy, Java/JMX에 대한 사용자 지정 대시보드도 제공합니다.

**Amazon에서 제공한 사용자 지정 대시보드를 사용하려면**

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

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

1. **대시보드 생성**을 선택합니다. 새 대시보드의 이름을 입력하고 **대시보드 생성**을 선택합니다.

1. **이 대시보드에 추가**에서 **취소**를 선택합니다.

1. **작업**, **소스 보기/편집**을 선택합니다.

1. 다음 JSON 파일 중 하나를 다운로드합니다.
   + [ Github의 NGINX 사용자 지정 대시보드 소스](https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/sample_cloudwatch_dashboards/nginx-ingress/cw_dashboard_nginx_ingress_controller.json).
   + [Github의 App Mesh 사용자 지정 대시보드 소스](https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/sample_cloudwatch_dashboards/appmesh/cw_dashboard_awsappmesh.json)
   + [ Github의 Memcached 사용자 지정 대시보드 소스](https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/sample_cloudwatch_dashboards/memcached/cw_dashboard_memcached.json)
   + [ Github의 HAProxy-Ingress 사용자 지정 대시보드 소스](https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/sample_cloudwatch_dashboards/haproxy-ingress/cw_dashboard_haproxy_ingress.json)
   + [Github의 Java/JMX 사용자 지정 대시보드 소스](https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/sample_cloudwatch_dashboards/javajmx/cw_dashboard_javajmx.json).

1. 텍스트 편집기로 다운로드한 JSON 파일을 열고, 다음과 같이 변경합니다.
   + 모든 `{{YOUR_CLUSTER_NAME}}` 문자열을 정확한 클러스터 이름으로 바꿉니다. 텍스트 앞이나 뒤에 공백을 추가하지 않도록 하세요.
   + 모든 `{{YOUR_REGION}}` 문자열을 클러스터가 실행되고 있는 AWS 리전으로 바꿉니다. 예를 들어 **us-west-1**으로 바꿉니다. 텍스트 앞뒤에 공백을 추가해서는 안 됩니다.
   + 모든 `{{YOUR_NAMESPACE}}` 문자열을 워크로드의 정확한 네임스페이스로 바꿉니다.
   + 모든 `{{YOUR_SERVICE_NAME}}` 문자열을 워크로드의 정확한 서비스 이름으로 바꿉니다. 예: **haproxy-haproxy-ingress-controller-metrics**

1. JSON blob 전체를 복사하여 CloudWatch 콘솔의 텍스트 상자에 붙여넣어 이미 상자에 있는 내용을 바꿉니다.

1. **업데이트**, **대시보드 저장**을 선택합니다.

# Prometheus 지표 문제 해결
<a name="ContainerInsights-Prometheus-troubleshooting"></a>

이 단원에서는 Prometheus 지표 설정 문제를 해결하기 위한 도움말을 제공합니다.

**Topics**
+ [Amazon ECS의 Prometheus 지표 문제 해결](ContainerInsights-Prometheus-troubleshooting-ECS.md)
+ [Amazon EKS 및 Kubernetes 클러스터의 Prometheus 지표 문제 해결](ContainerInsights-Prometheus-troubleshooting-EKS.md)

# Amazon ECS의 Prometheus 지표 문제 해결
<a name="ContainerInsights-Prometheus-troubleshooting-ECS"></a>

이 단원에서는 Amazon ECS 클러스터에서 Prometheus 지표 설정 문제를 해결하기 위한 도움말을 제공합니다.

## CloudWatch Logs에 전송된 Prometheus 지표가 표시되지 않음
<a name="ContainerInsights-Prometheus-troubleshooting-ECS-nometrics"></a>

Prometheus 지표는 로그 그룹 **/aws/ecs/containerinsights/cluster-name/Prometheus**의 로그 이벤트로 수집됩니다. 로그 그룹이 생성되지 않았거나 Prometheus 지표가 로그 그룹에 전송되지 않은 경우 먼저, CloudWatch 에이전트가 Prometheus 대상을 성공적으로 검색했는지 여부를 확인해야 합니다. 그런 다음, CloudWatch 에이전트의 보안 그룹 및 권한 설정을 확인합니다. 다음 단계에서는 디버깅 수행을 안내합니다.

**1단계: CloudWatch 에이전트 디버깅 모드 사용 설정**

먼저 CloudFormation 템플릿 파일 `cwagent-ecs-prometheus-metric-for-bridge-host.yaml` 또는 `cwagent-ecs-prometheus-metric-for-awsvpc.yaml`에 다음과 같이 굵게 표시된 줄을 추가하여 CloudWatch 에이전트를 디버그 모드로 변경합니다. 그런 다음 파일을 저장합니다.

```
cwagentconfig.json: |
    {
      "agent": {
        "debug": true
      },
      "logs": {
        "metrics_collected": {
```

기존 스택에 대해 새 CloudFormation 변경 세트를 생성합니다. 변경 세트의 다른 파라미터를 기존 CloudFormation 스택과 동일한 값으로 설정합니다. 다음은 EC2 시작 유형 및 브리지 네트워크 모드를 사용하는 Amazon ECS 클러스터에 설치된 CloudWatch 에이전트를 위한 예입니다.

```
ECS_NETWORK_MODE=bridge
 CREATE_IAM_ROLES=True
ECS_TASK_ROLE_NAME=your_selected_ecs_task_role_name
ECS_EXECUTION_ROLE_NAME=your_selected_ecs_execution_role_name
NEW_CHANGESET_NAME=your_selected_ecs_execution_role_name

aws cloudformation create-change-set --stack-name CWAgent-Prometheus-ECS-${ECS_CLUSTER_NAME}-EC2-${ECS_NETWORK_MODE} \
    --template-body file://cwagent-ecs-prometheus-metric-for-bridge-host.yaml \
    --parameters ParameterKey=ECSClusterName,ParameterValue=$ECS_CLUSTER_NAME \
                 ParameterKey=CreateIAMRoles,ParameterValue=$CREATE_IAM_ROLES \
                 ParameterKey=ECSNetworkMode,ParameterValue=$ECS_NETWORK_MODE \
                 ParameterKey=TaskRoleName,ParameterValue=$ECS_TASK_ROLE_NAME \
                 ParameterKey=ExecutionRoleName,ParameterValue=$ECS_EXECUTION_ROLE_NAME \
    --capabilities CAPABILITY_NAMED_IAM \
    --region $AWS_REGION \
    --change-set-name $NEW_CHANGESET_NAME
```

CloudFormation 콘솔로 이동하여 새 변경 세트인 `$NEW_CHANGESET_NAME`을 검토합니다. **CWAgentConfigSSMParameter** 리소스에 적용된 변경 사항 하나가 있어야 합니다. 변경 세트를 실행하고 다음 명령을 입력하여 CloudWatch 에이전트 태스크를 다시 시작합니다.

```
aws ecs update-service --cluster $ECS_CLUSTER_NAME \
--desired-count 0 \
--service your_service_name_here \
--region $AWS_REGION
```

10초 정도 기다린 후 다음 명령을 입력합니다.

```
aws ecs update-service --cluster $ECS_CLUSTER_NAME \
--desired-count 1 \
--service your_service_name_here \
--region $AWS_REGION
```

**2단계: ECS 서비스 검색 로그 확인**

CloudWatch 에이전트의 ECS 태스크 정의는 아래 섹션에서 기본적으로 로그를 사용 설정합니다. 로그는 CloudWatch Logs의 로그 그룹 **/ecs/ecs-cwagent-prometheus**에 전송됩니다.

```
LogConfiguration:
  LogDriver: awslogs
    Options:
      awslogs-create-group: 'True'
      awslogs-group: "/ecs/ecs-cwagent-prometheus"
      awslogs-region: !Ref AWS::Region
      awslogs-stream-prefix: !Sub 'ecs-${ECSLaunchType}-awsvpc'
```

다음 예와 같이 `ECS_SD_Stats` 문자열로 로그를 필터링하여 ECS 서비스 검색과 관련된 지표를 가져옵니다.

```
2020-09-1T01:53:14Z D! ECS_SD_Stats: AWSCLI_DescribeContainerInstances: 1
2020-09-1T01:53:14Z D! ECS_SD_Stats: AWSCLI_DescribeInstancesRequest: 1
2020-09-1T01:53:14Z D! ECS_SD_Stats: AWSCLI_DescribeTaskDefinition: 2
2020-09-1T01:53:14Z D! ECS_SD_Stats: AWSCLI_DescribeTasks: 1
2020-09-1T01:53:14Z D! ECS_SD_Stats: AWSCLI_ListTasks: 1
2020-09-1T01:53:14Z D! ECS_SD_Stats: Exporter_DiscoveredTargetCount: 1
2020-09-1T01:53:14Z D! ECS_SD_Stats: LRUCache_Get_EC2MetaData: 1
2020-09-1T01:53:14Z D! ECS_SD_Stats: LRUCache_Get_TaskDefinition: 2
2020-09-1T01:53:14Z D! ECS_SD_Stats: LRUCache_Size_ContainerInstance: 1
2020-09-1T01:53:14Z D! ECS_SD_Stats: LRUCache_Size_TaskDefinition: 2
2020-09-1T01:53:14Z D! ECS_SD_Stats: Latency: 43.399783ms
```

특정 ECS 서비스 검색 주기에 대한 각 지표의 의미는 다음과 같습니다.
+ **AWSCLI\$1DescribeContainerInstances** – 수행된 `ECS::DescribeContainerInstances` API 호출의 수입니다.
+ **AWSCLI\$1DescribeInstancesRequest** – 수행된 `ECS::DescribeInstancesRequest` API 호출의 수입니다.
+ **AWSCLI\$1DescribeTaskDefinition** – 수행된 `ECS::DescribeTaskDefinition` API 호출의 수입니다.
+ **AWSCLI\$1DescribeTasks** – 수행된 `ECS::DescribeTasks` API 호출의 수입니다.
+ **AWSCLI\$1ListTasks** - 수행된 `ECS::ListTasks` API 호출의 수입니다.
+ **ExporterDiscoveredTargetCount** – 검색되어 컨테이너 내의 대상 결과 파일로 내보낸 Prometheus 대상의 수입니다.
+ **LRUCache\$1Get\$1EC2MetaData** – 컨테이너 인스턴스 메타데이터가 캐시에서 검색된 횟수입니다.
+ **LRUCache\$1Get\$1TaskDefinition** – ECS 태스크 정의 메타데이터가 캐시에서 검색된 횟수입니다.
+ **LRUCache\$1Size\$1ContainerInstance** – 메모리에 캐시된 고유 컨테이너 인스턴스의 메타데이터 수입니다.
+ **LRUCache\$1Size\$1TaskDefinition** – 메모리에 캐시된 고유 ECS 태스크 정의의 수입니다.
+ **Latency** – 서비스 검색 주기에 걸리는 시간입니다.

`ExporterDiscoveredTargetCount` 값을 확인하여 검색된 Prometheus 대상이 예상과 일치하는지 확인하세요. 그렇지 않은 경우 가능한 이유는 다음과 같습니다.
+ ECS 서비스 검색의 구성이 애플리케이션의 설정과 일치하지 않을 수 있습니다. Docker 레이블 기반 서비스 검색의 경우 대상 컨테이너에서 자동 검색에 필요한 Docker 레이블이 CloudWatch 에이전트에 구성되어 있지 않을 수 있습니다. ECS 태스크 정의 ARN 정규 표현식 기반 서비스 검색의 경우 CloudWatch 에이전트의 regex 설정이 애플리케이션의 태스크 정의와 일치하지 않을 수 있습니다.
+ CloudWatch 에이전트의 ECS 태스크 역할에 ECS 태스크의 메타데이터를 검색할 권한이 없을 수 있습니다. CloudWatch 에이전트에 다음과 같은 읽기 전용 권한이 부여되어 있는지 확인합니다.
  + `ec2:DescribeInstances`
  + `ecs:ListTasks`
  + `ecs:DescribeContainerInstances`
  + `ecs:DescribeTasks`
  + `ecs:DescribeTaskDefinition`

**3단계: 네트워크 연결 및 ECS 태스크 역할 정책 확인**

`Exporter_DiscoveredTargetCount` 값이 검색된 Prometheus 대상이 있음을 나타내는데도 여전히 대상 CloudWatch Logs 로그 그룹에 전송된 로그 이벤트가 없다면 이는 다음 중 하나로 인해 발생했을 수 있습니다.
+ CloudWatch 에이전트가 Prometheus 대상 포트에 연결하지 못할 수 있습니다. CloudWatch 에이전트 뒤에 있는 보안 그룹 설정을 확인합니다. 프라이빗 IP는 CloudWatch 에이전트가 Prometheus Exporter 포트에 연결할 수 있도록 허용해야 합니다.
+ CloudWatch 에이전트의 ECS 태스크 역할에 **CloudWatchAgentServerPolicy** 관리형 정책이 없을 수 있습니다. Prometheus 지표를 로그 이벤트로 전송할 수 있으려면 CloudWatch 에이전트의 ECS 태스크 역할에 이 정책이 있어야 합니다. 샘플 CloudFormation 템플릿을 사용하여 IAM 역할을 자동으로 생성했다면 ECS 태스크 역할과 ECS 실행 역할에 모두 Prometheus 모니터링을 수행할 수 있는 최소 권한이 부여됩니다.

# Amazon EKS 및 Kubernetes 클러스터의 Prometheus 지표 문제 해결
<a name="ContainerInsights-Prometheus-troubleshooting-EKS"></a>

이 단원에서는 Amazon EKS 및 Kubernetes 클러스터에서 Prometheus 지표 설정 문제를 해결하기 위한 도움말을 제공합니다.

## Amazon EKS의 일반적인 문제 해결 단계
<a name="ContainerInsights-Prometheus-troubleshooting-general"></a>

CloudWatch 에이전트가 실행 중인지 확인하려면 다음 명령을 입력합니다.

```
kubectl get pod -n amazon-cloudwatch
```

출력에는 `NAME` 열에 `cwagent-prometheus-id`가 있고 `STATUS column.`에 `Running`이 있는 행이 포함되어 있습니다.

실행 중인 포드에 대한 세부 정보를 표시하려면 다음 명령을 입력합니다. *pod-name*을 `cw-agent-prometheus`로 시작하는 이름이 있는 포드의 전체 이름으로 바꿉니다.

```
kubectl describe pod pod-name -n amazon-cloudwatch
```

CloudWatch Container Insights를 설치한 경우 CloudWatch Logs Insights를 사용하여 Prometheus 지표를 수집하는 CloudWatch 에이전트에서 로그를 쿼리할 수 있습니다.

**애플리케이션 로그를 쿼리하려면**

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

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

1. 애플리케이션 로그의 로그 그룹 **/aws/containerinsights/*cluster-name*/application**을 선택합니다.

1. 검색 쿼리 표현식을 다음 쿼리로 바꾸고 **쿼리 실행**을 선택합니다.

   ```
   fields ispresent(kubernetes.pod_name) as haskubernetes_pod_name, stream, kubernetes.pod_name, log | 
   filter haskubernetes_pod_name and kubernetes.pod_name like /cwagent-prometheus
   ```

Prometheus 지표 및 메타데이터가 CloudWatch Logs 이벤트로 수집되고 있는지 확인할 수도 있습니다.

**Prometheus 데이터가 수집되는지 확인하려면**

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

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

1. **/aws/containerinsights/*cluster-name*/prometheus**를 선택합니다.

1. 검색 쿼리 표현식을 다음 쿼리로 바꾸고 **쿼리 실행**을 선택합니다.

   ```
   fields @timestamp, @message | sort @timestamp desc | limit 20
   ```

## 삭제된 Prometheus 지표 로깅
<a name="ContainerInsights-Prometheus-troubleshooting-droppedmetrics"></a>

이 릴리스는 히스토그램 유형의 Prometheus 지표를 수집하지 않습니다. CloudWatch 에이전트를 사용하면 Prometheus 지표가 히스토그램 지표라서 삭제되고 있는지 여부를 확인할 수 있습니다. Prometheus 지표가 히스토그램 지표이므로 삭제되고 CloudWatch에 전송되지 않은 처음 500개의 Prometheus 지표 목록을 로그할 수도 있습니다.

지표가 삭제되는지 확인하려면 다음 명령을 입력합니다.

```
kubectl logs -l "app=cwagent-prometheus" -n amazon-cloudwatch --tail=-1
```

지표가 삭제되는 경우 `/opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log` 파일에 다음 줄이 표시됩니다.

```
I! Drop Prometheus metrics with unsupported types. Only Gauge, Counter and Summary are supported.
I! Please enable CWAgent debug mode to view the first 500 dropped metrics
```

이러한 줄이 표시되는 경우 삭제되는 지표가 무엇인지 알고 싶다면 다음 단계를 사용하세요.

**삭제된 Prometheus 지표 목록을 로깅하려면**

1. `prometheus-eks.yaml` 또는 `prometheus-k8s.yaml` 파일에 다음과 같이 굵게 표시된 줄을 추가하여 CloudWatch 에이전트를 디버그 모드로 변경하고 파일을 저장합니다.

   ```
   {
         "agent": {
           "debug": true
         },
   ```

   파일의 이 섹션은 다음과 같아야 합니다.

   ```
   cwagentconfig.json: |
       {
         "agent": {
           "debug": true
         },
         "logs": {
           "metrics_collected": {
   ```

1. 다음 명령을 입력함으로써 CloudWatch 에이전트를 다시 설치하여 디버그 모드를 사용합니다.

   ```
   kubectl delete deployment cwagent-prometheus -n amazon-cloudwatch
   kubectl apply -f prometheus.yaml
   ```

   삭제된 지표는 CloudWatch 에이전트 포드에 로그됩니다.

1. CloudWatch 에이전트 포드에서 로그를 검색하려면 다음 명령을 입력합니다.

   ```
   kubectl logs -l "app=cwagent-prometheus" -n amazon-cloudwatch --tail=-1
   ```

   또는 Container Insights Fluentd 로깅을 설치한 경우 로그는 CloudWatch Logs 로그 그룹 **/aws/containerinsights/*cluster\$1name*/application**에도 저장됩니다.

   이러한 로그를 쿼리하려면 [Amazon EKS의 일반적인 문제 해결 단계](#ContainerInsights-Prometheus-troubleshooting-general)에서 애플리케이션 로그를 쿼리하는 단계를 수행 할 수 있습니다.

## CloudWatch Logs 로그 이벤트로 수집된 Prometheus 지표는 어디에 있습니까?
<a name="ContainerInsights-Prometheus-troubleshooting-metrics_ingested"></a>

CloudWatch 에이전트는 각 Prometheus 스크레이프 작업 구성에 대한 로그 스트림을 생성합니다. 예를 들어 `prometheus-eks.yaml` 및 `prometheus-k8s.yaml` 파일에서 `job_name: 'kubernetes-pod-appmesh-envoy'` 줄은 App Mesh 지표를 스크레이프합니다. Prometheus 대상은 `kubernetes-pod-appmesh-envoy`로 정의됩니다. 따라서 모든 App Mesh Prometheus 지표는 **/aws/containerinsights/cluster-name/Prometheus**라는 로그 그룹 아래의 로그 스트림 **kubernetes-pod-appmesh-envoy**에 CloudWatch Logs 이벤트로 수집됩니다.

## CloudWatch 지표에 Amazon EKS 또는 Kubernetes Prometheus 지표가 표시되지 않음
<a name="ContainerInsights-Prometheus-troubleshooting-no-metrics"></a>

먼저 Prometheus 지표가 로그 그룹 **/aws/containerinsights/cluster-name/Prometheus**의 로그 이벤트로 수집되는지 확인합니다. [CloudWatch Logs 로그 이벤트로 수집된 Prometheus 지표는 어디에 있습니까?](#ContainerInsights-Prometheus-troubleshooting-metrics_ingested)의 정보를 사용하여 대상 로그 스트림을 확인할 수 있습니다. 로그 스트림이 생성되지 않았거나 로그 스트림에 새 로그 이벤트가 없는 경우 다음을 확인하세요.
+ Prometheus 지표 익스포터 엔드포인트가 올바르게 설정되었는지 확인합니다.
+ CloudWatch 에이전트 YAML 파일의 `config map: cwagent-prometheus` 섹션에서 Prometheus 스크레이핑 구성이 올바른지 확인합니다. 구성은 Prometheus 구성 파일에 있는 구성과 동일해야 합니다. 자세한 내용은 Prometheus 설명서의 [<scrape\$1config>](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config)를 참조하세요.

Prometheus 지표가 로그 이벤트로 올바르게 수집되는 경우, 포함된 지표 형식 설정이 로그 이벤트에 추가되어 CloudWatch 지표를 생성하는지 확인합니다.

```
"CloudWatchMetrics":[
   {
      "Metrics":[
         {
            "Name":"envoy_http_downstream_cx_destroy_remote_active_rq"
         }
      ],
      "Dimensions":[
         [
            "ClusterName",
            "Namespace"
         ]
      ],
      "Namespace":"ContainerInsights/Prometheus"
   }
],
```

포함된 지표 형식에 대한 자세한 내용은 [사양: 임베디드 지표 형식](CloudWatch_Embedded_Metric_Format_Specification.md) 단원을 참조하세요.

로그 이벤트에 임베디드 지표 형식이 없는 경우 CloudWatch 에이전트 설치 YAML 파일의 `config map: prometheus-cwagentconfig` 섹션에서 `metric_declaration` 섹션이 올바르게 구성되었는지 확인합니다. 자세한 내용은 [새로운 Prometheus 스크레이프 대상을 추가하기 위한 튜토리얼: Prometheus API 서버 지표](ContainerInsights-Prometheus-Setup-configure.md#ContainerInsights-Prometheus-Setup-new-exporters) 섹션을 참조하세요.

# Application Insights와 통합
<a name="container-insights-appinsights"></a>

Amazon CloudWatch Application Insights는 애플리케이션 리소스와 기술 스택 전반에 걸쳐 애플리케이션을 모니터링하고 주요 지표, 로그, 경보를 식별 및 설정하는 데 도움이 됩니다. 자세한 내용은 [CloudWatch Application Insights로 일반적인 애플리케이션 문제 감지](cloudwatch-application-insights.md) 섹션을 참조하세요.

Application Insights를 활성화하여 컨테이너화 애플리케이션 및 마이크로서비스에서 추가 데이터를 수집할 수 있습니다. 아직 Application Insights를 활성화하지 않은 경우 Container Insights 대시보드의 성능 보기 아래에 있는 **Application Insights 자동 구성(Auto-configure Application Insights)**을 선택해 활성화할 수 있습니다.

컨테이너화된 애플리케이션을 모니터링하도록 CloudWatch Application Insights를 이미 설정한 경우 Application Insights 대시보드가 Container Insights 대시보드 아래에 표시됩니다.

Application Insights 및 컨테이너화 애플리케이션에 대한 자세한 내용은 [Amazon ECS 및 Amazon EKS 리소스 모니터링을 위한 Application Insights 활성화](appinsights-setting-up-console.md#appinsights-container-insights) 섹션을 참조하세요.

# Container Insights 내에서 Amazon ECS 수명 주기 이벤트 보기
<a name="container-insights-ECS-lifecycle-events"></a>

Container Insights 콘솔 내에서 Amazon ECS 수명 주기 이벤트를 볼 수 있습니다. 이렇게 하면 단일 보기에서 컨테이너 지표, 로그 및 이벤트의 상관 관계를 지정하여 보다 완전한 운영 가시성을 확보할 수 있습니다.

이벤트에는 컨테이너 인스턴스 상태 변경 이벤트, 태스크 상태 변경 이벤트 및 서비스 작업 이벤트가 포함됩니다. 이러한 이벤트는 Amazon ECS에서 Amazon EventBridge로 자동 전송되며 이벤트 로그 형식으로 CloudWatch에서도 수집됩니다. 이러한 이벤트에 대한 자세한 내용을 알아보려면 [Amazon ECS 이벤트](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_cwe_events.html)를 참조하세요.

표준 Container Insights 요금은 Amazon ECS 수명 주기 이벤트에 적용됩니다. 자세한 내용은 [Amazon CloudWatch 요금](https://aws.amazon.com/cloudwatch/pricing/)을 참조하세요.

수명 주기 이벤트의 테이블을 구성하고 클러스터에 대한 규칙을 생성하려면 `events:PutRule`, `events:PutTargets` 및 `logs:CreateLogGroup` 권한이 있어야 합니다. 또한 EventBridge가 로그 스트림을 생성하고 로그를 CloudWatch Logs로 전송하도록 지원하는 리소스 정책이 있는지도 확인해야 합니다. 이 리소스 정책이 없는 경우 다음 명령을 입력하여 생성할 수 있습니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogStream",
        "logs:PutLogEvents"
      ],
      "Principal": {
        "Service": ["events.amazonaws.com", "delivery.logs.amazonaws.com"]
      },
      "Resource": "arn:aws:logs:us-east-1:111122223333:log-group:/aws/events/ecs/containerinsights/*:*",
      "Condition": {
        "StringEquals": {
        "aws:SourceAccount": "111122223333"
        },
        "ArnLike": {
        "aws:SourceArn": "arn:aws:events:us-east-1:111122223333:rule/eventsToLog*"
        }
      },
      "Sid": "TrustEventBridgeToStoreECSLifecycleLogEvents"
    }
  ]
}
```

------

다음 명령을 사용하여 이 정책이 이미 있는지 확인하고 정책이 제대로 연결되었는지 확인할 수 있습니다.

```
aws logs describe-resource-policies --region region --output json
```

수명 주기 이벤트 테이블을 보려면 `events:DescribeRule`, `events:ListTargetsByRule` 및 `logs:DescribeLogGroups` 권한이 있어야 합니다.

**CloudWatch Container Insights 콘솔에서 Amazon ECS 수명 주기 이벤트 보기**

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

1. **Insights**, **Container Insights**를 선택합니다.

1. **성능 대시보드 보기**를 선택합니다.

1. 다음 드롭다운에서 **ECS Clusters**(ECS 클러스터), **ECS Services**(ECS 서비스) 또는 **ECS Tasks**(ECS 태스크)를 선택합니다.

1. 이전 단계에서 **ECS Services**(ECS 서비스) 또는 **ECS Tasks**(ECS 태스크)를 선택한 경우 **Lifecycle events**(수명 주기 이벤트) 탭을 선택합니다.

1. 페이지 하단에 **Configure lifecycle events**(수명 주기 이벤트 구성)가 표시되면 이를 선택하여 클러스터에 대한 EventBridge 규칙을 생성합니다.

   이벤트는 Container Insights 창 아래와 Application Insights 섹션 위에 표시됩니다. 추가 분석을 실행하고 이러한 이벤트에 대한 추가 시각화를 생성하려면 Lifecycle Events(수명 주기 이벤트) 테이블에서 **View in Logs Insights**(Logs Insights에서 보기)를 선택합니다.

# Container Insights 문제 해결
<a name="ContainerInsights-troubleshooting"></a>

Container Insights에 문제가 있는 경우 다음 단원을 참조하면 도움이 됩니다.

## Amazon EKS 또는 Kubernetes에서 배포 실패
<a name="ContainerInsights-setup-EKS-troubleshooting-general"></a>

에이전트가 Kubernetes 클러스터에 올바르게 배포하지 않는 경우 다음을 수행해 보세요.
+ 다음 명령을 실행하여 Pod 목록을 가져옵니다.

  ```
  kubectl get pods -n amazon-cloudwatch
  ```
+ 다음 명령을 실행하고 출력 하단에서 이벤트를 확인합니다.

  ```
  kubectl describe pod pod-name -n amazon-cloudwatch
  ```
+ 다음 명령을 실행하여 로그를 확인합니다.

  ```
  kubectl logs pod-name -n amazon-cloudwatch
  ```

## 권한이 없는 패닉: Kubelet에서 cadvisor 데이터를 검색할 수 없음
<a name="ContainerInsights-setup-EKS-troubleshooting-permissions"></a>

`Unauthorized panic: Cannot retrieve cadvisor data from kubelet` 오류가 표시되면서 배포에 실패한 경우 kubelet 에 Webhook 인증 모드가 활성화되어 있지 않을 수 있습니다. 이는 Container Insights에 필요한 모드입니다. 자세한 내용은 [CloudWatch에서 Container Insights에 대한 사전 요구 사항 확인](Container-Insights-prerequisites.md) 섹션을 참조하세요.

## 삭제하고 다시 생성한 Amazon ECS의 클러스터에 Container Insights 배포
<a name="ContainerInsights-troubleshooting-recreate"></a>

Container Insights가 사용되지 않은 기존 Amazon ECS 클러스터를 삭제하고 같은 이름으로 다시 생성하는 경우 다시 생성하는 시점에는 이 새 클러스터에서 Container Insights를 사용할 수 없습니다. 다시 생성한 후 다음 명령을 입력해야만 활성화할 수 있습니다.

```
aws ecs update-cluster-settings --cluster myCICluster --settings name=container Insights,value=enabled
```

## 잘못된 엔드포인트 오류
<a name="ContainerInsights-setup-invalid-endpoint"></a>

다음과 유사한 오류 메시지가 표시되는 경우 사용하는 명령의 *cluster-name* 및 *region-name* 같은 자리 표시자를 모두 배포에 해당하는 올바른 정보로 바꿨는지 확인합니다.

```
"log": "2020-04-02T08:36:16Z E! cloudwatchlogs: code: InvalidEndpointURL, message: invalid endpoint uri, original error: &url.Error{Op:\"parse\", URL:\"https://logs.{{region_name}}.amazonaws.com/\", Err:\"{\"}, &awserr.baseError{code:\"InvalidEndpointURL\", message:\"invalid endpoint uri\", errs:[]error{(*url.Error)(0xc0008723c0)}}\n",
```

## 콘솔에 지표가 나타나지 않음
<a name="ContainerInsights-setup-EKS-troubleshooting-nometrics"></a>

AWS Management Console에 Container Insights 지표가 보이지 않는 경우 Container Insights 설정을 완료했는지 확인합니다. Container Insights가 완전히 설정되지 않으면 지표가 나타나지 않습니다. 자세한 내용은 [Container Insights 설정](deploy-container-insights.md) 섹션을 참조하세요.

## 클러스터를 업그레이드한 후 Amazon EKS 또는 Kubernetes에서 포드 지표가 누락됨
<a name="ContainerInsights-troubleshooting-podmetrics-missing"></a>

이 섹션은 CloudWatch 에이전트를 새 클러스터 또는 업그레이드된 클러스터에 DaemonSet로 배포한 후 전체 또는 일부 포드 지표가 누락되거나 `W! No pod metric collected` 메시지와 함께 오류 로그가 표시되는 경우에 유용할 수 있습니다.

이러한 오류는 containerd 또는 docker systemd cgroup 드라이버와 같은 컨테이너 런타임의 변경으로 인해 발생할 수 있습니다. 일반적으로 호스트의 containerd 소켓이 컨테이너에 탑재되도록 배포 매니페스트를 업데이트함으로써 이 문제를 해결할 수 있습니다. 다음 예를 참조하세요.

```
# For full example see https://github.com/aws-samples/amazon-cloudwatch-container-insights/blob/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights-monitoring/cwagent/cwagent-daemonset.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: cloudwatch-agent
  namespace: amazon-cloudwatch
spec:
  template:
    spec:
      containers:
        - name: cloudwatch-agent
# ...
          # Don't change the mountPath
          volumeMounts:
# ...
            - name: dockersock
              mountPath: /var/run/docker.sock
              readOnly: true
            - name: varlibdocker
              mountPath: /var/lib/docker
              readOnly: true
            - name: containerdsock # NEW mount
              mountPath: /run/containerd/containerd.sock
              readOnly: true
# ...
      volumes:
# ...
        - name: dockersock
          hostPath:
            path: /var/run/docker.sock
        - name: varlibdocker
          hostPath:
            path: /var/lib/docker
        - name: containerdsock # NEW volume
          hostPath:
            path: /run/containerd/containerd.sock
```

## Amazon EKS에 Bottlerocket을 사용할 때 포드 지표가 없음
<a name="ContainerInsights-troubleshooting-bottlerocket"></a>

Bottlerocket은 AWS에서 컨테이너를 실행하기 위해 특별히 구축한 Linux 기반 오픈 소스 운영 체제입니다.

Bottlerocket은 호스트에서 다른 `containerd` 경로를 사용하므로 볼륨을 해당 위치로 변경해야 합니다. 그러지 않으면 `W! No pod metric collected`가 포함된 오류가 로그에 표시됩니다. 다음 예제를 참조하세요.

```
volumes:
  # ... 
    - name: containerdsock
      hostPath:
        # path: /run/containerd/containerd.sock
        # bottlerocket does not mount containerd sock at normal place
        # https://github.com/bottlerocket-os/bottlerocket/commit/91810c85b83ff4c3660b496e243ef8b55df0973b
        path: /run/dockershim.sock
```

## Amazon EKS 또는 Kubernetes에 containerd 런타임을 사용할 때 컨테이너 파일 시스템 지표가 없음
<a name="ContainerInsights-troubleshooting-containerd"></a>

이는 알려진 문제이며, 커뮤니티 기여자가 이 문제를 해결하기 위해 노력하고 있습니다. 자세한 내용은 GitHub에서 [containerd의 디스크 사용량 지표](https://github.com/google/cadvisor/issues/2785) 및 [containerd용 cadvisor에서 컨테이너 파일 시스템 지표를 지원하지 않음](https://github.com/aws/amazon-cloudwatch-agent/issues/192)을 참조하세요.

## Prometheus 지표를 수집할 때 CloudWatch 에이전트에서 예상치 못한 로그 볼륨 증가
<a name="ContainerInsights-troubleshooting-log-volume-increase"></a>

이는 CloudWatch 에이전트 버전 1.247347.6b250880에 도입된 회귀였습니다. 이 회귀는 최신 버전의 에이전트에서 이미 수정되었습니다. 따라서 이 문제의 영향은 고객이 CloudWatch 에이전트 자체의 로그를 수집하고 Prometheus도 사용하는 시나리오로 제한되었습니다. 자세한 내용은 GitHub에서 [[prometheus] 에이전트가 로그에 스크레이프한 모든 지표를 인쇄하고 있음](https://github.com/aws/amazon-cloudwatch-agent/issues/209)을 참조하세요.

## 릴리스 정보에 언급된 최신 Docker 이미지를 DockerHub에서 찾을 수 없음
<a name="ContainerInsights-troubleshooting-docker-image"></a>

내부적으로 실제 릴리스를 시작하기 전에 Github에서 릴리스 정보와 태그를 업데이트합니다. Github에 버전 번호를 올린 후 레지스트리에서 최신 Docker 이미지를 확인하는 데 일반적으로 1\$12주가 걸립니다. CloudWatch 에이전트 컨테이너 이미지에 대한 야간 릴리스는 없습니다. 다음 위치의 소스에서 직접 이미지를 구축할 수 있습니다. [https://github.com/aws/amazon-cloudwatch-agent/tree/main/amazon-cloudwatch-container-insights/cloudwatch-agent-dockerfile](https://github.com/aws/amazon-cloudwatch-agent/tree/main/amazon-cloudwatch-container-insights/cloudwatch-agent-dockerfile)

## CloudWatch 에이전트의 CrashLoopBackoff 오류
<a name="ContainerInsights-troubleshooting-crashloopbackoff"></a>

CloudWatch 에이전트에 대해 `CrashLoopBackOff` 오류가 표시되면 IAM 권한이 정확하게 설정되어 있는지 확인합니다. 자세한 내용은 [CloudWatch에서 Container Insights에 대한 사전 요구 사항 확인](Container-Insights-prerequisites.md) 섹션을 참조하세요.

## CloudWatch 에이전트 또는 Fluentd 포드가 보류 상태에서 멈춤
<a name="ContainerInsights-troubleshooting-pending"></a>

`Pending` 상태에서 멈춰 있거나 `FailedScheduling` 오류가 있는 CloudWatch 에이전트 또는 Fluentd 포드가 있는 경우 에이전트에 필요한 코어 수와 RAM 양을 기반으로 노드에 충분한 컴퓨팅 리소스가 있는지 확인합니다. 다음 명령을 입력하여 Pod를 설명합니다.

```
kubectl describe pod cloudwatch-agent-85ppg -n amazon-cloudwatch
```

# 자체 CloudWatch 에이전트 Docker 이미지 구축
<a name="ContainerInsights-build-docker-image"></a>

[https://github.com/aws-samples/amazon-cloudwatch-container-insights/blob/latest/cloudwatch-agent-dockerfile/Dockerfile](https://github.com/aws-samples/amazon-cloudwatch-container-insights/blob/latest/cloudwatch-agent-dockerfile/Dockerfile)에 있는 Dockerfile을 참조하여 자체 CloudWatch 에이전트 Docker 이미지를 구축할 수 있습니다.

Dockerfile은 `docker buildx`를 사용한 직접 다중 아키텍처 이미지 구축을 지원합니다.

# 컨테이너에 다른 CloudWatch 에이전트 기능 배포
<a name="ContainerInsights-other-agent-features"></a>

CloudWatch 에이전트를 사용하여 컨테이너에 추가 모니터링 기능을 배포할 수 있습니다. 이러한 특성은 다음과 같습니다.
+ **임베디드 지표 형식** - 자세한 내용은 [로그 내에 지표 포함](CloudWatch_Embedded_Metric_Format.md) 단원을 참조하세요.
+ **StatsD** - 자세한 내용은 [StatsD를 사용하여 사용자 지정 지표 검색](CloudWatch-Agent-custom-metrics-statsd.md) 단원을 참조하세요.

지침 및 필요한 파일은 GitHub의 다음 위치에 있습니다.
+ Amazon ECS 컨테이너의 경우 [배포 모드를 기반으로 한 Amazon ECS 태스크 정의 예](https://github.com/aws-samples/amazon-cloudwatch-container-insights/tree/latest/ecs-task-definition-templates/deployment-mode)를 참조하세요.
+ Amazon EKS 및 Kubernetes 컨테이너의 경우 [배포 모드를 기반으로 한 Kubernetes YAML 파일 예](https://github.com/aws-samples/amazon-cloudwatch-container-insights/tree/latest/k8s-deployment-manifest-templates/deployment-mode)를 참조하세요.

# Lambda Insights
<a name="Lambda-Insights"></a>

CloudWatch Lambda Insights는 AWS Lambda에서 실행되는 서버리스 애플리케이션에 대한 모니터링 및 문제 해결 솔루션입니다. 이 솔루션은 CPU 시간, 메모리, 디스크, 네트워크를 비롯한 시스템 수준 지표를 수집하고 집계하며 요약합니다. 또한 콜드 스타트 및 Lambda 작업자 종료와 같은 진단 정보를 수집, 집계 및 요약하여 Lambda 함수 관련 문제를 격리하고 신속하게 해결할 수 있도록 지원합니다.

Lambda Insights는 Lambda 계층으로 제공되는 새로운 CloudWatch Lambda 익스텐션을 사용합니다. Lambda 함수에 이 익스텐션을 설치하면 Lambda 익스텐션은 시스템 수준 지표를 수집하며 해당 Lambda 함수가 호출될 때마다 단일 성능 로그 이벤트를 내보냅니다. CloudWatch는 포함된 지표 서식을 사용하여 로그 이벤트에서 지표를 추출합니다.

**참고**  
Lambda Insights 에이전트는 Amazon Linux 2 및 Amazon Linux 2023을 사용하는 Lambda 런타임에서만 지원됩니다.

Lambda 익스텐션에 대한 자세한 내용은 [AWS Lambda 익스텐션 사용](https://docs.aws.amazon.com/lambda/latest/dg/using-extensions.html) 단원을 참조하세요. 포함된 지표 형식에 대한 자세한 내용은 [로그 내에 지표 포함](CloudWatch_Embedded_Metric_Format.md) 단원을 참조하세요.

Lambda 익스텐션을 지원하는 Lambda 런타임을 사용하는 Lambda 함수와 함께 Lambda Insights를 사용할 수 있습니다. 이러한 런타임 목록은 [Lambda 익스텐션 API](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-extensions-api.html) 단원을 참조하세요.

**요금**

Lambda Insights를 활성화한 각 Lambda 함수에 대해 사용자는 지표 및 로그에 사용한 만큼만 비용을 지불합니다. 요금 예는 [Amazon CloudWatch 요금](https://aws.amazon.com/cloudwatch/pricing/)을 참조하세요.

Lambda 확장 기능에서 사용한 실행 시간에 대해 1밀리초 단위로 요금이 청구됩니다. Lambda 요금에 대한 자세한 내용은 [AWS Lambda 요금](https://aws.amazon.com/lambda/pricing/)을 참조하세요.

# Lambda Insights 시작하기
<a name="Lambda-Insights-Getting-Started"></a>

Lambda 함수에서 Lambda Insights를 사용하려면 Lambda 콘솔에서 원클릭 토글을 사용하면 됩니다. 또는 AWS CLI, CloudFormation, AWS Serverless Application Model CLI 또는 AWS Cloud Development Kit (AWS CDK)를 사용해도 됩니다.

다음 단원에서는 이러한 단계를 완료하기 위한 자세한 지침을 제공합니다.

**Topics**
+ [사용 가능한 Lambda Insights 익스텐션 버전](Lambda-Insights-extension-versions.md)
+ [콘솔을 사용하여 기존 Lambda 함수에서 Lambda Insights 사용 설정](Lambda-Insights-Getting-Started-console.md)
+ [AWS CLI를 사용하여 기존 Lambda 함수에서 Lambda Insights 활성화](Lambda-Insights-Getting-Started-cli.md)
+ [AWS SAM CLI를 사용하여 기존 Lambda 함수에서 Lambda Insights 활성화](Lambda-Insights-Getting-Started-SAM-CLI.md)
+ [CloudFormation을 사용하여 기존 Lambda 함수에서 Lambda Insights 활성화](Lambda-Insights-Getting-Started-cloudformation.md)
+ [AWS CDK를 사용하여 기존 Lambda 함수에서 Lambda Insights 활성화](Lambda-Insights-Getting-Started-clouddevelopmentkit.md)
+ [Serverless Framework를 사용하여 기존 Lambda 함수에서 Lambda Insights 활성화](Lambda-Insights-Getting-Started-serverless.md)
+ [Lambda 컨테이너 이미지 배포에서 Lambda Insights 활성화](Lambda-Insights-Getting-Started-docker.md)
+ [함수에 대한 Lambda Insights 확장 버전 업데이트](Lambda-Insights-Update-Extension.md)

# 사용 가능한 Lambda Insights 익스텐션 버전
<a name="Lambda-Insights-extension-versions"></a>

이 단원에서는 Lambda Insights 익스텐션 버전과 각 AWS 리전에서 이러한 익스텐션에 사용할 ARN을 설명합니다.

**Topics**
+ [x86-64 플랫폼](Lambda-Insights-extension-versionsx86-64.md)
+ [ARM64 플랫폼](Lambda-Insights-extension-versionsARM.md)

# x86-64 플랫폼
<a name="Lambda-Insights-extension-versionsx86-64"></a>

이 섹션에서는 x86-64 플랫폼용 Lambda Insights 익스텐션 버전과 각 AWS 리전에서 이러한 익스텐션에 사용할 ARN을 나열합니다.

**중요**  
Lambda Insights 확장 1.0.317.0 이상은 Amazon Linux 1을 지원하지 않습니다.

## 1.0.660.0
<a name="Lambda-Insights-extension-1.0.660.0"></a>

1.0.660.0 버전에는 Lambda 관리형 인스턴스에서 실행되는 Lambda 함수에 대한 Lambda Insights 확장 지원이 포함됩니다. Lambda 관리형 인스턴스에서 실행되는 함수의 경우, 확장 프로그램은 1분에 한 번씩 EMF 로그 이벤트를 전송하여 1분 기준으로 세분화된 CloudWatch 지표 12개를 생성합니다.

**1.0.660.0 버전용 ARN**

다음 표에는 익스텐션을 사용할 수 있는 각 AWS 리전에서 이 익스텐션 버전에 사용할 ARN이 나와 있습니다.


| 리전 | ARN | 
| --- | --- | 
|  미국 동부(버지니아 북부) |  `arn:aws:lambda:us-east-1:580247275435:layer:LambdaInsightsExtension:64`  | 
|  미국 동부(오하이오) |  `arn:aws:lambda:us-east-2:580247275435:layer:LambdaInsightsExtension:64`  | 
|  미국 서부(캘리포니아 북부) |  `arn:aws:lambda:us-west-1:580247275435:layer:LambdaInsightsExtension:64`  | 
|  미국 서부(오리건) |  `arn:aws:lambda:us-west-2:580247275435:layer:LambdaInsightsExtension:64`  | 
|  아프리카(케이프타운) |  `arn:aws:lambda:af-south-1:012438385374:layer:LambdaInsightsExtension:56`  | 
|  아시아 태평양(홍콩) |  `arn:aws:lambda:ap-east-1:519774774795:layer:LambdaInsightsExtension:56`  | 
|  아시아 태평양(하이데라바드) |  `arn:aws:lambda:ap-south-2:891564319516:layer:LambdaInsightsExtension:38`  | 
|  아시아 태평양(자카르타) |  `arn:aws:lambda:ap-southeast-3:439286490199:layer:LambdaInsightsExtension:40`  | 
|  아시아 태평양(말레이시아) |  `arn:aws:lambda:ap-southeast-5:590183865173:layer:LambdaInsightsExtension:13`  | 
|  아시아 태평양(멜버른) |  `arn:aws:lambda:ap-southeast-4:158895979263:layer:LambdaInsightsExtension:33`  | 
|  아시아 태평양(뭄바이) |  `arn:aws:lambda:ap-south-1:580247275435:layer:LambdaInsightsExtension:62`  | 
|  아시아 태평양(뉴질랜드) |  `arn:aws:lambda:ap-southeast-6:727646510379:layer:LambdaInsightsExtension:6`  | 
|  아시아 태평양(오사카) |  `arn:aws:lambda:ap-northeast-3:194566237122:layer:LambdaInsightsExtension:45`  | 
|  아시아 태평양(서울) |  `arn:aws:lambda:ap-northeast-2:580247275435:layer:LambdaInsightsExtension:63`  | 
|  아시아 태평양(싱가포르) |  `arn:aws:lambda:ap-southeast-1:580247275435:layer:LambdaInsightsExtension:64`  | 
|  아시아 태평양(시드니) |  `arn:aws:lambda:ap-southeast-2:580247275435:layer:LambdaInsightsExtension:64`  | 
|  아시아 태평양(타이베이) |  `arn:aws:lambda:ap-east-2:145023102084:layer:LambdaInsightsExtension:13`  | 
|  아시아 태평양(태국) |  `arn:aws:lambda:ap-southeast-7:761018874580:layer:LambdaInsightsExtension:13`  | 
|  아시아 태평양(도쿄) |  `arn:aws:lambda:ap-northeast-1:580247275435:layer:LambdaInsightsExtension:91`  | 
|  캐나다(중부) |  `arn:aws:lambda:ca-central-1:580247275435:layer:LambdaInsightsExtension:63`  | 
|  캐나다 서부(캘거리) |  `arn:aws:lambda:ca-west-1:946466191631:layer:LambdaInsightsExtension:25`  | 
|  중국(베이징) |  `arn:aws-cn:lambda:cn-north-1:488211338238:layer:LambdaInsightsExtension:51`  | 
|  중국(닝샤) |  `arn:aws-cn:lambda:cn-northwest-1:488211338238:layer:LambdaInsightsExtension:51`  | 
|  유럽(프랑크푸르트) |  `arn:aws:lambda:eu-central-1:580247275435:layer:LambdaInsightsExtension:64`  | 
|  유럽(아일랜드) |  `arn:aws:lambda:eu-west-1:580247275435:layer:LambdaInsightsExtension:64`  | 
|  유럽(런던) |  `arn:aws:lambda:eu-west-2:580247275435:layer:LambdaInsightsExtension:64`  | 
|  유럽(밀라노) |  `arn:aws:lambda:eu-south-1:339249233099:layer:LambdaInsightsExtension:56`  | 
|  유럽(파리) |  `arn:aws:lambda:eu-west-3:580247275435:layer:LambdaInsightsExtension:63`  | 
|  유럽(스페인) |  `arn:aws:lambda:eu-south-2:352183217350:layer:LambdaInsightsExtension:40`  | 
|  유럽(스톡홀름) |  `arn:aws:lambda:eu-north-1:580247275435:layer:LambdaInsightsExtension:61`  | 
|  유럽(취리히) |  `arn:aws:lambda:eu-central-2:033019950311:layer:LambdaInsightsExtension:39`  | 
|  이스라엘(텔아비브) |  `arn:aws:lambda:il-central-1:459530977127:layer:LambdaInsightsExtension:33`  | 
|  멕시코(중부) |  `arn:aws:lambda:mx-central-1:879381266642:layer:LambdaInsightsExtension:13`  | 
|  중동(바레인) |  `arn:aws:lambda:me-south-1:285320876703:layer:LambdaInsightsExtension:56`  | 
|  중동(UAE) |  `arn:aws:lambda:me-central-1:732604637566:layer:LambdaInsightsExtension:39`  | 
|  남아메리카(상파울루) |  `arn:aws:lambda:sa-east-1:580247275435:layer:LambdaInsightsExtension:63`  | 
|  AWS GovCloud(미국 동부) |  `arn:aws-us-gov:lambda:us-gov-east-1:122132214140:layer:LambdaInsightsExtension:24`  | 
|  AWS GovCloud(미국 서부) |  `arn:aws-us-gov:lambda:us-gov-west-1:751350123760:layer:LambdaInsightsExtension:24`  | 

## 1.0.498.0
<a name="Lambda-Insights-extension-1.0.498.0"></a>

1.0.498.0 버전에는 버그 수정 및 성능 개선 사항이 포함됩니다.

**1.0.498.0 버전용 ARN**

다음 표에는 익스텐션을 사용할 수 있는 각 AWS 리전에서 이 익스텐션 버전에 사용할 ARN이 나와 있습니다.


| 리전 | ARN | 
| --- | --- | 
|  미국 동부(버지니아 북부) |  `arn:aws:lambda:us-east-1:580247275435:layer:LambdaInsightsExtension:60`  | 
|  미국 동부(오하이오) |  `arn:aws:lambda:us-east-2:580247275435:layer:LambdaInsightsExtension:60`  | 
|  미국 서부(캘리포니아 북부) |  `arn:aws:lambda:us-west-1:580247275435:layer:LambdaInsightsExtension:60`  | 
|  미국 서부(오리건) |  `arn:aws:lambda:us-west-2:580247275435:layer:LambdaInsightsExtension:60`  | 
|  아프리카(케이프타운) |  `arn:aws:lambda:af-south-1:012438385374:layer:LambdaInsightsExtension:52`  | 
|  아시아 태평양(태국) |  `arn:aws:lambda:ap-southeast-7:761018874580:layer:LambdaInsightsExtension:8`  | 
|  아시아 태평양(홍콩) |  `arn:aws:lambda:ap-east-1:519774774795:layer:LambdaInsightsExtension:52`  | 
|  아시아 태평양(하이데라바드) |  `arn:aws:lambda:ap-south-2:891564319516:layer:LambdaInsightsExtension:34`  | 
|  아시아 태평양(자카르타) |  `arn:aws:lambda:ap-southeast-3:439286490199:layer:LambdaInsightsExtension:36`  | 
|  아시아 태평양(말레이시아) |  `arn:aws:lambda:ap-southeast-5:590183865173:layer:LambdaInsightsExtension:9`  | 
|  아시아 태평양(멜버른) |  `arn:aws:lambda:ap-southeast-4:158895979263:layer:LambdaInsightsExtension:29`  | 
|  아시아 태평양(뭄바이) |  `arn:aws:lambda:ap-south-1:580247275435:layer:LambdaInsightsExtension:58`  | 
|  아시아 태평양(오사카) |  `arn:aws:lambda:ap-northeast-3:194566237122:layer:LambdaInsightsExtension:41`  | 
|  아시아 태평양(서울) |  `arn:aws:lambda:ap-northeast-2:580247275435:layer:LambdaInsightsExtension:59`  | 
|  아시아 태평양(싱가포르) |  `arn:aws:lambda:ap-southeast-1:580247275435:layer:LambdaInsightsExtension:60`  | 
|  아시아 태평양(시드니) |  `arn:aws:lambda:ap-southeast-2:580247275435:layer:LambdaInsightsExtension:60`  | 
|  아시아 태평양(도쿄) |  `arn:aws:lambda:ap-northeast-1:580247275435:layer:LambdaInsightsExtension:87`  | 
|  캐나다(중부) |  `arn:aws:lambda:ca-central-1:580247275435:layer:LambdaInsightsExtension:59`  | 
|  캐나다 서부(캘거리) |  `arn:aws:lambda:ca-west-1:946466191631:layer:LambdaInsightsExtension:21`  | 
|  중국(베이징) |  `arn:aws-cn:lambda:cn-north-1:488211338238:layer:LambdaInsightsExtension:48`  | 
|  중국(닝샤) |  `arn:aws-cn:lambda:cn-northwest-1:488211338238:layer:LambdaInsightsExtension:48`  | 
|  유럽(프랑크푸르트) |  `arn:aws:lambda:eu-central-1:580247275435:layer:LambdaInsightsExtension:60`  | 
|  유럽(아일랜드) |  `arn:aws:lambda:eu-west-1:580247275435:layer:LambdaInsightsExtension:60`  | 
|  유럽(런던) |  `arn:aws:lambda:eu-west-2:580247275435:layer:LambdaInsightsExtension:60`  | 
|  유럽(밀라노) |  `arn:aws:lambda:eu-south-1:339249233099:layer:LambdaInsightsExtension:52`  | 
|  유럽(파리) |  `arn:aws:lambda:eu-west-3:580247275435:layer:LambdaInsightsExtension:59`  | 
|  유럽(스페인) |  `arn:aws:lambda:eu-south-2:352183217350:layer:LambdaInsightsExtension:36`  | 
|  유럽(스톡홀름) |  `arn:aws:lambda:eu-north-1:580247275435:layer:LambdaInsightsExtension:57`  | 
|  유럽(취리히) |  `arn:aws:lambda:eu-central-2:033019950311:layer:LambdaInsightsExtension:35`  | 
|  이스라엘(텔아비브) |  `arn:aws:lambda:il-central-1:459530977127:layer:LambdaInsightsExtension:29`  | 
|  멕시코(중부) |  `arn:aws:lambda:mx-central-1:879381266642:layer:LambdaInsightsExtension:8`  | 
|  중동(바레인) |  `arn:aws:lambda:me-south-1:285320876703:layer:LambdaInsightsExtension:52`  | 
|  중동(UAE) |  `arn:aws:lambda:me-central-1:732604637566:layer:LambdaInsightsExtension:35`  | 
|  남아메리카(상파울루) |  `arn:aws:lambda:sa-east-1:580247275435:layer:LambdaInsightsExtension:59`  | 
|  AWS GovCloud(미국 동부) |  `arn:aws-us-gov:lambda:us-gov-east-1:122132214140:layer:LambdaInsightsExtension:24`  | 
|  AWS GovCloud(미국 서부) |  `arn:aws-us-gov:lambda:us-gov-west-1:751350123760:layer:LambdaInsightsExtension:24`  | 
|  아시아 태평양(뉴질랜드) |  `arn:aws:lambda:ap-southeast-6:727646510379:layer:LambdaInsightsExtension:1`  | 
|  아시아 태평양(타이베이) |  `arn:aws:lambda:ap-east-2:145023102084:layer:LambdaInsightsExtension:8`  | 

## 1.0.404.0
<a name="Lambda-Insights-extension-1.0.404.0"></a>

버전 1.0.404.0에서는 Lambda Insights 확장의 이진수 크기를 최대 10MB에서 최대 6MB로 줄이고, Lambda Insights 확장 계층의 zip 크기를 최대 4MB에서 최대 2.7MB로 줄입니다. 또한 에이전트의 전체 메모리 소비를 최대 10MB에서 최대 7MB로 줄입니다.

**버전 1.0.404.0용 ARN**

다음 표에는 익스텐션을 사용할 수 있는 각 AWS 리전에서 이 익스텐션 버전에 사용할 ARN이 나와 있습니다.


| 리전 | ARN | 
| --- | --- | 
|  미국 동부(버지니아 북부) |  `arn:aws:lambda:us-east-1:580247275435:layer:LambdaInsightsExtension:56`  | 
|  미국 동부(오하이오) |  `arn:aws:lambda:us-east-2:580247275435:layer:LambdaInsightsExtension:56`  | 
|  미국 서부(캘리포니아 북부) |  `arn:aws:lambda:us-west-1:580247275435:layer:LambdaInsightsExtension:56`  | 
|  미국 서부(오리건) |  `arn:aws:lambda:us-west-2:580247275435:layer:LambdaInsightsExtension:56`  | 
|  아프리카(케이프타운) |  `arn:aws:lambda:af-south-1:012438385374:layer:LambdaInsightsExtension:47`  | 
|  아시아 태평양(태국) |  `arn:aws:lambda:ap-southeast-7:761018874580:layer:LambdaInsightsExtension:3`  | 
|  아시아 태평양(홍콩) |  `arn:aws:lambda:ap-east-1:519774774795:layer:LambdaInsightsExtension:47`  | 
|  아시아 태평양(하이데라바드) |  `arn:aws:lambda:ap-south-2:891564319516:layer:LambdaInsightsExtension:29`  | 
|  아시아 태평양(자카르타) |  `arn:aws:lambda:ap-southeast-3:439286490199:layer:LambdaInsightsExtension:33`  | 
|  아시아 태평양(말레이시아) |  `arn:aws:lambda:ap-southeast-5:590183865173:layer:LambdaInsightsExtension:4`  | 
|  아시아 태평양(멜버른) |  `arn:aws:lambda:ap-southeast-4:158895979263:layer:LambdaInsightsExtension:24`  | 
|  아시아 태평양(뭄바이) |  `arn:aws:lambda:ap-south-1:580247275435:layer:LambdaInsightsExtension:54`  | 
|  아시아 태평양(오사카) |  `arn:aws:lambda:ap-northeast-3:194566237122:layer:LambdaInsightsExtension:37`  | 
|  아시아 태평양(서울) |  `arn:aws:lambda:ap-northeast-2:580247275435:layer:LambdaInsightsExtension:55`  | 
|  아시아 태평양(싱가포르) |  `arn:aws:lambda:ap-southeast-1:580247275435:layer:LambdaInsightsExtension:56`  | 
|  아시아 태평양(시드니) |  `arn:aws:lambda:ap-southeast-2:580247275435:layer:LambdaInsightsExtension:56`  | 
|  아시아 태평양(도쿄) |  `arn:aws:lambda:ap-northeast-1:580247275435:layer:LambdaInsightsExtension:83`  | 
|  캐나다(중부) |  `arn:aws:lambda:ca-central-1:580247275435:layer:LambdaInsightsExtension:55`  | 
|  캐나다 서부(캘거리) |  `arn:aws:lambda:ca-west-1:946466191631:layer:LambdaInsightsExtension:16`  | 
|  중국(베이징) |  `arn:aws-cn:lambda:cn-north-1:488211338238:layer:LambdaInsightsExtension:46`  | 
|  중국(닝샤) |  `arn:aws-cn:lambda:cn-northwest-1:488211338238:layer:LambdaInsightsExtension:46`  | 
|  유럽(프랑크푸르트) |  `arn:aws:lambda:eu-central-1:580247275435:layer:LambdaInsightsExtension:56`  | 
|  유럽(아일랜드) |  `arn:aws:lambda:eu-west-1:580247275435:layer:LambdaInsightsExtension:56`  | 
|  유럽(런던) |  `arn:aws:lambda:eu-west-2:580247275435:layer:LambdaInsightsExtension:56`  | 
|  유럽(밀라노) |  `arn:aws:lambda:eu-south-1:339249233099:layer:LambdaInsightsExtension:47`  | 
|  유럽(파리) |  `arn:aws:lambda:eu-west-3:580247275435:layer:LambdaInsightsExtension:55`  | 
|  유럽(스페인) |  `arn:aws:lambda:eu-south-2:352183217350:layer:LambdaInsightsExtension:31`  | 
|  유럽(스톡홀름) |  `arn:aws:lambda:eu-north-1:580247275435:layer:LambdaInsightsExtension:53`  | 
|  유럽(취리히) |  `arn:aws:lambda:eu-central-2:033019950311:layer:LambdaInsightsExtension:30`  | 
|  이스라엘(텔아비브) |  `arn:aws:lambda:il-central-1:459530977127:layer:LambdaInsightsExtension:23`  | 
|  멕시코(중부) |  `arn:aws:lambda:mx-central-1:879381266642:layer:LambdaInsightsExtension:3`  | 
|  중동(바레인) |  `arn:aws:lambda:me-south-1:285320876703:layer:LambdaInsightsExtension:47`  | 
|  중동(UAE) |  `arn:aws:lambda:me-central-1:732604637566:layer:LambdaInsightsExtension:30`  | 
|  남아메리카(상파울루) |  `arn:aws:lambda:sa-east-1:580247275435:layer:LambdaInsightsExtension:55`  | 
|  AWS GovCloud(미국 동부) |  `arn:aws-us-gov:lambda:us-gov-east-1:122132214140:layer:LambdaInsightsExtension:24`  | 
|  AWS GovCloud(미국 서부) |  `arn:aws-us-gov:lambda:us-gov-west-1:751350123760:layer:LambdaInsightsExtension:24`  | 

## 1.0.391.0
<a name="Lambda-Insights-extension-1.0.391.0"></a>

**중요**  
버전 1.0.391.0에서는 Lambda Insights가 스레드 사용량을 수집 및 보고하는 방식이 변경되었습니다. 이전 버전의 확장 기능에서 `threads_max` 지표는 프로세스 ID가 1인 프로세스에서 실행 중인 최대 스레드 수를 보고했습니다. 버전 1.0.391.0부터 이 지표는 실행 환경의 모든 프로세스에서 함수 실행 중 어떤 시점에서든 실행된 최대 스레드 수를 보고합니다. 여기에는 Lambda 함수의 프로세스, 확장 기능의 프로세스, 시스템/런타임별 프로세스 등이 포함됩니다. 이 경우 `threads_max` 지표가 더 포괄적이며 사용할 수 있는 남은 스레드를 평가할 수도 있습니다. 스레드 및 프로세스 할당량에 대한 자세한 내용은 [Lambda 할당량](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html)을 참조하세요.

버전 1.0.391.0에서는 아시아 태평양(태국) 및 멕시코(중부) 리전에 대한 지원도 추가되었습니다.

**버전 1.0.391.0에 대한 ARN**

다음 표에는 익스텐션을 사용할 수 있는 각 AWS 리전에서 이 익스텐션 버전에 사용할 ARN이 나와 있습니다.


| 리전 | ARN | 
| --- | --- | 
|  미국 동부(버지니아 북부) |  `arn:aws:lambda:us-east-1:580247275435:layer:LambdaInsightsExtension:55`  | 
|  미국 동부(오하이오) |  `arn:aws:lambda:us-east-2:580247275435:layer:LambdaInsightsExtension:55`  | 
|  미국 서부(캘리포니아 북부) |  `arn:aws:lambda:us-west-1:580247275435:layer:LambdaInsightsExtension:55`  | 
|  미국 서부(오리건) |  `arn:aws:lambda:us-west-2:580247275435:layer:LambdaInsightsExtension:55`  | 
|  아프리카(케이프타운) |  `arn:aws:lambda:af-south-1:012438385374:layer:LambdaInsightsExtension:46`  | 
|  아시아 태평양(태국) |  `arn:aws:lambda:ap-southeast-7:761018874580:layer:LambdaInsightsExtension:2`  | 
|  아시아 태평양(홍콩) |  `arn:aws:lambda:ap-east-1:519774774795:layer:LambdaInsightsExtension:46`  | 
|  아시아 태평양(하이데라바드) |  `arn:aws:lambda:ap-south-2:891564319516:layer:LambdaInsightsExtension:28`  | 
|  아시아 태평양(자카르타) |  `arn:aws:lambda:ap-southeast-3:439286490199:layer:LambdaInsightsExtension:32`  | 
|  아시아 태평양(말레이시아) |  `arn:aws:lambda:ap-southeast-5:590183865173:layer:LambdaInsightsExtension:3`  | 
|  아시아 태평양(멜버른) |  `arn:aws:lambda:ap-southeast-4:158895979263:layer:LambdaInsightsExtension:23`  | 
|  아시아 태평양(뭄바이) |  `arn:aws:lambda:ap-south-1:580247275435:layer:LambdaInsightsExtension:53`  | 
|  아시아 태평양(오사카) |  `arn:aws:lambda:ap-northeast-3:194566237122:layer:LambdaInsightsExtension:36`  | 
|  아시아 태평양(서울) |  `arn:aws:lambda:ap-northeast-2:580247275435:layer:LambdaInsightsExtension:54`  | 
|  아시아 태평양(싱가포르) |  `arn:aws:lambda:ap-southeast-1:580247275435:layer:LambdaInsightsExtension:55`  | 
|  아시아 태평양(시드니) |  `arn:aws:lambda:ap-southeast-2:580247275435:layer:LambdaInsightsExtension:55`  | 
|  아시아 태평양(도쿄) |  `arn:aws:lambda:ap-northeast-1:580247275435:layer:LambdaInsightsExtension:82`  | 
|  캐나다(중부) |  `arn:aws:lambda:ca-central-1:580247275435:layer:LambdaInsightsExtension:54`  | 
|  캐나다 서부(캘거리) |  `arn:aws:lambda:ca-west-1:946466191631:layer:LambdaInsightsExtension:15`  | 
|  중국(베이징) |  `arn:aws-cn:lambda:cn-north-1:488211338238:layer:LambdaInsightsExtension:45`  | 
|  중국(닝샤) |  `arn:aws-cn:lambda:cn-northwest-1:488211338238:layer:LambdaInsightsExtension:45`  | 
|  유럽(프랑크푸르트) |  `arn:aws:lambda:eu-central-1:580247275435:layer:LambdaInsightsExtension:55`  | 
|  유럽(아일랜드) |  `arn:aws:lambda:eu-west-1:580247275435:layer:LambdaInsightsExtension:55`  | 
|  유럽(런던) |  `arn:aws:lambda:eu-west-2:580247275435:layer:LambdaInsightsExtension:55`  | 
|  유럽(밀라노) |  `arn:aws:lambda:eu-south-1:339249233099:layer:LambdaInsightsExtension:46`  | 
|  유럽(파리) |  `arn:aws:lambda:eu-west-3:580247275435:layer:LambdaInsightsExtension:54`  | 
|  유럽(스페인) |  `arn:aws:lambda:eu-south-2:352183217350:layer:LambdaInsightsExtension:30`  | 
|  유럽(스톡홀름) |  `arn:aws:lambda:eu-north-1:580247275435:layer:LambdaInsightsExtension:52`  | 
|  유럽(취리히) |  `arn:aws:lambda:eu-central-2:033019950311:layer:LambdaInsightsExtension:29`  | 
|  이스라엘(텔아비브) |  `arn:aws:lambda:il-central-1:459530977127:layer:LambdaInsightsExtension:23`  | 
|  멕시코(중부) |  `arn:aws:lambda:mx-central-1:879381266642:layer:LambdaInsightsExtension:2`  | 
|  중동(바레인) |  `arn:aws:lambda:me-south-1:285320876703:layer:LambdaInsightsExtension:46`  | 
|  중동(UAE) |  `arn:aws:lambda:me-central-1:732604637566:layer:LambdaInsightsExtension:29`  | 
|  남아메리카(상파울루) |  `arn:aws:lambda:sa-east-1:580247275435:layer:LambdaInsightsExtension:54`  | 
|  AWS GovCloud(미국 동부) |  `arn:aws-us-gov:lambda:us-gov-east-1:122132214140:layer:LambdaInsightsExtension:23`  | 
|  AWS GovCloud(미국 서부) |  `arn:aws-us-gov:lambda:us-gov-west-1:751350123760:layer:LambdaInsightsExtension:23`  | 

## 1.0.333.0
<a name="Lambda-Insights-extension-1.0.333.0"></a>

버전 1.0.333.0에는 버그 수정이 포함되어 있습니다.

**버전 1.0.333.0용 ARN**

다음 표에는 익스텐션을 사용할 수 있는 각 AWS 리전에서 이 익스텐션 버전에 사용할 ARN이 나와 있습니다.


| 리전 | ARN | 
| --- | --- | 
|  미국 동부(버지니아 북부) |  `arn:aws:lambda:us-east-1:580247275435:layer:LambdaInsightsExtension:53`  | 
|  미국 동부(오하이오) |  `arn:aws:lambda:us-east-2:580247275435:layer:LambdaInsightsExtension:53`  | 
|  미국 서부(캘리포니아 북부) |  `arn:aws:lambda:us-west-1:580247275435:layer:LambdaInsightsExtension:53`  | 
|  미국 서부(오리건) |  `arn:aws:lambda:us-west-2:580247275435:layer:LambdaInsightsExtension:53`  | 
|  아프리카(케이프타운) |  `arn:aws:lambda:af-south-1:012438385374:layer:LambdaInsightsExtension:44`  | 
|  아시아 태평양(홍콩) |  `arn:aws:lambda:ap-east-1:519774774795:layer:LambdaInsightsExtension:44`  | 
|  아시아 태평양(하이데라바드) |  `arn:aws:lambda:ap-south-2:891564319516:layer:LambdaInsightsExtension:26`  | 
|  아시아 태평양(자카르타) |  `arn:aws:lambda:ap-southeast-3:439286490199:layer:LambdaInsightsExtension:30`  | 
|  아시아 태평양(말레이시아) |  `arn:aws:lambda:ap-southeast-5:590183865173:layer:LambdaInsightsExtension:1`  | 
|  아시아 태평양(멜버른) |  `arn:aws:lambda:ap-southeast-4:158895979263:layer:LambdaInsightsExtension:21`  | 
|  아시아 태평양(뭄바이) |  `arn:aws:lambda:ap-south-1:580247275435:layer:LambdaInsightsExtension:51`  | 
|  아시아 태평양(오사카) |  `arn:aws:lambda:ap-northeast-3:194566237122:layer:LambdaInsightsExtension:34`  | 
|  아시아 태평양(서울) |  `arn:aws:lambda:ap-northeast-2:580247275435:layer:LambdaInsightsExtension:52`  | 
|  아시아 태평양(싱가포르) |  `arn:aws:lambda:ap-southeast-1:580247275435:layer:LambdaInsightsExtension:53`  | 
|  아시아 태평양(시드니) |  `arn:aws:lambda:ap-southeast-2:580247275435:layer:LambdaInsightsExtension:53`  | 
|  아시아 태평양(도쿄) |  `arn:aws:lambda:ap-northeast-1:580247275435:layer:LambdaInsightsExtension:80`  | 
|  캐나다(중부) |  `arn:aws:lambda:ca-central-1:580247275435:layer:LambdaInsightsExtension:52`  | 
|  캐나다 서부(캘거리) |  `arn:aws:lambda:ca-west-1:946466191631:layer:LambdaInsightsExtension:13`  | 
|  중국(베이징) |  `arn:aws-cn:lambda:cn-north-1:488211338238:layer:LambdaInsightsExtension:43`  | 
|  중국(닝샤) |  `arn:aws-cn:lambda:cn-northwest-1:488211338238:layer:LambdaInsightsExtension:43`  | 
|  유럽(프랑크푸르트) |  `arn:aws:lambda:eu-central-1:580247275435:layer:LambdaInsightsExtension:53`  | 
|  유럽(아일랜드) |  `arn:aws:lambda:eu-west-1:580247275435:layer:LambdaInsightsExtension:53`  | 
|  유럽(런던) |  `arn:aws:lambda:eu-west-2:580247275435:layer:LambdaInsightsExtension:53`  | 
|  유럽(밀라노) |  `arn:aws:lambda:eu-south-1:339249233099:layer:LambdaInsightsExtension:44`  | 
|  유럽(파리) |  `arn:aws:lambda:eu-west-3:580247275435:layer:LambdaInsightsExtension:52`  | 
|  유럽(스페인) |  `arn:aws:lambda:eu-south-2:352183217350:layer:LambdaInsightsExtension:28`  | 
|  유럽(스톡홀름) |  `arn:aws:lambda:eu-north-1:580247275435:layer:LambdaInsightsExtension:50`  | 
|  유럽(취리히) |  `arn:aws:lambda:eu-central-2:033019950311:layer:LambdaInsightsExtension:27`  | 
|  이스라엘(텔아비브) |  `arn:aws:lambda:il-central-1:459530977127:layer:LambdaInsightsExtension:21`  | 
|  중동(바레인) |  `arn:aws:lambda:me-south-1:285320876703:layer:LambdaInsightsExtension:44`  | 
|  중동(UAE) |  `arn:aws:lambda:me-central-1:732604637566:layer:LambdaInsightsExtension:27`  | 
|  남아메리카(상파울루) |  `arn:aws:lambda:sa-east-1:580247275435:layer:LambdaInsightsExtension:52`  | 
|  AWS GovCloud(미국 동부) |  `arn:aws-us-gov:lambda:us-gov-east-1:122132214140:layer:LambdaInsightsExtension:21`  | 
|  AWS GovCloud(미국 서부) |  `arn:aws-us-gov:lambda:us-gov-west-1:751350123760:layer:LambdaInsightsExtension:21`  | 

## 1.0.317.0
<a name="Lambda-Insights-extension-1.0.317.0"></a>

버전 1.0.317.0에는 Amazon Linux 1 플랫폼에 대한 지원 제거 및 버그 수정이 포함되어 있습니다. 또한 AWS GovCloud (US) 리전에 대한 지원도 포함됩니다.

**버전 1.0.317.0용 ARN**

다음 표에는 익스텐션을 사용할 수 있는 각 AWS 리전에서 이 익스텐션 버전에 사용할 ARN이 나와 있습니다.


| 리전 | ARN | 
| --- | --- | 
|  미국 동부(버지니아 북부) |  `arn:aws:lambda:us-east-1:580247275435:layer:LambdaInsightsExtension:52`  | 
|  미국 동부(오하이오) |  `arn:aws:lambda:us-east-2:580247275435:layer:LambdaInsightsExtension:52`  | 
|  미국 서부(캘리포니아 북부) |  `arn:aws:lambda:us-west-1:580247275435:layer:LambdaInsightsExtension:52`  | 
|  미국 서부(오리건) |  `arn:aws:lambda:us-west-2:580247275435:layer:LambdaInsightsExtension:52`  | 
|  아프리카(케이프타운) |  `arn:aws:lambda:af-south-1:012438385374:layer:LambdaInsightsExtension:43`  | 
|  아시아 태평양(홍콩) |  `arn:aws:lambda:ap-east-1:519774774795:layer:LambdaInsightsExtension:43`  | 
|  아시아 태평양(하이데라바드) |  `arn:aws:lambda:ap-south-2:891564319516:layer:LambdaInsightsExtension:25`  | 
|  아시아 태평양(자카르타) |  `arn:aws:lambda:ap-southeast-3:439286490199:layer:LambdaInsightsExtension:29`  | 
|  아시아 태평양(멜버른) |  `arn:aws:lambda:ap-southeast-4:158895979263:layer:LambdaInsightsExtension:20`  | 
|  아시아 태평양(뭄바이) |  `arn:aws:lambda:ap-south-1:580247275435:layer:LambdaInsightsExtension:50`  | 
|  아시아 태평양(오사카) |  `arn:aws:lambda:ap-northeast-3:194566237122:layer:LambdaInsightsExtension:33`  | 
|  아시아 태평양(서울) |  `arn:aws:lambda:ap-northeast-2:580247275435:layer:LambdaInsightsExtension:51`  | 
|  아시아 태평양(싱가포르) |  `arn:aws:lambda:ap-southeast-1:580247275435:layer:LambdaInsightsExtension:52`  | 
|  아시아 태평양(시드니) |  `arn:aws:lambda:ap-southeast-2:580247275435:layer:LambdaInsightsExtension:52`  | 
|  아시아 태평양(도쿄) |  `arn:aws:lambda:ap-northeast-1:580247275435:layer:LambdaInsightsExtension:79`  | 
|  캐나다(중부) |  `arn:aws:lambda:ca-central-1:580247275435:layer:LambdaInsightsExtension:51`  | 
|  캐나다 서부(캘거리) |  `arn:aws:lambda:ca-west-1:946466191631:layer:LambdaInsightsExtension:12`  | 
|  중국(베이징) |  `arn:aws-cn:lambda:cn-north-1:488211338238:layer:LambdaInsightsExtension:42`  | 
|  중국(닝샤) |  `arn:aws-cn:lambda:cn-northwest-1:488211338238:layer:LambdaInsightsExtension:42`  | 
|  유럽(프랑크푸르트) |  `arn:aws:lambda:eu-central-1:580247275435:layer:LambdaInsightsExtension:52`  | 
|  유럽(아일랜드) |  `arn:aws:lambda:eu-west-1:580247275435:layer:LambdaInsightsExtension:52`  | 
|  유럽(런던) |  `arn:aws:lambda:eu-west-2:580247275435:layer:LambdaInsightsExtension:52`  | 
|  유럽(밀라노) |  `arn:aws:lambda:eu-south-1:339249233099:layer:LambdaInsightsExtension:43`  | 
|  유럽(파리) |  `arn:aws:lambda:eu-west-3:580247275435:layer:LambdaInsightsExtension:51`  | 
|  유럽(스페인) |  `arn:aws:lambda:eu-south-2:352183217350:layer:LambdaInsightsExtension:27`  | 
|  유럽(스톡홀름) |  `arn:aws:lambda:eu-north-1:580247275435:layer:LambdaInsightsExtension:49`  | 
|  유럽(취리히) |  `arn:aws:lambda:eu-central-2:033019950311:layer:LambdaInsightsExtension:26`  | 
|  이스라엘(텔아비브) |  `arn:aws:lambda:il-central-1:459530977127:layer:LambdaInsightsExtension:20`  | 
|  중동(바레인) |  `arn:aws:lambda:me-south-1:285320876703:layer:LambdaInsightsExtension:43`  | 
|  중동(UAE) |  `arn:aws:lambda:me-central-1:732604637566:layer:LambdaInsightsExtension:26`  | 
|  남아메리카(상파울루) |  `arn:aws:lambda:sa-east-1:580247275435:layer:LambdaInsightsExtension:51`  | 
|  AWS GovCloud(미국 동부) |  `arn:aws-us-gov:lambda:us-gov-east-1:122132214140:layer:LambdaInsightsExtension:19`  | 
|  AWS GovCloud(미국 서부) |  `arn:aws-us-gov:lambda:us-gov-west-1:751350123760:layer:LambdaInsightsExtension:19`  | 

## 1.0.295.0
<a name="Lambda-Insights-extension-1.0.295.0"></a>

버전 1.0.295.0에는 호환되는 모든 런타임에 대한 종속성 업데이트가 포함되어 있습니다.

**버전 1.0.295.0용 ARN**

다음 표에는 익스텐션을 사용할 수 있는 각 AWS 리전에서 이 익스텐션 버전에 사용할 ARN이 나와 있습니다.


| 리전 | ARN | 
| --- | --- | 
|  미국 동부(버지니아 북부) |  `arn:aws:lambda:us-east-1:580247275435:layer:LambdaInsightsExtension:51`  | 
|  미국 동부(오하이오) |  `arn:aws:lambda:us-east-2:580247275435:layer:LambdaInsightsExtension:51`  | 
|  미국 서부(캘리포니아 북부) |  `arn:aws:lambda:us-west-1:580247275435:layer:LambdaInsightsExtension:51`  | 
|  미국 서부(오리건) |  `arn:aws:lambda:us-west-2:580247275435:layer:LambdaInsightsExtension:51`  | 
|  아프리카(케이프타운) |  `arn:aws:lambda:af-south-1:012438385374:layer:LambdaInsightsExtension:42`  | 
|  아시아 태평양(홍콩) |  `arn:aws:lambda:ap-east-1:519774774795:layer:LambdaInsightsExtension:42`  | 
|  아시아 태평양(하이데라바드) |  `arn:aws:lambda:ap-south-2:891564319516:layer:LambdaInsightsExtension:24`  | 
|  아시아 태평양(자카르타) |  `arn:aws:lambda:ap-southeast-3:439286490199:layer:LambdaInsightsExtension:28`  | 
|  아시아 태평양(멜버른) |  `arn:aws:lambda:ap-southeast-4:158895979263:layer:LambdaInsightsExtension:19`  | 
|  아시아 태평양(뭄바이) |  `arn:aws:lambda:ap-south-1:580247275435:layer:LambdaInsightsExtension:49`  | 
|  아시아 태평양(오사카) |  `arn:aws:lambda:ap-northeast-3:194566237122:layer:LambdaInsightsExtension:32`  | 
|  아시아 태평양(서울) |  `arn:aws:lambda:ap-northeast-2:580247275435:layer:LambdaInsightsExtension:50`  | 
|  아시아 태평양(싱가포르) |  `arn:aws:lambda:ap-southeast-1:580247275435:layer:LambdaInsightsExtension:51`  | 
|  아시아 태평양(시드니) |  `arn:aws:lambda:ap-southeast-2:580247275435:layer:LambdaInsightsExtension:51`  | 
|  아시아 태평양(도쿄) |  `arn:aws:lambda:ap-northeast-1:580247275435:layer:LambdaInsightsExtension:78`  | 
|  캐나다(중부) |  `arn:aws:lambda:ca-central-1:580247275435:layer:LambdaInsightsExtension:50`  | 
|  캐나다 서부(캘거리) |  `arn:aws:lambda:ca-west-1:946466191631:layer:LambdaInsightsExtension:11`  | 
|  중국(베이징) |  `arn:aws-cn:lambda:cn-north-1:488211338238:layer:LambdaInsightsExtension:41`  | 
|  중국(닝샤) |  `arn:aws-cn:lambda:cn-northwest-1:488211338238:layer:LambdaInsightsExtension:41`  | 
|  유럽(프랑크푸르트) |  `arn:aws:lambda:eu-central-1:580247275435:layer:LambdaInsightsExtension:51`  | 
|  유럽(아일랜드) |  `arn:aws:lambda:eu-west-1:580247275435:layer:LambdaInsightsExtension:51`  | 
|  유럽(런던) |  `arn:aws:lambda:eu-west-2:580247275435:layer:LambdaInsightsExtension:51`  | 
|  유럽(밀라노) |  `arn:aws:lambda:eu-south-1:339249233099:layer:LambdaInsightsExtension:42`  | 
|  유럽(파리) |  `arn:aws:lambda:eu-west-3:580247275435:layer:LambdaInsightsExtension:50`  | 
|  유럽(스페인) |  `arn:aws:lambda:eu-south-2:352183217350:layer:LambdaInsightsExtension:26`  | 
|  유럽(스톡홀름) |  `arn:aws:lambda:eu-north-1:580247275435:layer:LambdaInsightsExtension:48`  | 
|  유럽(취리히) |  `arn:aws:lambda:eu-central-2:033019950311:layer:LambdaInsightsExtension:25`  | 
|  이스라엘(텔아비브) |  `arn:aws:lambda:il-central-1:459530977127:layer:LambdaInsightsExtension:19`  | 
|  중동(바레인) |  `arn:aws:lambda:me-south-1:285320876703:layer:LambdaInsightsExtension:42`  | 
|  중동(UAE) |  `arn:aws:lambda:me-central-1:732604637566:layer:LambdaInsightsExtension:25`  | 
|  남아메리카(상파울루) |  `arn:aws:lambda:sa-east-1:580247275435:layer:LambdaInsightsExtension:50`  | 

## 1.0.275.0
<a name="Lambda-Insights-extension-1.0.275.0"></a>

버전 1.0.275.0에는 호환되는 모든 런타임에 대한 중요한 종속성 업데이트가 포함되어 있습니다.

**버전 1.0.275.0용 ARN**

다음 표에는 익스텐션을 사용할 수 있는 각 AWS 리전에서 이 익스텐션 버전에 사용할 ARN이 나와 있습니다.


| 리전 | ARN | 
| --- | --- | 
|  미국 동부(버지니아 북부) |  `arn:aws:lambda:us-east-1:580247275435:layer:LambdaInsightsExtension:49`  | 
|  미국 동부(오하이오) |  `arn:aws:lambda:us-east-2:580247275435:layer:LambdaInsightsExtension:49`  | 
|  미국 서부(캘리포니아 북부) |  `arn:aws:lambda:us-west-1:580247275435:layer:LambdaInsightsExtension:49`  | 
|  미국 서부(오리건) |  `arn:aws:lambda:us-west-2:580247275435:layer:LambdaInsightsExtension:49`  | 
|  아프리카(케이프타운) |  `arn:aws:lambda:af-south-1:012438385374:layer:LambdaInsightsExtension:40`  | 
|  아시아 태평양(홍콩) |  `arn:aws:lambda:ap-east-1:519774774795:layer:LambdaInsightsExtension:40`  | 
|  아시아 태평양(하이데라바드) |  `arn:aws:lambda:ap-south-2:891564319516:layer:LambdaInsightsExtension:22`  | 
|  아시아 태평양(자카르타) |  `arn:aws:lambda:ap-southeast-3:439286490199:layer:LambdaInsightsExtension:26`  | 
|  아시아 태평양(멜버른) |  `arn:aws:lambda:ap-southeast-4:158895979263:layer:LambdaInsightsExtension:17`  | 
|  아시아 태평양(뭄바이) |  `arn:aws:lambda:ap-south-1:580247275435:layer:LambdaInsightsExtension:47`  | 
|  아시아 태평양(오사카) |  `arn:aws:lambda:ap-northeast-3:194566237122:layer:LambdaInsightsExtension:30`  | 
|  아시아 태평양(서울) |  `arn:aws:lambda:ap-northeast-2:580247275435:layer:LambdaInsightsExtension:48`  | 
|  아시아 태평양(싱가포르) |  `arn:aws:lambda:ap-southeast-1:580247275435:layer:LambdaInsightsExtension:49`  | 
|  아시아 태평양(시드니) |  `arn:aws:lambda:ap-southeast-2:580247275435:layer:LambdaInsightsExtension:49`  | 
|  아시아 태평양(도쿄) |  `arn:aws:lambda:ap-northeast-1:580247275435:layer:LambdaInsightsExtension:76`  | 
|  캐나다(중부) |  `arn:aws:lambda:ca-central-1:580247275435:layer:LambdaInsightsExtension:48`  | 
|  캐나다 서부(캘거리) |  `arn:aws:lambda:ca-west-1:946466191631:layer:LambdaInsightsExtension:9`  | 
|  중국(베이징) |  `arn:aws-cn:lambda:cn-north-1:488211338238:layer:LambdaInsightsExtension:39`  | 
|  중국(닝샤) |  `arn:aws-cn:lambda:cn-northwest-1:488211338238:layer:LambdaInsightsExtension:39`  | 
|  유럽(프랑크푸르트) |  `arn:aws:lambda:eu-central-1:580247275435:layer:LambdaInsightsExtension:49`  | 
|  유럽(아일랜드) |  `arn:aws:lambda:eu-west-1:580247275435:layer:LambdaInsightsExtension:49`  | 
|  유럽(런던) |  `arn:aws:lambda:eu-west-2:580247275435:layer:LambdaInsightsExtension:49`  | 
|  유럽(밀라노) |  `arn:aws:lambda:eu-south-1:339249233099:layer:LambdaInsightsExtension:40`  | 
|  유럽(파리) |  `arn:aws:lambda:eu-west-3:580247275435:layer:LambdaInsightsExtension:48`  | 
|  유럽(스페인) |  `arn:aws:lambda:eu-south-2:352183217350:layer:LambdaInsightsExtension:24`  | 
|  유럽(스톡홀름) |  `arn:aws:lambda:eu-north-1:580247275435:layer:LambdaInsightsExtension:46`  | 
|  유럽(취리히) |  `arn:aws:lambda:eu-central-2:033019950311:layer:LambdaInsightsExtension:23`  | 
|  이스라엘(텔아비브) |  `arn:aws:lambda:il-central-1:459530977127:layer:LambdaInsightsExtension:17`  | 
|  중동(바레인) |  `arn:aws:lambda:me-south-1:285320876703:layer:LambdaInsightsExtension:40`  | 
|  중동(UAE) |  `arn:aws:lambda:me-central-1:732604637566:layer:LambdaInsightsExtension:23`  | 
|  남아메리카(상파울루) |  `arn:aws:lambda:sa-east-1:580247275435:layer:LambdaInsightsExtension:48`  | 

## 1.0.273.0
<a name="Lambda-Insights-extension-1.0.273.0"></a>

버전 1.0.273.0에는 호환되는 모든 런타임에 대한 중요한 버그 수정이 포함되어 있으며 캐나다 서부(캘거리)에 대한 지원이 추가되었습니다.

**버전 1.0.273.0용 ARN**

다음 표에는 익스텐션을 사용할 수 있는 각 AWS 리전에서 이 익스텐션 버전에 사용할 ARN이 나와 있습니다.


| 리전 | ARN | 
| --- | --- | 
|  미국 동부(버지니아 북부) |  `arn:aws:lambda:us-east-1:580247275435:layer:LambdaInsightsExtension:45`  | 
|  미국 동부(오하이오) |  `arn:aws:lambda:us-east-2:580247275435:layer:LambdaInsightsExtension:45`  | 
|  미국 서부(캘리포니아 북부) |  `arn:aws:lambda:us-west-1:580247275435:layer:LambdaInsightsExtension:45`  | 
|  미국 서부(오리건) |  `arn:aws:lambda:us-west-2:580247275435:layer:LambdaInsightsExtension:45`  | 
|  아프리카(케이프타운) |  `arn:aws:lambda:af-south-1:012438385374:layer:LambdaInsightsExtension:35`  | 
|  아시아 태평양(홍콩) |  `arn:aws:lambda:ap-east-1:519774774795:layer:LambdaInsightsExtension:35`  | 
|  아시아 태평양(하이데라바드) |  `arn:aws:lambda:ap-south-2:891564319516:layer:LambdaInsightsExtension:17`  | 
|  아시아 태평양(자카르타) |  `arn:aws:lambda:ap-southeast-3:439286490199:layer:LambdaInsightsExtension:21`  | 
|  아시아 태평양(멜버른) |  `arn:aws:lambda:ap-southeast-4:158895979263:layer:LambdaInsightsExtension:12`  | 
|  아시아 태평양(뭄바이) |  `arn:aws:lambda:ap-south-1:580247275435:layer:LambdaInsightsExtension:43`  | 
|  아시아 태평양(오사카) |  `arn:aws:lambda:ap-northeast-3:194566237122:layer:LambdaInsightsExtension:26`  | 
|  아시아 태평양(서울) |  `arn:aws:lambda:ap-northeast-2:580247275435:layer:LambdaInsightsExtension:44`  | 
|  아시아 태평양(싱가포르) |  `arn:aws:lambda:ap-southeast-1:580247275435:layer:LambdaInsightsExtension:45`  | 
|  아시아 태평양(시드니) |  `arn:aws:lambda:ap-southeast-2:580247275435:layer:LambdaInsightsExtension:45`  | 
|  아시아 태평양(도쿄) |  `arn:aws:lambda:ap-northeast-1:580247275435:layer:LambdaInsightsExtension:72`  | 
|  캐나다(중부) |  `arn:aws:lambda:ca-central-1:580247275435:layer:LambdaInsightsExtension:44`  | 
|  캐나다 서부(캘거리) |  `arn:aws:lambda:ca-west-1:946466191631:layer:LambdaInsightsExtension:4`  | 
|  중국(베이징) |  `arn:aws-cn:lambda:cn-north-1:488211338238:layer:LambdaInsightsExtension:36`  | 
|  중국(닝샤) |  `arn:aws-cn:lambda:cn-northwest-1:488211338238:layer:LambdaInsightsExtension:36`  | 
|  유럽(프랑크푸르트) |  `arn:aws:lambda:eu-central-1:580247275435:layer:LambdaInsightsExtension:45`  | 
|  유럽(아일랜드) |  `arn:aws:lambda:eu-west-1:580247275435:layer:LambdaInsightsExtension:45`  | 
|  유럽(런던) |  `arn:aws:lambda:eu-west-2:580247275435:layer:LambdaInsightsExtension:45`  | 
|  유럽(밀라노) |  `arn:aws:lambda:eu-south-1:339249233099:layer:LambdaInsightsExtension:35`  | 
|  유럽(파리) |  `arn:aws:lambda:eu-west-3:580247275435:layer:LambdaInsightsExtension:44`  | 
|  유럽(스페인) |  `arn:aws:lambda:eu-south-2:352183217350:layer:LambdaInsightsExtension:19`  | 
|  유럽(스톡홀름) |  `arn:aws:lambda:eu-north-1:580247275435:layer:LambdaInsightsExtension:42`  | 
|  유럽(취리히) |  `arn:aws:lambda:eu-central-2:033019950311:layer:LambdaInsightsExtension:17`  | 
|  이스라엘(텔아비브) |  `arn:aws:lambda:il-central-1:459530977127:layer:LambdaInsightsExtension:12`  | 
|  중동(바레인) |  `arn:aws:lambda:me-south-1:285320876703:layer:LambdaInsightsExtension:35`  | 
|  중동(UAE) |  `arn:aws:lambda:me-central-1:732604637566:layer:LambdaInsightsExtension:18`  | 
|  남아메리카(상파울루) |  `arn:aws:lambda:sa-east-1:580247275435:layer:LambdaInsightsExtension:44`  | 

## 1.0.229.0
<a name="Lambda-Insights-extension-1.0.229.0"></a>

버전 1.0.229.0에는 호환되는 모든 런타임에 대한 중요한 버그 수정이 포함되어 있으며 이스라엘(텔아비브) 리전에 대한 지원이 추가되었습니다.

**버전 1.0.229.0용 ARN**

다음 표에는 익스텐션을 사용할 수 있는 각 AWS 리전에서 이 익스텐션 버전에 사용할 ARN이 나와 있습니다.


| 리전 | ARN | 
| --- | --- | 
|  미국 동부(버지니아 북부) |  `arn:aws:lambda:us-east-1:580247275435:layer:LambdaInsightsExtension:38`  | 
|  미국 동부(오하이오) |  `arn:aws:lambda:us-east-2:580247275435:layer:LambdaInsightsExtension:38`  | 
|  미국 서부(캘리포니아 북부) |  `arn:aws:lambda:us-west-1:580247275435:layer:LambdaInsightsExtension:38`  | 
|  미국 서부(오리건) |  `arn:aws:lambda:us-west-2:580247275435:layer:LambdaInsightsExtension:38`  | 
|  아프리카(케이프타운) |  `arn:aws:lambda:af-south-1:012438385374:layer:LambdaInsightsExtension:28`  | 
|  아시아 태평양(홍콩) |  `arn:aws:lambda:ap-east-1:519774774795:layer:LambdaInsightsExtension:28`  | 
|  아시아 태평양(하이데라바드) |  `arn:aws:lambda:ap-south-2:891564319516:layer:LambdaInsightsExtension:10`  | 
|  아시아 태평양(자카르타) |  `arn:aws:lambda:ap-southeast-3:439286490199:layer:LambdaInsightsExtension:14`  | 
|  아시아 태평양(멜버른) |  `arn:aws:lambda:ap-southeast-4:158895979263:layer:LambdaInsightsExtension:5`  | 
|  아시아 태평양(뭄바이) |  `arn:aws:lambda:ap-south-1:580247275435:layer:LambdaInsightsExtension:36`  | 
|  아시아 태평양(오사카) |  `arn:aws:lambda:ap-northeast-3:194566237122:layer:LambdaInsightsExtension:19`  | 
|  아시아 태평양(서울) |  `arn:aws:lambda:ap-northeast-2:580247275435:layer:LambdaInsightsExtension:37`  | 
|  아시아 태평양(싱가포르) |  `arn:aws:lambda:ap-southeast-1:580247275435:layer:LambdaInsightsExtension:38`  | 
|  아시아 태평양(시드니) |  `arn:aws:lambda:ap-southeast-2:580247275435:layer:LambdaInsightsExtension:38`  | 
|  아시아 태평양(도쿄) |  `arn:aws:lambda:ap-northeast-1:580247275435:layer:LambdaInsightsExtension:60`  | 
|  캐나다(중부) |  `arn:aws:lambda:ca-central-1:580247275435:layer:LambdaInsightsExtension:37`  | 
|  중국(베이징) |  `arn:aws-cn:lambda:cn-north-1:488211338238:layer:LambdaInsightsExtension:29`  | 
|  중국(닝샤) |  `arn:aws-cn:lambda:cn-northwest-1:488211338238:layer:LambdaInsightsExtension:29`  | 
|  유럽(프랑크푸르트) |  `arn:aws:lambda:eu-central-1:580247275435:layer:LambdaInsightsExtension:38`  | 
|  유럽(아일랜드) |  `arn:aws:lambda:eu-west-1:580247275435:layer:LambdaInsightsExtension:38`  | 
|  유럽(런던) |  `arn:aws:lambda:eu-west-2:580247275435:layer:LambdaInsightsExtension:38`  | 
|  유럽(밀라노) |  `arn:aws:lambda:eu-south-1:339249233099:layer:LambdaInsightsExtension:28`  | 
|  유럽(파리) |  `arn:aws:lambda:eu-west-3:580247275435:layer:LambdaInsightsExtension:37`  | 
|  유럽(스페인) |  `arn:aws:lambda:eu-south-2:352183217350:layer:LambdaInsightsExtension:12`  | 
|  유럽(스톡홀름) |  `arn:aws:lambda:eu-north-1:580247275435:layer:LambdaInsightsExtension:35`  | 
|  유럽(취리히) |  `arn:aws:lambda:eu-central-2:033019950311:layer:LambdaInsightsExtension:11`  | 
|  이스라엘(텔아비브) |  `arn:aws:lambda:il-central-1:459530977127:layer:LambdaInsightsExtension:5`  | 
|  중동(바레인) |  `arn:aws:lambda:me-south-1:285320876703:layer:LambdaInsightsExtension:28`  | 
|  중동(UAE) |  `arn:aws:lambda:me-central-1:732604637566:layer:LambdaInsightsExtension:11`  | 
|  남아메리카(상파울루) |  `arn:aws:lambda:sa-east-1:580247275435:layer:LambdaInsightsExtension:37`  | 

## 1.0.178.0
<a name="Lambda-Insights-extension-1.0.178.0"></a>

버전 1.0.178.0은 다음 AWS 리전에 대한 지원을 추가합니다.
+ 아시아 태평양(하이데라바드)
+ 아시아 태평양(자카르타)
+ 유럽(스페인)
+ 유럽(취리히)
+ 중동(UAE)

**버전 1.0.178.0용 ARN**

다음 표에는 익스텐션을 사용할 수 있는 각 AWS 리전에서 이 익스텐션 버전에 사용할 ARN이 나와 있습니다.


| 리전 | ARN | 
| --- | --- | 
|  미국 동부(버지니아 북부) |  `arn:aws:lambda:us-east-1:580247275435:layer:LambdaInsightsExtension:35`  | 
|  미국 동부(오하이오) |  `arn:aws:lambda:us-east-2:580247275435:layer:LambdaInsightsExtension:33`  | 
|  미국 서부(캘리포니아 북부) |  `arn:aws:lambda:us-west-1:580247275435:layer:LambdaInsightsExtension:33`  | 
|  미국 서부(오리건) |  `arn:aws:lambda:us-west-2:580247275435:layer:LambdaInsightsExtension:33`  | 
|  아프리카(케이프타운) |  `arn:aws:lambda:af-south-1:012438385374:layer:LambdaInsightsExtension:25`  | 
|  아시아 태평양(홍콩) |  `arn:aws:lambda:ap-east-1:519774774795:layer:LambdaInsightsExtension:25`  | 
|  아시아 태평양(하이데라바드) |  `arn:aws:lambda:ap-south-2:891564319516:layer:LambdaInsightsExtension:8`  | 
|  아시아 태평양(자카르타) |  `arn:aws:lambda:ap-southeast-3:439286490199:layer:LambdaInsightsExtension:11`  | 
|  아시아 태평양(뭄바이) |  `arn:aws:lambda:ap-south-1:580247275435:layer:LambdaInsightsExtension:31`  | 
|  아시아 태평양(오사카) |  `arn:aws:lambda:ap-northeast-3:194566237122:layer:LambdaInsightsExtension:2`  | 
|  아시아 태평양(서울) |  `arn:aws:lambda:ap-northeast-2:580247275435:layer:LambdaInsightsExtension:32`  | 
|  아시아 태평양(싱가포르) |  `arn:aws:lambda:ap-southeast-1:580247275435:layer:LambdaInsightsExtension:33`  | 
|  아시아 태평양(시드니) |  `arn:aws:lambda:ap-southeast-2:580247275435:layer:LambdaInsightsExtension:33`  | 
|  아시아 태평양(도쿄) |  `arn:aws:lambda:ap-northeast-1:580247275435:layer:LambdaInsightsExtension:50`  | 
|  캐나다(중부) |  `arn:aws:lambda:ca-central-1:580247275435:layer:LambdaInsightsExtension:32`  | 
|  중국(베이징) |  `arn:aws-cn:lambda:cn-north-1:488211338238:layer:LambdaInsightsExtension:26`  | 
|  중국(닝샤) |  `arn:aws-cn:lambda:cn-northwest-1:488211338238:layer:LambdaInsightsExtension:26`  | 
|  유럽(프랑크푸르트) |  `arn:aws:lambda:eu-central-1:580247275435:layer:LambdaInsightsExtension:35`  | 
|  유럽(아일랜드) |  `arn:aws:lambda:eu-west-1:580247275435:layer:LambdaInsightsExtension:33`  | 
|  유럽(런던) |  `arn:aws:lambda:eu-west-2:580247275435:layer:LambdaInsightsExtension:33`  | 
|  유럽(밀라노) |  `arn:aws:lambda:eu-south-1:339249233099:layer:LambdaInsightsExtension:25`  | 
|  유럽(파리) |  `arn:aws:lambda:eu-west-3:580247275435:layer:LambdaInsightsExtension:32`  | 
|  유럽(스페인) |  `arn:aws:lambda:eu-south-2:352183217350:layer:LambdaInsightsExtension:10`  | 
|  유럽(스톡홀름) |  `arn:aws:lambda:eu-north-1:580247275435:layer:LambdaInsightsExtension:30`  | 
|  유럽(취리히) |  `arn:aws:lambda:eu-central-2:033019950311:layer:LambdaInsightsExtension:7`  | 
|  중동(바레인) |  `arn:aws:lambda:me-south-1:285320876703:layer:LambdaInsightsExtension:25`  | 
|  중동(UAE) |  `arn:aws:lambda:me-central-1:732604637566:layer:LambdaInsightsExtension:9`  | 
|  남아메리카(상파울루) |  `arn:aws:lambda:sa-east-1:580247275435:layer:LambdaInsightsExtension:32`  | 

## 1.0.143.0
<a name="Lambda-Insights-extension-1.0.143.0"></a>

버전 1.0.143.0에는 Python 3.7 및 Go 1.x와의 호환성의 버그 수정이 포함되어 있습니다. Python 3.6 Lambda 런타임은 더 이상 사용되지 않습니다. 자세한 내용은 [Lambda 런타임](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html)을 참조하세요.

**1.0.143.0 버전용 ARN**

다음 표에는 익스텐션을 사용할 수 있는 각 AWS 리전에서 이 익스텐션 버전에 사용할 ARN이 나와 있습니다.


| 리전 | ARN | 
| --- | --- | 
|  미국 동부(버지니아 북부) |  `arn:aws:lambda:us-east-1:580247275435:layer:LambdaInsightsExtension:21`  | 
|  미국 동부(오하이오) |  `arn:aws:lambda:us-east-2:580247275435:layer:LambdaInsightsExtension:21`  | 
|  미국 서부(캘리포니아 북부) |  `arn:aws:lambda:us-west-1:580247275435:layer:LambdaInsightsExtension:20`  | 
|  미국 서부(오리건) |  `arn:aws:lambda:us-west-2:580247275435:layer:LambdaInsightsExtension:21`  | 
|  아프리카(케이프타운) |  `arn:aws:lambda:af-south-1:012438385374:layer:LambdaInsightsExtension:13`  | 
|  아시아 태평양(홍콩) |  `arn:aws:lambda:ap-east-1:519774774795:layer:LambdaInsightsExtension:13`  | 
|  아시아 태평양(뭄바이) |  `arn:aws:lambda:ap-south-1:580247275435:layer:LambdaInsightsExtension:21`  | 
|  아시아 태평양(오사카) |  `arn:aws:lambda:ap-northeast-3:194566237122:layer:LambdaInsightsExtension:2`  | 
|  아시아 태평양(서울) |  `arn:aws:lambda:ap-northeast-2:580247275435:layer:LambdaInsightsExtension:20`  | 
|  아시아 태평양(싱가포르) |  `arn:aws:lambda:ap-southeast-1:580247275435:layer:LambdaInsightsExtension:21`  | 
|  아시아 태평양(시드니) |  `arn:aws:lambda:ap-southeast-2:580247275435:layer:LambdaInsightsExtension:21`  | 
|  아시아 태평양(도쿄) |  `arn:aws:lambda:ap-northeast-1:580247275435:layer:LambdaInsightsExtension:32`  | 
|  캐나다(중부) |  `arn:aws:lambda:ca-central-1:580247275435:layer:LambdaInsightsExtension:20`  | 
|  중국(베이징) |  `arn:aws-cn:lambda:cn-north-1:488211338238:layer:LambdaInsightsExtension:14`  | 
|  중국(닝샤) |  `arn:aws-cn:lambda:cn-northwest-1:488211338238:layer:LambdaInsightsExtension:14`  | 
|  유럽(프랑크푸르트) |  `arn:aws:lambda:eu-central-1:580247275435:layer:LambdaInsightsExtension:21`  | 
|  유럽(아일랜드) |  `arn:aws:lambda:eu-west-1:580247275435:layer:LambdaInsightsExtension:21`  | 
|  유럽(런던) |  `arn:aws:lambda:eu-west-2:580247275435:layer:LambdaInsightsExtension:21`  | 
|  유럽(밀라노) |  `arn:aws:lambda:eu-south-1:339249233099:layer:LambdaInsightsExtension:13`  | 
|  유럽(파리) |  `arn:aws:lambda:eu-west-3:580247275435:layer:LambdaInsightsExtension:20`  | 
|  유럽(스톡홀름) |  `arn:aws:lambda:eu-north-1:580247275435:layer:LambdaInsightsExtension:20`  | 
|  중동(바레인) |  `arn:aws:lambda:me-south-1:285320876703:layer:LambdaInsightsExtension:13`  | 
|  남아메리카(상파울루) |  `arn:aws:lambda:sa-east-1:580247275435:layer:LambdaInsightsExtension:20`  | 

## 1.0.135.0
<a name="Lambda-Insights-extension-1.0.135.0"></a>

버전 1.0.135.0에는 Lambda Insights가 디스크 및 파일 설명자 사용량을 수집하고 보고하는 방법에 대한 버그 수정이 포함되어 있습니다. 이전 익스텐션 버전에서는 함수가 실행되는 동안 `tmp_free` 지표가 `/tmp` 디텍터리에서 사용 가능한 최대 공간을 보고했습니다. 이 버전은 지표를 변경하여 최솟값을 보고하므로 디스크 사용량을 평가할 때 더 유용합니다. `tmp` 디렉터리 스토리지 할당량에 대한 자세한 내용은 [Lambda 할당량](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) 섹션을 참조하세요.

이제 버전 1.0.135.0에서도 운영 체제 수준을 보고하지 않고 프로세스 전반의 최댓값으로 파일 설명자 사용량을 보고합니다(`fd_use`과 `fd_max`).

**1.0.135.0 버전용 ARN**

다음 표에는 익스텐션을 사용할 수 있는 각 AWS 리전에서 이 익스텐션 버전에 사용할 ARN이 나와 있습니다.


| 리전 | ARN | 
| --- | --- | 
|  미국 동부(버지니아 북부) |  `arn:aws:lambda:us-east-1:580247275435:layer:LambdaInsightsExtension:18`  | 
|  미국 동부(오하이오) |  `arn:aws:lambda:us-east-2:580247275435:layer:LambdaInsightsExtension:18`  | 
|  미국 서부(캘리포니아 북부) |  `arn:aws:lambda:us-west-1:580247275435:layer:LambdaInsightsExtension:18`  | 
|  미국 서부(오리건) |  `arn:aws:lambda:us-west-2:580247275435:layer:LambdaInsightsExtension:18`  | 
|  아프리카(케이프타운) |  `arn:aws:lambda:af-south-1:012438385374:layer:LambdaInsightsExtension:11`  | 
|  아시아 태평양(홍콩) |  `arn:aws:lambda:ap-east-1:519774774795:layer:LambdaInsightsExtension:11`  | 
|  아시아 태평양(뭄바이) |  `arn:aws:lambda:ap-south-1:580247275435:layer:LambdaInsightsExtension:18`  | 
|  아시아 태평양(오사카) |  `arn:aws:lambda:ap-northeast-3:194566237122:layer:LambdaInsightsExtension:1`  | 
|  아시아 태평양(서울) |  `arn:aws:lambda:ap-northeast-2:580247275435:layer:LambdaInsightsExtension:18`  | 
|  아시아 태평양(싱가포르) |  `arn:aws:lambda:ap-southeast-1:580247275435:layer:LambdaInsightsExtension:18`  | 
|  아시아 태평양(시드니) |  `arn:aws:lambda:ap-southeast-2:580247275435:layer:LambdaInsightsExtension:18`  | 
|  아시아 태평양(도쿄) |  `arn:aws:lambda:ap-northeast-1:580247275435:layer:LambdaInsightsExtension:25`  | 
|  캐나다(중부) |  `arn:aws:lambda:ca-central-1:580247275435:layer:LambdaInsightsExtension:18`  | 
|  중국(베이징) |  `arn:aws-cn:lambda:cn-north-1:488211338238:layer:LambdaInsightsExtension:11`  | 
|  중국(닝샤) |  `arn:aws-cn:lambda:cn-northwest-1:488211338238:layer:LambdaInsightsExtension:11`  | 
|  유럽(프랑크푸르트) |  `arn:aws:lambda:eu-central-1:580247275435:layer:LambdaInsightsExtension:18`  | 
|  유럽(아일랜드) |  `arn:aws:lambda:eu-west-1:580247275435:layer:LambdaInsightsExtension:18`  | 
|  유럽(런던) |  `arn:aws:lambda:eu-west-2:580247275435:layer:LambdaInsightsExtension:18`  | 
|  유럽(밀라노) |  `arn:aws:lambda:eu-south-1:339249233099:layer:LambdaInsightsExtension:11`  | 
|  유럽(파리) |  `arn:aws:lambda:eu-west-3:580247275435:layer:LambdaInsightsExtension:18`  | 
|  유럽(스톡홀름) |  `arn:aws:lambda:eu-north-1:580247275435:layer:LambdaInsightsExtension:18`  | 
|  중동(바레인) |  `arn:aws:lambda:me-south-1:285320876703:layer:LambdaInsightsExtension:11`  | 
|  남아메리카(상파울루) |  `arn:aws:lambda:sa-east-1:580247275435:layer:LambdaInsightsExtension:18`  | 

## 1.0.119.0
<a name="Lambda-Insights-extension-1.0.119.0"></a>

**1.0.119.0 버전용 ARN**

다음 표에는 익스텐션을 사용할 수 있는 각 AWS 리전에서 이 익스텐션 버전에 사용할 ARN이 나와 있습니다.


| 리전 | ARN | 
| --- | --- | 
|  미국 동부(버지니아 북부) |  `arn:aws:lambda:us-east-1:580247275435:layer:LambdaInsightsExtension:16`  | 
|  미국 동부(오하이오) |  `arn:aws:lambda:us-east-2:580247275435:layer:LambdaInsightsExtension:16`  | 
|  미국 서부(캘리포니아 북부) |  `arn:aws:lambda:us-west-1:580247275435:layer:LambdaInsightsExtension:16`  | 
|  미국 서부(오리건) |  `arn:aws:lambda:us-west-2:580247275435:layer:LambdaInsightsExtension:16`  | 
|  아프리카(케이프타운) |  `arn:aws:lambda:af-south-1:012438385374:layer:LambdaInsightsExtension:9`  | 
|  아시아 태평양(홍콩) |  `arn:aws:lambda:ap-east-1:519774774795:layer:LambdaInsightsExtension:9`  | 
|  아시아 태평양(뭄바이) |  `arn:aws:lambda:ap-south-1:580247275435:layer:LambdaInsightsExtension:16`  | 
|  아시아 태평양(서울) |  `arn:aws:lambda:ap-northeast-2:580247275435:layer:LambdaInsightsExtension:16`  | 
|  아시아 태평양(싱가포르) |  `arn:aws:lambda:ap-southeast-1:580247275435:layer:LambdaInsightsExtension:16`  | 
|  아시아 태평양(시드니) |  `arn:aws:lambda:ap-southeast-2:580247275435:layer:LambdaInsightsExtension:16`  | 
|  아시아 태평양(도쿄) |  `arn:aws:lambda:ap-northeast-1:580247275435:layer:LambdaInsightsExtension:23`  | 
|  캐나다(중부) |  `arn:aws:lambda:ca-central-1:580247275435:layer:LambdaInsightsExtension:16`  | 
|  중국(베이징) |  `arn:aws-cn:lambda:cn-north-1:488211338238:layer:LambdaInsightsExtension:9`  | 
|  중국(닝샤) |  `arn:aws-cn:lambda:cn-northwest-1:488211338238:layer:LambdaInsightsExtension:9`  | 
|  유럽(프랑크푸르트) |  `arn:aws:lambda:eu-central-1:580247275435:layer:LambdaInsightsExtension:16`  | 
|  유럽(아일랜드) |  `arn:aws:lambda:eu-west-1:580247275435:layer:LambdaInsightsExtension:16`  | 
|  유럽(런던) |  `arn:aws:lambda:eu-west-2:580247275435:layer:LambdaInsightsExtension:16`  | 
|  유럽(밀라노) |  `arn:aws:lambda:eu-south-1:339249233099:layer:LambdaInsightsExtension:9`  | 
|  유럽(파리) |  `arn:aws:lambda:eu-west-3:580247275435:layer:LambdaInsightsExtension:16`  | 
|  유럽(스톡홀름) |  `arn:aws:lambda:eu-north-1:580247275435:layer:LambdaInsightsExtension:16`  | 
|  중동(바레인) |  `arn:aws:lambda:me-south-1:285320876703:layer:LambdaInsightsExtension:9`  | 
|  남아메리카(상파울루) |  `arn:aws:lambda:sa-east-1:580247275435:layer:LambdaInsightsExtension:16`  | 

## 1.0.98.0
<a name="Lambda-Insights-extension-1.0.98.0"></a>

이 버전은 불필요한 로깅을 제거하고 AWS Serverless Application Model CLI 로컬 호출 관련 문제도 해결합니다. 이 문제에 대한 자세한 내용은 [LambdaInsightsExtension을 추가하면 'sam local invoke'로 시간 초과가 발생함](https://github.com/aws/aws-sam-cli/issues/2469)을 참조하세요.

**1.0.98.0 버전용 ARN**

다음 표에는 익스텐션을 사용할 수 있는 각 AWS 리전에서 이 익스텐션 버전에 사용할 ARN이 나와 있습니다.


| 리전 | ARN | 
| --- | --- | 
|  미국 동부(버지니아 북부) |  `arn:aws:lambda:us-east-1:580247275435:layer:LambdaInsightsExtension:14`  | 
|  미국 동부(오하이오) |  `arn:aws:lambda:us-east-2:580247275435:layer:LambdaInsightsExtension:14`  | 
|  미국 서부(캘리포니아 북부) |  `arn:aws:lambda:us-west-1:580247275435:layer:LambdaInsightsExtension:14`  | 
|  미국 서부(오리건) |  `arn:aws:lambda:us-west-2:580247275435:layer:LambdaInsightsExtension:14`  | 
|  아프리카(케이프타운) |  `arn:aws:lambda:af-south-1:012438385374:layer:LambdaInsightsExtension:8`  | 
|  아시아 태평양(홍콩) |  `arn:aws:lambda:ap-east-1:519774774795:layer:LambdaInsightsExtension:8`  | 
|  아시아 태평양(뭄바이) |  `arn:aws:lambda:ap-south-1:580247275435:layer:LambdaInsightsExtension:14`  | 
|  아시아 태평양(서울) |  `arn:aws:lambda:ap-northeast-2:580247275435:layer:LambdaInsightsExtension:14`  | 
|  아시아 태평양(싱가포르) |  `arn:aws:lambda:ap-southeast-1:580247275435:layer:LambdaInsightsExtension:14`  | 
|  아시아 태평양(시드니) |  `arn:aws:lambda:ap-southeast-2:580247275435:layer:LambdaInsightsExtension:14`  | 
|  아시아 태평양(도쿄) |  `arn:aws:lambda:ap-northeast-1:580247275435:layer:LambdaInsightsExtension:14`  | 
|  캐나다(중부) |  `arn:aws:lambda:ca-central-1:580247275435:layer:LambdaInsightsExtension:14`  | 
|  중국(베이징) |  `arn:aws-cn:lambda:cn-north-1:488211338238:layer:LambdaInsightsExtension:8`  | 
|  중국(닝샤) |  `arn:aws-cn:lambda:cn-northwest-1:488211338238:layer:LambdaInsightsExtension:8`  | 
|  유럽(프랑크푸르트) |  `arn:aws:lambda:eu-central-1:580247275435:layer:LambdaInsightsExtension:14`  | 
|  유럽(아일랜드) |  `arn:aws:lambda:eu-west-1:580247275435:layer:LambdaInsightsExtension:14`  | 
|  유럽(런던) |  `arn:aws:lambda:eu-west-2:580247275435:layer:LambdaInsightsExtension:14`  | 
|  유럽(밀라노) |  `arn:aws:lambda:eu-south-1:339249233099:layer:LambdaInsightsExtension:8`  | 
|  유럽(파리) |  `arn:aws:lambda:eu-west-3:580247275435:layer:LambdaInsightsExtension:14`  | 
|  유럽(스톡홀름) |  `arn:aws:lambda:eu-north-1:580247275435:layer:LambdaInsightsExtension:14`  | 
|  중동(바레인) |  `arn:aws:lambda:me-south-1:285320876703:layer:LambdaInsightsExtension:8`  | 
|  남아메리카(상파울루) |  `arn:aws:lambda:sa-east-1:580247275435:layer:LambdaInsightsExtension:14`  | 

## 1.0.89.0
<a name="Lambda-Insights-extension-1.0.89.0"></a>

이 버전은 함수 호출의 시작을 항상 나타내도록 성능 이벤트 타임스탬프를 수정합니다.

**1.0.89.0 버전용 ARN**

다음 표에는 익스텐션을 사용할 수 있는 각 AWS 리전에서 이 익스텐션 버전에 사용할 ARN이 나와 있습니다.


| 리전 | ARN | 
| --- | --- | 
|  미국 동부(버지니아 북부) |  `arn:aws:lambda:us-east-1:580247275435:layer:LambdaInsightsExtension:12`  | 
|  미국 동부(오하이오) |  `arn:aws:lambda:us-east-2:580247275435:layer:LambdaInsightsExtension:12`  | 
|  미국 서부(캘리포니아 북부) |  `arn:aws:lambda:us-west-1:580247275435:layer:LambdaInsightsExtension:12`  | 
|  미국 서부(오리건) |  `arn:aws:lambda:us-west-2:580247275435:layer:LambdaInsightsExtension:12`  | 
|  아시아 태평양(뭄바이) |  `arn:aws:lambda:ap-south-1:580247275435:layer:LambdaInsightsExtension:12`  | 
|  아시아 태평양(서울) |  `arn:aws:lambda:ap-northeast-2:580247275435:layer:LambdaInsightsExtension:12`  | 
|  아시아 태평양(싱가포르) |  `arn:aws:lambda:ap-southeast-1:580247275435:layer:LambdaInsightsExtension:12`  | 
|  아시아 태평양(시드니) |  `arn:aws:lambda:ap-southeast-2:580247275435:layer:LambdaInsightsExtension:12`  | 
|  아시아 태평양(도쿄) |  `arn:aws:lambda:ap-northeast-1:580247275435:layer:LambdaInsightsExtension:12`  | 
|  캐나다(중부) |  `arn:aws:lambda:ca-central-1:580247275435:layer:LambdaInsightsExtension:12`  | 
|  유럽(프랑크푸르트) |  `arn:aws:lambda:eu-central-1:580247275435:layer:LambdaInsightsExtension:12`  | 
|  유럽(아일랜드) |  `arn:aws:lambda:eu-west-1:580247275435:layer:LambdaInsightsExtension:12`  | 
|  유럽(런던) |  `arn:aws:lambda:eu-west-2:580247275435:layer:LambdaInsightsExtension:12`  | 
|  유럽(파리) |  `arn:aws:lambda:eu-west-3:580247275435:layer:LambdaInsightsExtension:12`  | 
|  유럽(스톡홀름) |  `arn:aws:lambda:eu-north-1:580247275435:layer:LambdaInsightsExtension:12`  | 
|  남아메리카(상파울루) |  `arn:aws:lambda:sa-east-1:580247275435:layer:LambdaInsightsExtension:12`  | 

## 1.0.86.0
<a name="Lambda-Insights-extension-1.0.86.0"></a>

익스텐션 버전 1.0.54.0에서는 메모리 지표가 때로 잘못 보고되고 때로는 100%보다 높았습니다. 1.0.86.0 버전은 Lambda 플랫폼 지표와 동일한 이벤트 데이터를 사용하여 메모리 측정 문제를 수정합니다. 즉, 기록된 메모리 지표 값이 크게 변경될 수도 있습니다. 이는 새로운 Lambda Logs API 사용을 통해 가능합니다. 이렇게 하면 Lambda 샌드박스 메모리 사용량을 더 정확하게 측정할 수 있습니다. 그러나 함수 샌드박스가 시간이 초과되어 결과적으로 스핀다운되는 경우 Lambda Logs API가 플랫폼 보고서 이벤트를 전달할 수 없다는 점에 유의해야 합니다. 이 경우 Lambda Insights가 호출 지표를 기록할 수 없습니다. Lambda Logs API에 대한 자세한 내용은 [AWS Lambda Logs API](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-logs-api.html) 단원을 참조하세요.

**1.0.86.0 버전의 새로운 기능**
+ Lambda Logs API를 사용하여 메모리 지표를 수정합니다. 이는 메모리 통계가 100%보다 컸던 이전 버전의 문제를 해결합니다.
+ `Init Duration`을 새 CloudWatch 지표로 도입합니다.
+ 호출 ARN을 사용하여 별칭 및 호출된 버전의 [**버전(version)**] 측정기준을 추가합니다. Lambda 별칭 또는 버전을 사용하여 증분 배포(예: 블루-그린 배포)를 달성할 경우 호출된 별칭을 기반으로 지표를 볼 수 있습니다. 함수가 별칭 또는 버전을 사용하지 않는 경우 [**버전(version)**] 측정기준이 적용되지 않습니다. 자세한 내용은 [Lambda 함수 별칭](https://docs.aws.amazon.com/lambda/latest/dg/configuration-aliases.html) 단원을 참조하세요.
+ `billed_mb_ms field`를 성능 이벤트에 추가하여 호출당 비용을 표시합니다. 이때 프로비저닝된 동시성과 연결된 비용은 고려하지 않습니다.
+ `billed_duration` 및 `duration` 필드를 성능 이벤트에 추가합니다.

**1.0.86.0 버전용 ARN**

다음 표에는 익스텐션을 사용할 수 있는 각 AWS 리전에서 이 익스텐션 버전에 사용할 ARN이 나와 있습니다.


| 리전 | ARN | 
| --- | --- | 
|  미국 동부(버지니아 북부) |  `arn:aws:lambda:us-east-1:580247275435:layer:LambdaInsightsExtension:11`  | 
|  미국 동부(오하이오) |  `arn:aws:lambda:us-east-2:580247275435:layer:LambdaInsightsExtension:11`  | 
|  미국 서부(캘리포니아 북부) |  `arn:aws:lambda:us-west-1:580247275435:layer:LambdaInsightsExtension:11`  | 
|  미국 서부(오리건) |  `arn:aws:lambda:us-west-2:580247275435:layer:LambdaInsightsExtension:11`  | 
|  아시아 태평양(뭄바이) |  `arn:aws:lambda:ap-south-1:580247275435:layer:LambdaInsightsExtension:11`  | 
|  아시아 태평양(서울) |  `arn:aws:lambda:ap-northeast-2:580247275435:layer:LambdaInsightsExtension:11`  | 
|  아시아 태평양(싱가포르) |  `arn:aws:lambda:ap-southeast-1:580247275435:layer:LambdaInsightsExtension:11`  | 
|  아시아 태평양(시드니) |  `arn:aws:lambda:ap-southeast-2:580247275435:layer:LambdaInsightsExtension:11`  | 
|  아시아 태평양(도쿄) |  `arn:aws:lambda:ap-northeast-1:580247275435:layer:LambdaInsightsExtension:11`  | 
|  캐나다(중부) |  `arn:aws:lambda:ca-central-1:580247275435:layer:LambdaInsightsExtension:11`  | 
|  유럽(프랑크푸르트) |  `arn:aws:lambda:eu-central-1:580247275435:layer:LambdaInsightsExtension:11`  | 
|  유럽(아일랜드) |  `arn:aws:lambda:eu-west-1:580247275435:layer:LambdaInsightsExtension:11`  | 
|  유럽(런던) |  `arn:aws:lambda:eu-west-2:580247275435:layer:LambdaInsightsExtension:11`  | 
|  유럽(파리) |  `arn:aws:lambda:eu-west-3:580247275435:layer:LambdaInsightsExtension:11`  | 
|  유럽(스톡홀름) |  `arn:aws:lambda:eu-north-1:580247275435:layer:LambdaInsightsExtension:11`  | 
|  남아메리카(상파울루) |  `arn:aws:lambda:sa-east-1:580247275435:layer:LambdaInsightsExtension:11`  | 

## 1.0.54.0
<a name="Lambda-Insights-extension-1.0.54.0"></a>

1.0.54.0 버전은 Lambda Insights 익스텐션의 초기 릴리스였습니다.

**1.0.54.0 버전용 ARN**

다음 표에는 익스텐션을 사용할 수 있는 각 AWS 리전에서 이 익스텐션 버전에 사용할 ARN이 나와 있습니다.


| 리전 | ARN | 
| --- | --- | 
|  미국 동부(버지니아 북부) |  `arn:aws:lambda:us-east-1:580247275435:layer:LambdaInsightsExtension:2`  | 
|  미국 동부(오하이오) |  `arn:aws:lambda:us-east-2:580247275435:layer:LambdaInsightsExtension:2`  | 
|  미국 서부(캘리포니아 북부) |  `arn:aws:lambda:us-west-1:580247275435:layer:LambdaInsightsExtension:2`  | 
|  미국 서부(오리건) |  `arn:aws:lambda:us-west-2:580247275435:layer:LambdaInsightsExtension:2`  | 
|  아시아 태평양(뭄바이) |  `arn:aws:lambda:ap-south-1:580247275435:layer:LambdaInsightsExtension:2`  | 
|  아시아 태평양(서울) |  `arn:aws:lambda:ap-northeast-2:580247275435:layer:LambdaInsightsExtension:2`  | 
|  아시아 태평양(싱가포르) |  `arn:aws:lambda:ap-southeast-1:580247275435:layer:LambdaInsightsExtension:2`  | 
|  아시아 태평양(시드니) |  `arn:aws:lambda:ap-southeast-2:580247275435:layer:LambdaInsightsExtension:2`  | 
|  아시아 태평양(도쿄) |  `arn:aws:lambda:ap-northeast-1:580247275435:layer:LambdaInsightsExtension:2`  | 
|  캐나다(중부) |  `arn:aws:lambda:ca-central-1:580247275435:layer:LambdaInsightsExtension:2`  | 
|  유럽(프랑크푸르트) |  `arn:aws:lambda:eu-central-1:580247275435:layer:LambdaInsightsExtension:2`  | 
|  유럽(아일랜드) |  `arn:aws:lambda:eu-west-1:580247275435:layer:LambdaInsightsExtension:2`  | 
|  유럽(런던) |  `arn:aws:lambda:eu-west-2:580247275435:layer:LambdaInsightsExtension:2`  | 
|  유럽(파리) |  `arn:aws:lambda:eu-west-3:580247275435:layer:LambdaInsightsExtension:2`  | 
|  유럽(스톡홀름) |  `arn:aws:lambda:eu-north-1:580247275435:layer:LambdaInsightsExtension:2`  | 
|  남아메리카(상파울루) |  `arn:aws:lambda:sa-east-1:580247275435:layer:LambdaInsightsExtension:2`  | 

# ARM64 플랫폼
<a name="Lambda-Insights-extension-versionsARM"></a>

이 섹션에서는 ARM64 플랫폼용 Lambda Insights 익스텐션 버전과 각 AWS 리전에서 이러한 익스텐션에 사용할 ARN을 나열합니다.

**중요**  
Lambda Insights 확장 1.0.317.0 이상은 Amazon Linux 1을 지원하지 않습니다.

## 1.0.660.0
<a name="Lambda-Insights-extension-ARM-1.0.660.0"></a>

1.0.660.0 버전에는 Lambda 관리형 인스턴스에서 실행되는 Lambda 함수에 대한 Lambda Insights 확장 지원이 포함됩니다. Lambda 관리형 인스턴스에서 실행되는 함수의 경우, 확장 프로그램은 1분에 한 번씩 EMF 로그 이벤트를 전송하여 1분 기준으로 세분화된 CloudWatch 지표 12개를 생성합니다.


| 리전 | ARN | 
| --- | --- | 
|  미국 동부(버지니아 북부) |  `arn:aws:lambda:us-east-1:580247275435:layer:LambdaInsightsExtension-Arm64:31`  | 
|  미국 동부(오하이오) |  `arn:aws:lambda:us-east-2:580247275435:layer:LambdaInsightsExtension-Arm64:33`  | 
|  미국 서부(캘리포니아 북부) |  `arn:aws:lambda:us-west-1:580247275435:layer:LambdaInsightsExtension-Arm64:29`  | 
|  미국 서부(오리건) |  `arn:aws:lambda:us-west-2:580247275435:layer:LambdaInsightsExtension-Arm64:31`  | 
|  아프리카(케이프타운) |  `arn:aws:lambda:af-south-1:012438385374:layer:LambdaInsightsExtension-Arm64:30`  | 
|  아시아 태평양(홍콩) |  `arn:aws:lambda:ap-east-1:519774774795:layer:LambdaInsightsExtension-Arm64:30`  | 
|  아시아 태평양(하이데라바드) |  `arn:aws:lambda:ap-south-2:891564319516:layer:LambdaInsightsExtension-Arm64:18`  | 
|  아시아 태평양(자카르타) |  `arn:aws:lambda:ap-southeast-3:439286490199:layer:LambdaInsightsExtension-Arm64:30`  | 
|  아시아 태평양(말레이시아) |  `arn:aws:lambda:ap-southeast-5:590183865173:layer:LambdaInsightsExtension-Arm64:7`  | 
|  아시아 태평양(멜버른) |  `arn:aws:lambda:ap-southeast-4:158895979263:layer:LambdaInsightsExtension-Arm64:7`  | 
|  아시아 태평양(뭄바이) |  `arn:aws:lambda:ap-south-1:580247275435:layer:LambdaInsightsExtension-Arm64:33`  | 
|  아시아 태평양(뉴질랜드) |  `arn:aws:lambda:ap-southeast-6:727646510379:layer:LambdaInsightsExtension-Arm64:165`  | 
|  아시아 태평양(오사카) |  `arn:aws:lambda:ap-northeast-3:194566237122:layer:LambdaInsightsExtension-Arm64:28`  | 
|  아시아 태평양(서울) |  `arn:aws:lambda:ap-northeast-2:580247275435:layer:LambdaInsightsExtension-Arm64:30`  | 
|  아시아 태평양(싱가포르) |  `arn:aws:lambda:ap-southeast-1:580247275435:layer:LambdaInsightsExtension-Arm64:31`  | 
|  아시아 태평양(시드니) |  `arn:aws:lambda:ap-southeast-2:580247275435:layer:LambdaInsightsExtension-Arm64:31`  | 
|  아시아 태평양(타이베이) |  `arn:aws:lambda:ap-east-2:145023102084:layer:LambdaInsightsExtension-Arm64:7`  | 
|  아시아 태평양(태국) |  `arn:aws:lambda:ap-southeast-7:761018874580:layer:LambdaInsightsExtension-Arm64:7`  | 
|  아시아 태평양(도쿄) |  `arn:aws:lambda:ap-northeast-1:580247275435:layer:LambdaInsightsExtension-Arm64:42`  | 
|  캐나다(중부) |  `arn:aws:lambda:ca-central-1:580247275435:layer:LambdaInsightsExtension-Arm64:29`  | 
|  캐나다 서부(캘거리) |  `arn:aws:lambda:ca-west-1:946466191631:layer:LambdaInsightsExtension-Arm64:7`  | 
|  중국(베이징) |  `arn:aws-cn:lambda:cn-north-1:488211338238:layer:LambdaInsightsExtension-Arm64:4`  | 
|  중국(닝샤) |  `arn:aws-cn:lambda:cn-northwest-1:488211338238:layer:LambdaInsightsExtension-Arm64:4`  | 
|  유럽(프랑크푸르트) |  `arn:aws:lambda:eu-central-1:580247275435:layer:LambdaInsightsExtension-Arm64:31`  | 
|  유럽(아일랜드) |  `arn:aws:lambda:eu-west-1:580247275435:layer:LambdaInsightsExtension-Arm64:31`  | 
|  유럽(런던) |  `arn:aws:lambda:eu-west-2:580247275435:layer:LambdaInsightsExtension-Arm64:31`  | 
|  유럽(밀라노) |  `arn:aws:lambda:eu-south-1:339249233099:layer:LambdaInsightsExtension-Arm64:30`  | 
|  유럽(파리) |  `arn:aws:lambda:eu-west-3:580247275435:layer:LambdaInsightsExtension-Arm64:29`  | 
|  유럽(스페인) |  `arn:aws:lambda:eu-south-2:352183217350:layer:LambdaInsightsExtension-Arm64:18`  | 
|  유럽(스톡홀름) |  `arn:aws:lambda:eu-north-1:580247275435:layer:LambdaInsightsExtension-Arm64:29`  | 
|  유럽(취리히) |  `arn:aws:lambda:eu-central-2:033019950311:layer:LambdaInsightsExtension-Arm64:7`  | 
|  이스라엘(텔아비브) |  `arn:aws:lambda:il-central-1:459530977127:layer:LambdaInsightsExtension-Arm64:7`  | 
|  멕시코(중부) |  `arn:aws:lambda:mx-central-1:879381266642:layer:LambdaInsightsExtension-Arm64:7`  | 
|  중동(바레인) |  `arn:aws:lambda:me-south-1:285320876703:layer:LambdaInsightsExtension-Arm64:30`  | 
|  중동(UAE) |  `arn:aws:lambda:me-central-1:732604637566:layer:LambdaInsightsExtension-Arm64:7`  | 
|  남아메리카(상파울루) |  `arn:aws:lambda:sa-east-1:580247275435:layer:LambdaInsightsExtension-Arm64:29`  | 
|  AWS GovCloud(미국 동부) |  `arn:aws-us-gov:lambda:us-gov-east-1:122132214140:layer:LambdaInsightsExtension-Arm64:6`  | 
|  AWS GovCloud(미국 서부) |  `arn:aws-us-gov:lambda:us-gov-west-1:751350123760:layer:LambdaInsightsExtension-Arm64:6`  | 

## 1.0.498.0
<a name="Lambda-Insights-extension-ARM-1.0.498.0"></a>

1.0.498.0 버전에는 버그 수정 및 성능 개선 사항이 포함됩니다.


| 리전 | ARN | 
| --- | --- | 
|  미국 동부(버지니아 북부) |  `arn:aws:lambda:us-east-1:580247275435:layer:LambdaInsightsExtension-Arm64:27`  | 
|  미국 동부(오하이오) |  `arn:aws:lambda:us-east-2:580247275435:layer:LambdaInsightsExtension-Arm64:29`  | 
|  미국 서부(캘리포니아 북부) |  `arn:aws:lambda:us-west-1:580247275435:layer:LambdaInsightsExtension-Arm64:25`  | 
|  미국 서부(오리건) |  `arn:aws:lambda:us-west-2:580247275435:layer:LambdaInsightsExtension-Arm64:27`  | 
|  아프리카(케이프타운) |  `arn:aws:lambda:af-south-1:012438385374:layer:LambdaInsightsExtension-Arm64:26`  | 
|  아시아 태평양(홍콩) |  `arn:aws:lambda:ap-east-1:519774774795:layer:LambdaInsightsExtension-Arm64:26`  | 
|  아시아 태평양(뭄바이) |  `arn:aws:lambda:ap-south-1:580247275435:layer:LambdaInsightsExtension-Arm64:29`  | 
|  아시아 태평양(하이데라바드) |  `arn:aws:lambda:ap-south-2:891564319516:layer:LambdaInsightsExtension-Arm64:14`  | 
|  아시아 태평양(싱가포르) |  `arn:aws:lambda:ap-southeast-1:580247275435:layer:LambdaInsightsExtension-Arm64:27`  | 
|  아시아 태평양(시드니) |  `arn:aws:lambda:ap-southeast-2:580247275435:layer:LambdaInsightsExtension-Arm64:27`  | 
|  아시아 태평양(자카르타) |  `arn:aws:lambda:ap-southeast-3:439286490199:layer:LambdaInsightsExtension-Arm64:26`  | 
|  아시아 태평양(멜버른) |  `arn:aws:lambda:ap-southeast-4:158895979263:layer:LambdaInsightsExtension-Arm64:3`  | 
|  아시아 태평양(말레이시아) |  `arn:aws:lambda:ap-southeast-5:590183865173:layer:LambdaInsightsExtension-Arm64:3`  | 
|  아시아 태평양(태국) |  `arn:aws:lambda:ap-southeast-7:761018874580:layer:LambdaInsightsExtension-Arm64:2`  | 
|  아시아 태평양(도쿄) |  `arn:aws:lambda:ap-northeast-1:580247275435:layer:LambdaInsightsExtension-Arm64:38`  | 
|  아시아 태평양(서울) |  `arn:aws:lambda:ap-northeast-2:580247275435:layer:LambdaInsightsExtension-Arm64:26`  | 
|  아시아 태평양(오사카) |  `arn:aws:lambda:ap-northeast-3:194566237122:layer:LambdaInsightsExtension-Arm64:24`  | 
|  캐나다(중부) |  `arn:aws:lambda:ca-central-1:580247275435:layer:LambdaInsightsExtension-Arm64:25`  | 
|  캐나다 서부(캘거리) |  `arn:aws:lambda:ca-west-1:946466191631:layer:LambdaInsightsExtension-Arm64:3`  | 
|  유럽(프랑크푸르트) |  `arn:aws:lambda:eu-central-1:580247275435:layer:LambdaInsightsExtension-Arm64:27`  | 
|  유럽(취리히) |  `arn:aws:lambda:eu-central-2:033019950311:layer:LambdaInsightsExtension-Arm64:3`  | 
|  유럽(아일랜드) |  `arn:aws:lambda:eu-west-1:580247275435:layer:LambdaInsightsExtension-Arm64:27`  | 
|  유럽(런던) |  `arn:aws:lambda:eu-west-2:580247275435:layer:LambdaInsightsExtension-Arm64:27`  | 
|  유럽(파리) |  `arn:aws:lambda:eu-west-3:580247275435:layer:LambdaInsightsExtension-Arm64:25`  | 
|  유럽(스톡홀름) |  `arn:aws:lambda:eu-north-1:580247275435:layer:LambdaInsightsExtension-Arm64:25`  | 
|  유럽(밀라노) |  `arn:aws:lambda:eu-south-1:339249233099:layer:LambdaInsightsExtension-Arm64:26`  | 
|  유럽(스페인) |  `arn:aws:lambda:eu-south-2:352183217350:layer:LambdaInsightsExtension-Arm64:14`  | 
|  이스라엘(텔아비브) |  `arn:aws:lambda:il-central-1:459530977127:layer:LambdaInsightsExtension-Arm64:3`  | 
|  멕시코(중부) |  `arn:aws:lambda:mx-central-1:879381266642:layer:LambdaInsightsExtension-Arm64:2`  | 
|  중동(바레인) |  `arn:aws:lambda:me-south-1:285320876703:layer:LambdaInsightsExtension-Arm64:26`  | 
|  중동(UAE) |  `arn:aws:lambda:me-central-1:732604637566:layer:LambdaInsightsExtension-Arm64:3`  | 
|  남아메리카(상파울루) |  `arn:aws:lambda:sa-east-1:580247275435:layer:LambdaInsightsExtension-Arm64:25`  | 
|  China (Beijing) |  `arn:aws-cn:lambda:cn-north-1:488211338238:layer:LambdaInsightsExtension-Arm64:1`  | 
|  China (Ningxia) |  `arn:aws-cn:lambda:cn-northwest-1:488211338238:layer:LambdaInsightsExtension-Arm64:1`  | 
|  AWS GovCloud(미국 동부) |  `arn:aws-us-gov:lambda:us-gov-east-1:122132214140:layer:LambdaInsightsExtension-Arm64:6`  | 
|  AWS GovCloud(미국 서부) |  `arn:aws-us-gov:lambda:us-gov-west-1:751350123760:layer:LambdaInsightsExtension-Arm64:6`  | 

## 1.0.404.0
<a name="Lambda-Insights-extension-ARM-1.0.404.0"></a>

버전 1.0.404.0에서는 Lambda Insights 확장의 이진수 크기를 최대 9MB에서 최대 5MB로 줄이고, Lambda Insights 확장 계층의 zip 크기를 최대 3.7MB에서 최대 2.5MB로 줄입니다. 또한 에이전트의 전체 메모리 소비를 최대 11MB에서 최대 7MB로 줄입니다.


| 리전 | ARN | 
| --- | --- | 
|  미국 동부(버지니아 북부) |  `arn:aws:lambda:us-east-1:580247275435:layer:LambdaInsightsExtension-Arm64:23`  | 
|  미국 동부(오하이오) |  `arn:aws:lambda:us-east-2:580247275435:layer:LambdaInsightsExtension-Arm64:25`  | 
|  미국 서부(캘리포니아 북부) |  `arn:aws:lambda:us-west-1:580247275435:layer:LambdaInsightsExtension-Arm64:21`  | 
|  미국 서부(오리건) |  `arn:aws:lambda:us-west-2:580247275435:layer:LambdaInsightsExtension-Arm64:23`  | 
|  아프리카(케이프타운) |  `arn:aws:lambda:af-south-1:012438385374:layer:LambdaInsightsExtension-Arm64:21`  | 
|  아시아 태평양(홍콩) |  `arn:aws:lambda:ap-east-1:519774774795:layer:LambdaInsightsExtension-Arm64:21`  | 
|  아시아 태평양(하이데라바드) |  `arn:aws:lambda:ap-south-2:891564319516:layer:LambdaInsightsExtension-Arm64:9`  | 
|  아시아 태평양(자카르타) |  `arn:aws:lambda:ap-southeast-3:439286490199:layer:LambdaInsightsExtension-Arm64:21`  | 
|  아시아 태평양(뭄바이) |  `arn:aws:lambda:ap-south-1:580247275435:layer:LambdaInsightsExtension-Arm64:25`  | 
|  아시아 태평양(오사카) |  `arn:aws:lambda:ap-northeast-3:194566237122:layer:LambdaInsightsExtension-Arm64:20`  | 
|  아시아 태평양(서울) |  `arn:aws:lambda:ap-northeast-2:580247275435:layer:LambdaInsightsExtension-Arm64:22`  | 
|  아시아 태평양(싱가포르) |  `arn:aws:lambda:ap-southeast-1:580247275435:layer:LambdaInsightsExtension-Arm64:23`  | 
|  아시아 태평양(시드니) |  `arn:aws:lambda:ap-southeast-2:580247275435:layer:LambdaInsightsExtension-Arm64:23`  | 
|  아시아 태평양(도쿄) |  `arn:aws:lambda:ap-northeast-1:580247275435:layer:LambdaInsightsExtension-Arm64:34`  | 
|  캐나다(중부) |  `arn:aws:lambda:ca-central-1:580247275435:layer:LambdaInsightsExtension-Arm64:21`  | 
|  유럽(프랑크푸르트) |  `arn:aws:lambda:eu-central-1:580247275435:layer:LambdaInsightsExtension-Arm64:23`  | 
|  유럽(아일랜드) |  `arn:aws:lambda:eu-west-1:580247275435:layer:LambdaInsightsExtension-Arm64:23`  | 
|  유럽(런던) |  `arn:aws:lambda:eu-west-2:580247275435:layer:LambdaInsightsExtension-Arm64:23`  | 
|  유럽(밀라노) |  `arn:aws:lambda:eu-south-1:339249233099:layer:LambdaInsightsExtension-Arm64:21`  | 
|  유럽(파리) |  `arn:aws:lambda:eu-west-3:580247275435:layer:LambdaInsightsExtension-Arm64:21`  | 
|  유럽(스페인) |  `arn:aws:lambda:eu-south-2:352183217350:layer:LambdaInsightsExtension-Arm64:9`  | 
|  유럽(스톡홀름) |  `arn:aws:lambda:eu-north-1:580247275435:layer:LambdaInsightsExtension-Arm64:21`  | 
|  중동(바레인) |  `arn:aws:lambda:me-south-1:285320876703:layer:LambdaInsightsExtension-Arm64:21`  | 
|  남아메리카(상파울루) |  `arn:aws:lambda:sa-east-1:580247275435:layer:LambdaInsightsExtension-Arm64:21`  | 
|  AWS GovCloud(미국 동부) |  `arn:aws-us-gov:lambda:us-gov-east-1:122132214140:layer:LambdaInsightsExtension-Arm64:6`  | 
|  AWS GovCloud(미국 서부) |  `arn:aws-us-gov:lambda:us-gov-west-1:751350123760:layer:LambdaInsightsExtension-Arm64:6`  | 

## 1.0.391.0
<a name="Lambda-Insights-extension-ARM-1.0.391.0"></a>

**중요**  
버전 1.0.391.0에서는 Lambda Insights가 스레드 사용량을 수집 및 보고하는 방식이 변경되었습니다. 이전 버전의 확장 기능에서 `threads_max` 지표는 프로세스 ID가 1인 프로세스에서 실행 중인 최대 스레드 수를 보고했습니다. 버전 1.0.391.0부터 이 지표는 실행 환경의 모든 프로세스에서 함수 실행 중 어떤 시점에서든 실행된 최대 스레드 수를 보고합니다. 여기에는 Lambda 함수의 프로세스, 확장 기능의 프로세스, 시스템/런타임별 프로세스 등이 포함됩니다. 이 경우 `threads_max` 지표가 더 포괄적이며 사용할 수 있는 남은 스레드를 평가할 수도 있습니다. 스레드 및 프로세스 할당량에 대한 자세한 내용은 [Lambda 할당량](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html)을 참조하세요.


| 리전 | ARN | 
| --- | --- | 
|  미국 동부(버지니아 북부) |  `arn:aws:lambda:us-east-1:580247275435:layer:LambdaInsightsExtension-Arm64:22`  | 
|  미국 동부(오하이오) |  `arn:aws:lambda:us-east-2:580247275435:layer:LambdaInsightsExtension-Arm64:24`  | 
|  미국 서부(캘리포니아 북부) |  `arn:aws:lambda:us-west-1:580247275435:layer:LambdaInsightsExtension-Arm64:20`  | 
|  미국 서부(오리건) |  `arn:aws:lambda:us-west-2:580247275435:layer:LambdaInsightsExtension-Arm64:22`  | 
|  아프리카(케이프타운) |  `arn:aws:lambda:af-south-1:012438385374:layer:LambdaInsightsExtension-Arm64:20`  | 
|  아시아 태평양(홍콩) |  `arn:aws:lambda:ap-east-1:519774774795:layer:LambdaInsightsExtension-Arm64:20`  | 
|  아시아 태평양(하이데라바드) |  `arn:aws:lambda:ap-south-2:891564319516:layer:LambdaInsightsExtension-Arm64:8`  | 
|  아시아 태평양(자카르타) |  `arn:aws:lambda:ap-southeast-3:439286490199:layer:LambdaInsightsExtension-Arm64:20`  | 
|  아시아 태평양(뭄바이) |  `arn:aws:lambda:ap-south-1:580247275435:layer:LambdaInsightsExtension-Arm64:24`  | 
|  아시아 태평양(오사카) |  `arn:aws:lambda:ap-northeast-3:194566237122:layer:LambdaInsightsExtension-Arm64:19`  | 
|  아시아 태평양(서울) |  `arn:aws:lambda:ap-northeast-2:580247275435:layer:LambdaInsightsExtension-Arm64:21`  | 
|  아시아 태평양(싱가포르) |  `arn:aws:lambda:ap-southeast-1:580247275435:layer:LambdaInsightsExtension-Arm64:22`  | 
|  아시아 태평양(시드니) |  `arn:aws:lambda:ap-southeast-2:580247275435:layer:LambdaInsightsExtension-Arm64:22`  | 
|  아시아 태평양(도쿄) |  `arn:aws:lambda:ap-northeast-1:580247275435:layer:LambdaInsightsExtension-Arm64:33`  | 
|  캐나다(중부) |  `arn:aws:lambda:ca-central-1:580247275435:layer:LambdaInsightsExtension-Arm64:20`  | 
|  유럽(프랑크푸르트) |  `arn:aws:lambda:eu-central-1:580247275435:layer:LambdaInsightsExtension-Arm64:22`  | 
|  유럽(아일랜드) |  `arn:aws:lambda:eu-west-1:580247275435:layer:LambdaInsightsExtension-Arm64:22`  | 
|  유럽(런던) |  `arn:aws:lambda:eu-west-2:580247275435:layer:LambdaInsightsExtension-Arm64:22`  | 
|  유럽(밀라노) |  `arn:aws:lambda:eu-south-1:339249233099:layer:LambdaInsightsExtension-Arm64:20`  | 
|  유럽(파리) |  `arn:aws:lambda:eu-west-3:580247275435:layer:LambdaInsightsExtension-Arm64:20`  | 
|  유럽(스페인) |  `arn:aws:lambda:eu-south-2:352183217350:layer:LambdaInsightsExtension-Arm64:8`  | 
|  유럽(스톡홀름) |  `arn:aws:lambda:eu-north-1:580247275435:layer:LambdaInsightsExtension-Arm64:20`  | 
|  중동(바레인) |  `arn:aws:lambda:me-south-1:285320876703:layer:LambdaInsightsExtension-Arm64:20`  | 
|  남아메리카(상파울루) |  `arn:aws:lambda:sa-east-1:580247275435:layer:LambdaInsightsExtension-Arm64:20`  | 
|  AWS GovCloud(미국 동부) |  `arn:aws-us-gov:lambda:us-gov-east-1:122132214140:layer:LambdaInsightsExtension-Arm64:5`  | 
|  AWS GovCloud(미국 서부) |  `arn:aws-us-gov:lambda:us-gov-west-1:751350123760:layer:LambdaInsightsExtension-Arm64:5`  | 

## 1.0.333.0
<a name="Lambda-Insights-extension-ARM-1.0.333.0"></a>

버전 1.0.333.0에는 버그 수정이 포함되어 있습니다.


| 리전 | ARN | 
| --- | --- | 
|  미국 동부(버지니아 북부) |  `arn:aws:lambda:us-east-1:580247275435:layer:LambdaInsightsExtension-Arm64:20`  | 
|  미국 동부(오하이오) |  `arn:aws:lambda:us-east-2:580247275435:layer:LambdaInsightsExtension-Arm64:22`  | 
|  미국 서부(캘리포니아 북부) |  `arn:aws:lambda:us-west-1:580247275435:layer:LambdaInsightsExtension-Arm64:18`  | 
|  미국 서부(오리건) |  `arn:aws:lambda:us-west-2:580247275435:layer:LambdaInsightsExtension-Arm64:20`  | 
|  아프리카(케이프타운) |  `arn:aws:lambda:af-south-1:012438385374:layer:LambdaInsightsExtension-Arm64:18`  | 
|  아시아 태평양(홍콩) |  `arn:aws:lambda:ap-east-1:519774774795:layer:LambdaInsightsExtension-Arm64:18`  | 
|  아시아 태평양(하이데라바드) |  `arn:aws:lambda:ap-south-2:891564319516:layer:LambdaInsightsExtension-Arm64:6`  | 
|  아시아 태평양(자카르타) |  `arn:aws:lambda:ap-southeast-3:439286490199:layer:LambdaInsightsExtension-Arm64:18`  | 
|  아시아 태평양(뭄바이) |  `arn:aws:lambda:ap-south-1:580247275435:layer:LambdaInsightsExtension-Arm64:22`  | 
|  아시아 태평양(오사카) |  `arn:aws:lambda:ap-northeast-3:194566237122:layer:LambdaInsightsExtension-Arm64:17`  | 
|  아시아 태평양(서울) |  `arn:aws:lambda:ap-northeast-2:580247275435:layer:LambdaInsightsExtension-Arm64:19`  | 
|  아시아 태평양(싱가포르) |  `arn:aws:lambda:ap-southeast-1:580247275435:layer:LambdaInsightsExtension-Arm64:20`  | 
|  아시아 태평양(시드니) |  `arn:aws:lambda:ap-southeast-2:580247275435:layer:LambdaInsightsExtension-Arm64:20`  | 
|  아시아 태평양(도쿄) |  `arn:aws:lambda:ap-northeast-1:580247275435:layer:LambdaInsightsExtension-Arm64:31`  | 
|  캐나다(중부) |  `arn:aws:lambda:ca-central-1:580247275435:layer:LambdaInsightsExtension-Arm64:18`  | 
|  유럽(프랑크푸르트) |  `arn:aws:lambda:eu-central-1:580247275435:layer:LambdaInsightsExtension-Arm64:20`  | 
|  유럽(아일랜드) |  `arn:aws:lambda:eu-west-1:580247275435:layer:LambdaInsightsExtension-Arm64:20`  | 
|  유럽(런던) |  `arn:aws:lambda:eu-west-2:580247275435:layer:LambdaInsightsExtension-Arm64:20`  | 
|  유럽(밀라노) |  `arn:aws:lambda:eu-south-1:339249233099:layer:LambdaInsightsExtension-Arm64:18`  | 
|  유럽(파리) |  `arn:aws:lambda:eu-west-3:580247275435:layer:LambdaInsightsExtension-Arm64:18`  | 
|  유럽(스페인) |  `arn:aws:lambda:eu-south-2:352183217350:layer:LambdaInsightsExtension-Arm64:6`  | 
|  유럽(스톡홀름) |  `arn:aws:lambda:eu-north-1:580247275435:layer:LambdaInsightsExtension-Arm64:18`  | 
|  중동(바레인) |  `arn:aws:lambda:me-south-1:285320876703:layer:LambdaInsightsExtension-Arm64:18`  | 
|  남아메리카(상파울루) |  `arn:aws:lambda:sa-east-1:580247275435:layer:LambdaInsightsExtension-Arm64:18`  | 
|  AWS GovCloud(미국 동부) |  `arn:aws-us-gov:lambda:us-gov-east-1:122132214140:layer:LambdaInsightsExtension-Arm64:3`  | 
|  AWS GovCloud(미국 서부) |  `arn:aws-us-gov:lambda:us-gov-west-1:751350123760:layer:LambdaInsightsExtension-Arm64:3`  | 

## 1.0.317.0
<a name="Lambda-Insights-extension-ARM-1.0.317.0"></a>

버전 1.0.317.0에는 Amazon Linux 1 플랫폼에 대한 지원 제거 및 버그 수정이 포함되어 있습니다. 또한 AWS GovCloud (US) 리전에 대한 지원도 포함됩니다.


| 리전 | ARN | 
| --- | --- | 
|  미국 동부(버지니아 북부) |  `arn:aws:lambda:us-east-1:580247275435:layer:LambdaInsightsExtension-Arm64:19`  | 
|  미국 동부(오하이오) |  `arn:aws:lambda:us-east-2:580247275435:layer:LambdaInsightsExtension-Arm64:21`  | 
|  미국 서부(캘리포니아 북부) |  `arn:aws:lambda:us-west-1:580247275435:layer:LambdaInsightsExtension-Arm64:17`  | 
|  미국 서부(오리건) |  `arn:aws:lambda:us-west-2:580247275435:layer:LambdaInsightsExtension-Arm64:19`  | 
|  아프리카(케이프타운) |  `arn:aws:lambda:af-south-1:012438385374:layer:LambdaInsightsExtension-Arm64:17`  | 
|  아시아 태평양(홍콩) |  `arn:aws:lambda:ap-east-1:519774774795:layer:LambdaInsightsExtension-Arm64:17`  | 
|  아시아 태평양(하이데라바드) |  `arn:aws:lambda:ap-south-2:891564319516:layer:LambdaInsightsExtension-Arm64:5`  | 
|  아시아 태평양(자카르타) |  `arn:aws:lambda:ap-southeast-3:439286490199:layer:LambdaInsightsExtension-Arm64:17`  | 
|  아시아 태평양(뭄바이) |  `arn:aws:lambda:ap-south-1:580247275435:layer:LambdaInsightsExtension-Arm64:21`  | 
|  아시아 태평양(오사카) |  `arn:aws:lambda:ap-northeast-3:194566237122:layer:LambdaInsightsExtension-Arm64:16`  | 
|  아시아 태평양(서울) |  `arn:aws:lambda:ap-northeast-2:580247275435:layer:LambdaInsightsExtension-Arm64:18`  | 
|  아시아 태평양(싱가포르) |  `arn:aws:lambda:ap-southeast-1:580247275435:layer:LambdaInsightsExtension-Arm64:19`  | 
|  아시아 태평양(시드니) |  `arn:aws:lambda:ap-southeast-2:580247275435:layer:LambdaInsightsExtension-Arm64:19`  | 
|  아시아 태평양(도쿄) |  `arn:aws:lambda:ap-northeast-1:580247275435:layer:LambdaInsightsExtension-Arm64:30`  | 
|  캐나다(중부) |  `arn:aws:lambda:ca-central-1:580247275435:layer:LambdaInsightsExtension-Arm64:17`  | 
|  유럽(프랑크푸르트) |  `arn:aws:lambda:eu-central-1:580247275435:layer:LambdaInsightsExtension-Arm64:19`  | 
|  유럽(아일랜드) |  `arn:aws:lambda:eu-west-1:580247275435:layer:LambdaInsightsExtension-Arm64:19`  | 
|  유럽(런던) |  `arn:aws:lambda:eu-west-2:580247275435:layer:LambdaInsightsExtension-Arm64:19`  | 
|  유럽(밀라노) |  `arn:aws:lambda:eu-south-1:339249233099:layer:LambdaInsightsExtension-Arm64:17`  | 
|  유럽(파리) |  `arn:aws:lambda:eu-west-3:580247275435:layer:LambdaInsightsExtension-Arm64:17`  | 
|  유럽(스페인) |  `arn:aws:lambda:eu-south-2:352183217350:layer:LambdaInsightsExtension-Arm64:5`  | 
|  유럽(스톡홀름) |  `arn:aws:lambda:eu-north-1:580247275435:layer:LambdaInsightsExtension-Arm64:17`  | 
|  중동(바레인) |  `arn:aws:lambda:me-south-1:285320876703:layer:LambdaInsightsExtension-Arm64:17`  | 
|  남아메리카(상파울루) |  `arn:aws:lambda:sa-east-1:580247275435:layer:LambdaInsightsExtension-Arm64:17`  | 
|  AWS GovCloud(미국 동부) |  `arn:aws-us-gov:lambda:us-gov-east-1:122132214140:layer:LambdaInsightsExtension-Arm64:1`  | 
|  AWS GovCloud(미국 서부) |  `arn:aws-us-gov:lambda:us-gov-west-1:751350123760:layer:LambdaInsightsExtension-Arm64:1`  | 

## 1.0.295.0
<a name="Lambda-Insights-extension-ARM-1.0.295.0"></a>

버전 1.0.295.0에는 호환되는 모든 런타임에 대한 종속성 업데이트가 포함되어 있습니다.


| 리전 | ARN | 
| --- | --- | 
|  미국 동부(버지니아 북부) |  `arn:aws:lambda:us-east-1:580247275435:layer:LambdaInsightsExtension-Arm64:18`  | 
|  미국 동부(오하이오) |  `arn:aws:lambda:us-east-2:580247275435:layer:LambdaInsightsExtension-Arm64:20`  | 
|  미국 서부(캘리포니아 북부) |  `arn:aws:lambda:us-west-1:580247275435:layer:LambdaInsightsExtension-Arm64:16`  | 
|  미국 서부(오리건) |  `arn:aws:lambda:us-west-2:580247275435:layer:LambdaInsightsExtension-Arm64:18`  | 
|  아프리카(케이프타운) |  `arn:aws:lambda:af-south-1:012438385374:layer:LambdaInsightsExtension-Arm64:16`  | 
|  아시아 태평양(홍콩) |  `arn:aws:lambda:ap-east-1:519774774795:layer:LambdaInsightsExtension-Arm64:16`  | 
|  아시아 태평양(하이데라바드) |  `arn:aws:lambda:ap-south-2:891564319516:layer:LambdaInsightsExtension-Arm64:4`  | 
|  아시아 태평양(자카르타) |  `arn:aws:lambda:ap-southeast-3:439286490199:layer:LambdaInsightsExtension-Arm64:16`  | 
|  아시아 태평양(뭄바이) |  `arn:aws:lambda:ap-south-1:580247275435:layer:LambdaInsightsExtension-Arm64:20`  | 
|  아시아 태평양(오사카) |  `arn:aws:lambda:ap-northeast-3:194566237122:layer:LambdaInsightsExtension-Arm64:15`  | 
|  아시아 태평양(서울) |  `arn:aws:lambda:ap-northeast-2:580247275435:layer:LambdaInsightsExtension-Arm64:17`  | 
|  아시아 태평양(싱가포르) |  `arn:aws:lambda:ap-southeast-1:580247275435:layer:LambdaInsightsExtension-Arm64:18`  | 
|  아시아 태평양(시드니) |  `arn:aws:lambda:ap-southeast-2:580247275435:layer:LambdaInsightsExtension-Arm64:18`  | 
|  아시아 태평양(도쿄) |  `arn:aws:lambda:ap-northeast-1:580247275435:layer:LambdaInsightsExtension-Arm64:29`  | 
|  캐나다(중부) |  `arn:aws:lambda:ca-central-1:580247275435:layer:LambdaInsightsExtension-Arm64:16`  | 
|  유럽(프랑크푸르트) |  `arn:aws:lambda:eu-central-1:580247275435:layer:LambdaInsightsExtension-Arm64:18`  | 
|  유럽(아일랜드) |  `arn:aws:lambda:eu-west-1:580247275435:layer:LambdaInsightsExtension-Arm64:18`  | 
|  유럽(런던) |  `arn:aws:lambda:eu-west-2:580247275435:layer:LambdaInsightsExtension-Arm64:18`  | 
|  유럽(밀라노) |  `arn:aws:lambda:eu-south-1:339249233099:layer:LambdaInsightsExtension-Arm64:16`  | 
|  유럽(파리) |  `arn:aws:lambda:eu-west-3:580247275435:layer:LambdaInsightsExtension-Arm64:16`  | 
|  유럽(스페인) |  `arn:aws:lambda:eu-south-2:352183217350:layer:LambdaInsightsExtension-Arm64:4`  | 
|  유럽(스톡홀름) |  `arn:aws:lambda:eu-north-1:580247275435:layer:LambdaInsightsExtension-Arm64:16`  | 
|  중동(바레인) |  `arn:aws:lambda:me-south-1:285320876703:layer:LambdaInsightsExtension-Arm64:16`  | 
|  남아메리카(상파울루) |  `arn:aws:lambda:sa-east-1:580247275435:layer:LambdaInsightsExtension-Arm64:16`  | 

## 1.0.275.0
<a name="Lambda-Insights-extension-ARM-1.0.275.0"></a>

버전 1.0.275.0에는 호환되는 모든 런타임에 대한 버그 수정과 유럽(스페인) 및 아시아 태평양(하이데라바드) 리전에 대한 지원이 포함되어 있습니다.


| 리전 | ARN | 
| --- | --- | 
|  미국 동부(버지니아 북부) |  `arn:aws:lambda:us-east-1:580247275435:layer:LambdaInsightsExtension-Arm64:16`  | 
|  미국 동부(오하이오) |  `arn:aws:lambda:us-east-2:580247275435:layer:LambdaInsightsExtension-Arm64:18`  | 
|  미국 서부(캘리포니아 북부) |  `arn:aws:lambda:us-west-1:580247275435:layer:LambdaInsightsExtension-Arm64:14`  | 
|  미국 서부(오리건) |  `arn:aws:lambda:us-west-2:580247275435:layer:LambdaInsightsExtension-Arm64:16`  | 
|  아프리카(케이프타운) |  `arn:aws:lambda:af-south-1:012438385374:layer:LambdaInsightsExtension-Arm64:14`  | 
|  아시아 태평양(홍콩) |  `arn:aws:lambda:ap-east-1:519774774795:layer:LambdaInsightsExtension-Arm64:14`  | 
|  아시아 태평양(하이데라바드) |  `arn:aws:lambda:ap-south-2:891564319516:layer:LambdaInsightsExtension-Arm64:2`  | 
|  아시아 태평양(자카르타) |  `arn:aws:lambda:ap-southeast-3:439286490199:layer:LambdaInsightsExtension-Arm64:14`  | 
|  아시아 태평양(뭄바이) |  `arn:aws:lambda:ap-south-1:580247275435:layer:LambdaInsightsExtension-Arm64:18`  | 
|  아시아 태평양(오사카) |  `arn:aws:lambda:ap-northeast-3:194566237122:layer:LambdaInsightsExtension-Arm64:13`  | 
|  아시아 태평양(서울) |  `arn:aws:lambda:ap-northeast-2:580247275435:layer:LambdaInsightsExtension-Arm64:15`  | 
|  아시아 태평양(싱가포르) |  `arn:aws:lambda:ap-southeast-1:580247275435:layer:LambdaInsightsExtension-Arm64:16`  | 
|  아시아 태평양(시드니) |  `arn:aws:lambda:ap-southeast-2:580247275435:layer:LambdaInsightsExtension-Arm64:16`  | 
|  아시아 태평양(도쿄) |  `arn:aws:lambda:ap-northeast-1:580247275435:layer:LambdaInsightsExtension-Arm64:27`  | 
|  캐나다(중부) |  `arn:aws:lambda:ca-central-1:580247275435:layer:LambdaInsightsExtension-Arm64:14`  | 
|  유럽(프랑크푸르트) |  `arn:aws:lambda:eu-central-1:580247275435:layer:LambdaInsightsExtension-Arm64:16`  | 
|  유럽(아일랜드) |  `arn:aws:lambda:eu-west-1:580247275435:layer:LambdaInsightsExtension-Arm64:16`  | 
|  유럽(런던) |  `arn:aws:lambda:eu-west-2:580247275435:layer:LambdaInsightsExtension-Arm64:16`  | 
|  유럽(밀라노) |  `arn:aws:lambda:eu-south-1:339249233099:layer:LambdaInsightsExtension-Arm64:14`  | 
|  유럽(파리) |  `arn:aws:lambda:eu-west-3:580247275435:layer:LambdaInsightsExtension-Arm64:14`  | 
|  유럽(스페인) |  `arn:aws:lambda:eu-south-2:352183217350:layer:LambdaInsightsExtension-Arm64:2`  | 
|  유럽(스톡홀름) |  `arn:aws:lambda:eu-north-1:580247275435:layer:LambdaInsightsExtension-Arm64:14`  | 
|  중동(바레인) |  `arn:aws:lambda:me-south-1:285320876703:layer:LambdaInsightsExtension-Arm64:14`  | 
|  남아메리카(상파울루) |  `arn:aws:lambda:sa-east-1:580247275435:layer:LambdaInsightsExtension-Arm64:14`  | 

## 1.0.273.0
<a name="Lambda-Insights-extension-ARM-1.0.273.0"></a>

버전 1.0.273.0에는 호환되는 모든 런타임에 대한 버그 수정이 포함되어 있습니다.


| 리전 | ARN | 
| --- | --- | 
|  미국 동부(버지니아 북부) |  `arn:aws:lambda:us-east-1:580247275435:layer:LambdaInsightsExtension-Arm64:12`  | 
|  미국 동부(오하이오) |  `arn:aws:lambda:us-east-2:580247275435:layer:LambdaInsightsExtension-Arm64:14`  | 
|  미국 서부(캘리포니아 북부) |  `arn:aws:lambda:us-west-1:580247275435:layer:LambdaInsightsExtension-Arm64:9`  | 
|  미국 서부(오리건) |  `arn:aws:lambda:us-west-2:580247275435:layer:LambdaInsightsExtension-Arm64:12`  | 
|  아프리카(케이프타운) |  `arn:aws:lambda:af-south-1:012438385374:layer:LambdaInsightsExtension-Arm64:9`  | 
|  아시아 태평양(홍콩) |  `arn:aws:lambda:ap-east-1:519774774795:layer:LambdaInsightsExtension-Arm64:9`  | 
|  아시아 태평양(자카르타) |  `arn:aws:lambda:ap-southeast-3:439286490199:layer:LambdaInsightsExtension-Arm64:9`  | 
|  아시아 태평양(뭄바이) |  `arn:aws:lambda:ap-south-1:580247275435:layer:LambdaInsightsExtension-Arm64:14`  | 
|  아시아 태평양(오사카) |  `arn:aws:lambda:ap-northeast-3:194566237122:layer:LambdaInsightsExtension-Arm64:9`  | 
|  아시아 태평양(서울) |  `arn:aws:lambda:ap-northeast-2:580247275435:layer:LambdaInsightsExtension-Arm64:11`  | 
|  아시아 태평양(싱가포르) |  `arn:aws:lambda:ap-southeast-1:580247275435:layer:LambdaInsightsExtension-Arm64:12`  | 
|  아시아 태평양(시드니) |  `arn:aws:lambda:ap-southeast-2:580247275435:layer:LambdaInsightsExtension-Arm64:12`  | 
|  아시아 태평양(도쿄) |  `arn:aws:lambda:ap-northeast-1:580247275435:layer:LambdaInsightsExtension-Arm64:23`  | 
|  캐나다(중부) |  `arn:aws:lambda:ca-central-1:580247275435:layer:LambdaInsightsExtension-Arm64:10`  | 
|  유럽(프랑크푸르트) |  `arn:aws:lambda:eu-central-1:580247275435:layer:LambdaInsightsExtension-Arm64:12`  | 
|  유럽(아일랜드) |  `arn:aws:lambda:eu-west-1:580247275435:layer:LambdaInsightsExtension-Arm64:12`  | 
|  유럽(런던) |  `arn:aws:lambda:eu-west-2:580247275435:layer:LambdaInsightsExtension-Arm64:12`  | 
|  유럽(밀라노) |  `arn:aws:lambda:eu-south-1:339249233099:layer:LambdaInsightsExtension-Arm64:9`  | 
|  유럽(파리) |  `arn:aws:lambda:eu-west-3:580247275435:layer:LambdaInsightsExtension-Arm64:10`  | 
|  유럽(스톡홀름) |  `arn:aws:lambda:eu-north-1:580247275435:layer:LambdaInsightsExtension-Arm64:10`  | 
|  중동(바레인) |  `arn:aws:lambda:me-south-1:285320876703:layer:LambdaInsightsExtension-Arm64:9`  | 
|  남아메리카(상파울루) |  `arn:aws:lambda:sa-east-1:580247275435:layer:LambdaInsightsExtension-Arm64:10`  | 

## 1.0.229.0
<a name="Lambda-Insights-extension-ARM-1.0.229.0"></a>

버전 1.0.229.0에는 호환되는 모든 런타임에 대한 버그 수정이 포함되어 있습니다. 또한 다음 리전에 대한 지원도 추가합니다.
+ 미국 서부(캘리포니아 북부)
+ 아프리카(케이프타운)
+ 아시아 태평양(홍콩)
+ 아시아 태평양(자카르타)
+ 아시아 태평양(오사카)
+ 아시아 태평양(서울)
+ 캐나다(중부)
+ 유럽(밀라노)
+ 유럽(파리)
+ 유럽(스톡홀름)
+ 중동(바레인)
+ 남아메리카(상파울루)


| 리전 | ARN | 
| --- | --- | 
|  미국 동부(버지니아 북부) |  `arn:aws:lambda:us-east-1:580247275435:layer:LambdaInsightsExtension-Arm64:5`  | 
|  미국 동부(오하이오) |  `arn:aws:lambda:us-east-2:580247275435:layer:LambdaInsightsExtension-Arm64:7`  | 
|  미국 서부(캘리포니아 북부) |  `arn:aws:lambda:us-west-1:580247275435:layer:LambdaInsightsExtension-Arm64:3`  | 
|  미국 서부(오리건) |  `arn:aws:lambda:us-west-2:580247275435:layer:LambdaInsightsExtension-Arm64:5`  | 
|  아프리카(케이프타운) |  `arn:aws:lambda:af-south-1:012438385374:layer:LambdaInsightsExtension-Arm64:2`  | 
|  아시아 태평양(홍콩) |  `arn:aws:lambda:ap-east-1:519774774795:layer:LambdaInsightsExtension-Arm64:2`  | 
|  아시아 태평양(자카르타) |  `arn:aws:lambda:ap-southeast-3:439286490199:layer:LambdaInsightsExtension-Arm64:2`  | 
|  아시아 태평양(뭄바이) |  `arn:aws:lambda:ap-south-1:580247275435:layer:LambdaInsightsExtension-Arm64:7`  | 
|  아시아 태평양(오사카) |  `arn:aws:lambda:ap-northeast-3:194566237122:layer:LambdaInsightsExtension-Arm64:2`  | 
|  아시아 태평양(서울) |  `arn:aws:lambda:ap-northeast-2:580247275435:layer:LambdaInsightsExtension-Arm64:4`  | 
|  아시아 태평양(싱가포르) |  `arn:aws:lambda:ap-southeast-1:580247275435:layer:LambdaInsightsExtension-Arm64:5`  | 
|  아시아 태평양(시드니) |  `arn:aws:lambda:ap-southeast-2:580247275435:layer:LambdaInsightsExtension-Arm64:5`  | 
|  아시아 태평양(도쿄) |  `arn:aws:lambda:ap-northeast-1:580247275435:layer:LambdaInsightsExtension-Arm64:11`  | 
|  캐나다(중부) |  `arn:aws:lambda:ca-central-1:580247275435:layer:LambdaInsightsExtension-Arm64:3`  | 
|  유럽(프랑크푸르트) |  `arn:aws:lambda:eu-central-1:580247275435:layer:LambdaInsightsExtension-Arm64:5`  | 
|  유럽(아일랜드) |  `arn:aws:lambda:eu-west-1:580247275435:layer:LambdaInsightsExtension-Arm64:5`  | 
|  유럽(런던) |  `arn:aws:lambda:eu-west-2:580247275435:layer:LambdaInsightsExtension-Arm64:5`  | 
|  유럽(스페인) |  `arn:aws:lambda:eu-south-1:339249233099:layer:LambdaInsightsExtension-Arm64:2`  | 
|  유럽(파리) |  `arn:aws:lambda:eu-west-3:580247275435:layer:LambdaInsightsExtension-Arm64:3`  | 
|  유럽(스톡홀름) |  `arn:aws:lambda:eu-north-1:580247275435:layer:LambdaInsightsExtension-Arm64:3`  | 
|  중동(바레인) |  `arn:aws:lambda:me-south-1:285320876703:layer:LambdaInsightsExtension-Arm64:2`  | 
|  남아메리카(상파울루) |  `arn:aws:lambda:sa-east-1:580247275435:layer:LambdaInsightsExtension-Arm64:3`  | 

## 1.0.135.0
<a name="Lambda-Insights-extension-ARM-1.0.135.0"></a>

버전 1.0.135.0에는 Lambda Insights가 디스크 및 파일 설명자 사용량을 수집하고 보고하는 방법에 대한 버그 수정이 포함되어 있습니다. 이전 익스텐션 버전에서는 함수가 실행되는 동안 `tmp_free` 지표가 `/tmp` 디텍터리에서 사용 가능한 최대 공간을 보고했습니다. 이 버전은 지표를 변경하여 최솟값을 보고하므로 디스크 사용량을 평가할 때 더 유용합니다. `tmp` 디렉터리 스토리지 할당량에 대한 자세한 내용은 [Lambda 할당량](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) 섹션을 참조하세요.

이제 버전 1.0.135.0에서도 운영 체제 수준을 보고하지 않고 프로세스 전반의 최댓값으로 파일 설명자 사용량을 보고합니다(`fd_use`과 `fd_max`).


| 리전 | ARN | 
| --- | --- | 
|  미국 동부(버지니아 북부) |  `arn:aws:lambda:us-east-1:580247275435:layer:LambdaInsightsExtension-Arm64:2`  | 
|  미국 동부(오하이오) |  `arn:aws:lambda:us-east-2:580247275435:layer:LambdaInsightsExtension-Arm64:2`  | 
|  미국 서부(오리건) |  `arn:aws:lambda:us-west-2:580247275435:layer:LambdaInsightsExtension-Arm64:2`  | 
|  아시아 태평양(뭄바이) |  `arn:aws:lambda:ap-south-1:580247275435:layer:LambdaInsightsExtension-Arm64:2`  | 
|  아시아 태평양(싱가포르) |  `arn:aws:lambda:ap-southeast-1:580247275435:layer:LambdaInsightsExtension-Arm64:2`  | 
|  아시아 태평양(시드니) |  `arn:aws:lambda:ap-southeast-2:580247275435:layer:LambdaInsightsExtension-Arm64:2`  | 
|  아시아 태평양(도쿄) |  `arn:aws:lambda:ap-northeast-1:580247275435:layer:LambdaInsightsExtension-Arm64:2`  | 
|  유럽(프랑크푸르트) |  `arn:aws:lambda:eu-central-1:580247275435:layer:LambdaInsightsExtension-Arm64:2`  | 
|  유럽(아일랜드) |  `arn:aws:lambda:eu-west-1:580247275435:layer:LambdaInsightsExtension-Arm64:2`  | 
|  유럽(런던) |  `arn:aws:lambda:eu-west-2:580247275435:layer:LambdaInsightsExtension-Arm64:2`  | 

## 1.0.119.0
<a name="Lambda-Insights-extension-ARM-1.0.119.0"></a>


| 리전 | ARN | 
| --- | --- | 
|  미국 동부(버지니아 북부) |  `arn:aws:lambda:us-east-1:580247275435:layer:LambdaInsightsExtension-Arm64:1`  | 
|  미국 동부(오하이오) |  `arn:aws:lambda:us-east-2:580247275435:layer:LambdaInsightsExtension-Arm64:1`  | 
|  미국 서부(오리건) |  `arn:aws:lambda:us-west-2:580247275435:layer:LambdaInsightsExtension-Arm64:1`  | 
|  아시아 태평양(뭄바이) |  `arn:aws:lambda:ap-south-1:580247275435:layer:LambdaInsightsExtension-Arm64:1`  | 
|  아시아 태평양(싱가포르) |  `arn:aws:lambda:ap-southeast-1:580247275435:layer:LambdaInsightsExtension-Arm64:1`  | 
|  아시아 태평양(시드니) |  `arn:aws:lambda:ap-southeast-2:580247275435:layer:LambdaInsightsExtension-Arm64:1`  | 
|  아시아 태평양(도쿄) |  `arn:aws:lambda:ap-northeast-1:580247275435:layer:LambdaInsightsExtension-Arm64:1`  | 
|  유럽(프랑크푸르트) |  `arn:aws:lambda:eu-central-1:580247275435:layer:LambdaInsightsExtension-Arm64:1`  | 
|  유럽(아일랜드) |  `arn:aws:lambda:eu-west-1:580247275435:layer:LambdaInsightsExtension-Arm64:1`  | 
|  유럽(런던) |  `arn:aws:lambda:eu-west-2:580247275435:layer:LambdaInsightsExtension-Arm64:1`  | 

# 콘솔을 사용하여 기존 Lambda 함수에서 Lambda Insights 사용 설정
<a name="Lambda-Insights-Getting-Started-console"></a>

 Lambda 콘솔의 다음 단계를 사용하여 기존 Lambda 함수에서 Lambda Insights를 사용 설정할 수 있습니다.

**Lambda 함수에서 Lambda Insights를 사용 설정하려면**

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

1.  함수 이름을 선택하고 다음 화면에서 **구성(Configuration)**을 선택합니다.

1.  **구성** 탭의 왼쪽 탐색 메뉴에서 **모니터링 및 운영 도구**, **편집**을 차례로 선택합니다.

    모니터링 도구를 편집할 수 있는 화면으로 이동합니다.

1. **Lambda Insights 향상된 모니터링**에서 **편집**을 선택합니다.

1. **CloudWatch Lambda Insights**에서 **향상된 모니터링**을 선택한 다음 **저장**을 선택합니다.

# AWS CLI를 사용하여 기존 Lambda 함수에서 Lambda Insights 활성화
<a name="Lambda-Insights-Getting-Started-cli"></a>

다음 단계에 따라 AWS CLI를 사용하여 기존 Lambda 함수에서 Lambda Insights를 사용 설정할 수 있습니다.

**1단계: 함수 권한 업데이트**

**함수의 권한을 업데이트하려면**
+ 다음 명령을 입력하여 [**CloudWatchLambdaInsightsExecutionRolePolicy**] 관리형 IAM 정책을 함수의 실행 역할에 연결합니다.

  ```
  aws iam attach-role-policy \
  --role-name function-execution-role \
  --policy-arn "arn:aws:iam::aws:policy/CloudWatchLambdaInsightsExecutionRolePolicy"
  ```

**2단계: Lambda 익스텐션 설치**

다음 명령을 입력하여 Lambda 익스텐션을 설치합니다. `layers` 파라미터의 ARN 값을 사용하려는 리전 및 익스텐션 버전과 일치하는 ARN으로 바꿉니다. 자세한 내용은 [사용 가능한 Lambda Insights 익스텐션 버전](Lambda-Insights-extension-versions.md) 단원을 참조하세요.

```
aws lambda update-function-configuration \
   --function-name function-name \
   --layers "arn:aws:lambda:us-west-1:580247275435:layer:LambdaInsightsExtension:14"
```

**3단계: CloudWatch Logs VPC 엔드포인트 사용 설정**

이 단계는 CloudWatch Logs Virtual Private Cloud(VPC) 엔드포인트를 아직 구성하지 않은 경우에 그리고 인터넷에 액세스할 수 없는 프라이빗 서브넷에서 실행되는 함수에만 필요합니다.

이 단계를 수행해야 하는 경우 다음 명령을 입력합니다. 이때 자리 표시자를 VPC에 대한 정보로 바꿉니다.

자세한 내용은 [인터페이스 VPC 엔드포인트와 함께 CloudWatch Logs 사용](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/cloudwatch-logs-and-interface-VPC.html) 단원을 참조하세요.

```
aws ec2 create-vpc-endpoint \
--vpc-id vpcId \
--vpc-endpoint-type Interface \
--service-name com.amazonaws.region.logs \
--subnet-id subnetId 
--security-group-id securitygroupId
```

# AWS SAM CLI를 사용하여 기존 Lambda 함수에서 Lambda Insights 활성화
<a name="Lambda-Insights-Getting-Started-SAM-CLI"></a>

다음 단계에 따라 AWS SAM AWS CLI를 사용하여 기존 Lambda 함수에서 Lambda Insights를 사용 설정할 수 있습니다.

최신 버전의 AWS SAM CLI를 아직 설치하지 않은 경우 먼저, 설치하거나 업그레이드해야 합니다. 자세한 내용은 [AWS SAM CLI 설치](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html) 단원을 참조하세요.

**1단계: 계층 설치**

Lambda Insights 익스텐션을 모든 Lambda 함수에서 사용할 수 있도록 하려면 Lambda Insights 계층의 ARN을 사용하여 SAM 템플릿의 `Globals` 섹션에 `Layers` 속성을 추가합니다. 아래 예에서는 초기 Lambda Insights 릴리스의 계층을 사용합니다. 최신 릴리스 버전의 Lambda Insights 익스텐션 계층은 [사용 가능한 Lambda Insights 익스텐션 버전](Lambda-Insights-extension-versions.md) 단원을 참조하세요.

```
Globals:
  Function:
    Layers:
      - !Sub "arn:aws:lambda:${AWS::Region}:580247275435:layer:LambdaInsightsExtension:14"
```

단일 함수에 대해서만 이 계층을 사용하려면 이 예와 같이 함수에 `Layers` 속성을 추가합니다.

```
Resources:
  MyFunction:
    Type: AWS::Serverless::Function
    Properties:
      Layers:
        - !Sub "arn:aws:lambda:${AWS::Region}:580247275435:layer:LambdaInsightsExtension:14"
```

**2단계: 관리형 정책 추가**

각 함수에 대해 [**CloudWatchLambdaInsightsExecutionRolePolicy**] IAM 정책을 추가합니다.

AWS SAM은 글로벌 정책을 지원하지 않으므로 이 예와 같이 각 함수에서 개별적으로 정책을 사용 설정해야 합니다. 글로벌에 대한 자세한 내용은 [Globals 섹션](https://github.com/aws/serverless-application-model/blob/master/docs/globals.rst)을 참조하세요.

```
Resources:
  MyFunction:
    Type: AWS::Serverless::Function
    Properties:
      Policies:
        - CloudWatchLambdaInsightsExecutionRolePolicy
```

**로컬에서 호출**

AWS SAM CLI는 Lambda 익스텐션을 지원합니다. 그러나 로컬에서 실행되는 모든 호출은 런타임 환경을 재설정합니다. 런타임이 종료 이벤트 없이 다시 시작되기 때문에 로컬 호출에서 Lambda Insights 데이터를 사용할 수 없습니다. 자세한 내용은 [릴리스 1.6.0 - AWS Lambda 익스텐션의 로컬 테스트를 위한 지원 추가](https://github.com/aws/aws-sam-cli/releases/tag/v1.6.0)를 참조하세요.

**문제 해결**

Lambda Insights 설치 문제를 해결하려면 Lambda 함수에 다음 환경 변수를 추가하여 디버그 로깅을 사용 설정합니다.

```
Resources:
  MyFunction:
    Type: AWS::Serverless::Function
    Properties:
      Environment:
        Variables:
          LAMBDA_INSIGHTS_LOG_LEVEL: info
```

# CloudFormation을 사용하여 기존 Lambda 함수에서 Lambda Insights 활성화
<a name="Lambda-Insights-Getting-Started-cloudformation"></a>

다음 단계에 따라 CloudFormation을 사용하여 기존 Lambda 함수에서 Lambda Insights를 사용 설정할 수 있습니다.

**1단계: 계층 설치**

Lambda Insights 계층 ARN 내의 `Layers` 속성에 Lambda Insights 계층을 추가합니다. 아래 예에서는 초기 Lambda Insights 릴리스의 계층을 사용합니다. 최신 릴리스 버전의 Lambda Insights 익스텐션 계층은 [사용 가능한 Lambda Insights 익스텐션 버전](Lambda-Insights-extension-versions.md) 단원을 참조하세요.

```
Resources:
  MyFunction:
    Type: AWS::Lambda::Function
    Properties:
      Layers:
        - !Sub "arn:aws:lambda:${AWS::Region}:580247275435:layer:LambdaInsightsExtension:14"
```

**2단계: 관리형 정책 추가**

[**CloudWatchLambdaInsightsExecutionRolePolicy**] IAM 정책을 함수 실행 역할에 추가합니다.

```
Resources:
  MyFunctionExecutionRole:
    Type: 'AWS::IAM::Role'
    Properties:
      ManagedPolicyArns:
        - 'arn:aws:iam::aws:policy/CloudWatchLambdaInsightsExecutionRolePolicy'
```

**3단계: (선택 사항) VPC 엔드포인트 추가**

이 단계는 CloudWatch Logs Virtual Private Cloud(VPC) 엔드포인트를 아직 구성하지 않은 경우에 그리고 인터넷에 액세스할 수 없는 프라이빗 서브넷에서 실행되는 함수에만 필요합니다. 자세한 내용은 [인터페이스 VPC 엔드포인트와 함께 CloudWatch Logs 사용](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/cloudwatch-logs-and-interface-VPC.html) 단원을 참조하세요.

```
Resources:
  CloudWatchLogsVpcPrivateEndpoint:
    Type: AWS::EC2::VPCEndpoint
    Properties:
      PrivateDnsEnabled: 'true'
      VpcEndpointType: Interface
      VpcId: !Ref: VPC
      ServiceName: !Sub com.amazonaws.${AWS::Region}.logs
      SecurityGroupIds:
        - !Ref InterfaceVpcEndpointSecurityGroup
      SubnetIds:
        - !Ref PublicSubnet01
        - !Ref PublicSubnet02
        - !Ref PublicSubnet03
```

# AWS CDK를 사용하여 기존 Lambda 함수에서 Lambda Insights 활성화
<a name="Lambda-Insights-Getting-Started-clouddevelopmentkit"></a>

다음 단계에 따라 AWS CDK를 사용하여 기존 Lambda 함수에서 Lambda Insights를 사용 설정할 수 있습니다. 다음 단계를 수행하려면 이미 AWS CDK를 사용하여 리소스를 관리하고 있어야 합니다.

이 단원의 명령은 TypeScript에 있습니다.

먼저, 함수 권한을 업데이트합니다.

```
executionRole.addManagedPolicy(
 ManagedPolicy.fromAwsManagedPolicyName('CloudWatchLambdaInsightsExecutionRolePolicy')
);
```

다음으로, Lambda 함수에 익스텐션을 설치합니다. `layerArn` 파라미터의 ARN 값을 사용하려는 리전 및 익스텐션 버전과 일치하는 ARN으로 바꿉니다. 자세한 내용은 [사용 가능한 Lambda Insights 익스텐션 버전](Lambda-Insights-extension-versions.md) 단원을 참조하세요.

```
import lambda = require('@aws-cdk/aws-lambda');
const layerArn = 'arn:aws:lambda:us-west-1:580247275435:layer:LambdaInsightsExtension:14';
const layer = lambda.LayerVersion.fromLayerVersionArn(this, 'LayerFromArn', layerArn);
```

필요한 경우 CloudWatch Logs의 Virtual Private Cloud(VPC) 엔드포인트를 사용 설정합니다. 이 단계는 CloudWatch Logs VPC 엔드포인트를 아직 구성하지 않은 경우에 그리고 인터넷에 액세스할 수 없는 프라이빗 서브넷에서 실행되는 함수에만 필요합니다.

```
const cloudWatchLogsEndpoint = vpc.addInterfaceEndpoint('cwl-gateway', {
  service: InterfaceVpcEndpointAwsService.CLOUDWATCH_LOGS,
});

cloudWatchLogsEndpoint.connections.allowDefaultPortFromAnyIpv4();
```

# Serverless Framework를 사용하여 기존 Lambda 함수에서 Lambda Insights 활성화
<a name="Lambda-Insights-Getting-Started-serverless"></a>

다음 단계에 따라 서버리스 프레임워크를 사용하여 기존 Lambda 함수에서 Lambda Insights를 사용 설정할 수 있습니다. 서버리스 프레임워크에 대한 자세한 내용은 [serverless.com](https://www.serverless.com/)을 참조하세요.

이 작업은 서버리스용 Lambda Insights 플러그 인을 통해 수행됩니다. 자세한 내용은 [serverless-plugin-lambda-insights](https://www.npmjs.com/package/serverless-plugin-lambda-insights)를 참조하세요.

최신 버전의 서버리스 명령줄 인터페이스를 아직 설치하지 않은 경우 먼저, 설치하거나 업그레이드해야 합니다. 자세한 내용은 [서버리스 프레임워크 오픈 소스 및 AWS 시작하기](https://www.serverless.com/framework/docs/getting-started/)를 참조하세요.

**서버리스 프레임워크를 사용하여 Lambda 함수에서 Lambda Insights를 사용 설정하려면**

1. Serverless 디렉터리에서 다음 명령을 실행하여 Lambda Insights용 서버리스 플러그 인을 설치합니다.

   ```
   npm install --save-dev serverless-plugin-lambda-insights
   ```

1. `serverless.yml` 파일에서 다음과 같이 `plugins` 섹션에 플러그 인을 추가합니다.

   ```
   provider:
     name: aws
   plugins:
     - serverless-plugin-lambda-insights
   ```

1. Lambda Insights를 사용 설정합니다.
   + serverless.yml 파일에 다음 속성을 추가하여 함수마다 개별적으로 Lambda Insights를 사용 설정할 수 있습니다.

     ```
     functions:
       myLambdaFunction:
         handler: src/app/index.handler
         lambdaInsights: true #enables Lambda Insights for this function
     ```
   + `serverless.yml` 파일 내에서 다음과 같은 custom 섹션을 추가하여 모든 함수에 대해 Lambda Insights를 사용 설정할 수 있습니다.

     ```
     custom:
       lambdaInsights:
         defaultLambdaInsights: true #enables Lambda Insights for all functions
     ```

1. 다음 명령을 입력하여 서버리스 서비스를 다시 배포합니다.

   ```
   serverless deploy
   ```

   이렇게 하면 모든 함수가 다시 배포되고 지정한 해당 함수에 대해 Lambda Insights가 사용 설정됩니다. 즉, Lambda Insights 계층을 추가하고 `arn:aws:iam::aws:policy/CloudWatchLambdaInsightsExecutionRolePolicy` IAM 정책을 사용하는 필수 권한을 연결하여 Lambda Insights를 사용 설정합니다.

# Lambda 컨테이너 이미지 배포에서 Lambda Insights 활성화
<a name="Lambda-Insights-Getting-Started-docker"></a>

컨테이너 이미지로 배포된 Lambda 함수에서 Lambda Insights를 사용하도록 설정하려면 Dockerfile에 줄을 추가하세요. 이 줄은 Lambda Insights 에이전트를 컨테이너 이미지의 확장 프로그램으로 설치합니다. 추가할 줄은 x86-64 컨테이너와 ARM64 컨테이너에 따라 다릅니다.

**참고**  
Lambda Insights 에이전트는 Amazon Linux 2 및 Amazon Linux 2023을 사용하는 Lambda 런타임에서만 지원됩니다.

**Topics**
+ [x86-64 컨테이너 이미지 배포](#Lambda-Insights-Getting-Started-docker-x86-64)
+ [ARM64 컨테이너 이미지 배포](#Lambda-Insights-Getting-Started-docker-ARM64)

## x86-64 컨테이너 이미지 배포
<a name="Lambda-Insights-Getting-Started-docker-x86-64"></a>

x86-64 컨테이너에서 실행되는 컨테이너 이미지로 배포된 Lambda 함수에서 Lambda Insights를 사용하도록 설정하려면 Dockerfile에 다음 줄을 추가하세요. 이 줄은 Lambda Insights 에이전트를 컨테이너 이미지의 확장 프로그램으로 설치합니다.

```
RUN curl -O https://lambda-insights-extension.s3-ap-northeast-1.amazonaws.com/amazon_linux/lambda-insights-extension.rpm && \
    rpm -U lambda-insights-extension.rpm && \
    rm -f lambda-insights-extension.rpm
```

Lambda 함수를 생성한 후 [**CloudWatchLambdaInsightsExecutionRolePolicy**] IAM 정책을 함수의 실행 역할에 할당하면 Lambda Insights가 컨테이너 이미지 기반 Lambda 함수에서 사용하도록 설정됩니다.

**참고**  
이전 버전의 Lambda Insights 익스텐션을 사용하려면 위 명령의 URL을 `https://lambda-insights-extension.s3-ap-northeast-1.amazonaws.com/amazon_linux/lambda-insights-extension.1.0.111.0.rpm` URL로 바꿉니다. 자세한 내용은 [사용 가능한 Lambda Insights 익스텐션 버전](Lambda-Insights-extension-versions.md) 섹션을 참조하세요.

**Linux 서버에서 Lambda Insights 에이전트 패키지의 서명을 확인하려면**

1. 다음 명령을 입력하여 퍼블릭 키를 다운로드합니다.

   ```
   shell$ wget https://lambda-insights-extension.s3-ap-northeast-1.amazonaws.com/lambda-insights-extension.gpg
   ```

1. 다음 명령을 입력하여 퍼블릭 키를 키링으로 가져옵니다.

   ```
   shell$ gpg --import lambda-insights-extension.gpg
   ```

   출력은 다음과 비슷합니다. 다음 단계에서 필요하므로 `key` 값을 기록해 둡니다. 이 출력 예에서 ​​키 값은 `848ABDC8`입니다.

   ```
   gpg: key 848ABDC8: public key "Amazon Lambda Insights Extension" imported
   gpg: Total number processed: 1
   gpg: imported: 1  (RSA: 1)
   ```

1. 다음 명령을 입력하여 지문을 확인합니다. `key-value`를 이전 단계의 키 값으로 바꿉니다.

   ```
   shell$  gpg --fingerprint key-value
   ```

   이 명령의 출력에서 ​​지문 문자열은 `E0AF FA11 FFF3 5BD7 349E E222 479C 97A1 848A BDC8`이어야 합니다. 문자열이 일치하지 않으면 에이전트를 설치하지 말고 AWS에 문의하세요.

1. 지문을 확인한 후 이를 사용하여 Lambda Insights 에이전트 패키지를 확인할 수 있습니다. 다음 명령을 입력하여 패키지 서명 파일을 다운로드합니다.

   ```
   shell$  wget https://lambda-insights-extension.s3-ap-northeast-1.amazonaws.com/amazon_linux/lambda-insights-extension.rpm.sig
   ```

1. 다음 명령을 입력하여 서명을 확인합니다.

   ```
   shell$ gpg --verify lambda-insights-extension.rpm.sig lambda-insights-extension.rpm
   ```

   출력은 다음과 같아야 합니다.

   ```
   gpg: Signature made Thu 08 Apr 2021 06:41:00 PM UTC using RSA key ID 848ABDC8
   gpg: Good signature from "Amazon Lambda Insights Extension"
   gpg: WARNING: This key is not certified with a trusted signature!
   gpg:          There is no indication that the signature belongs to the owner.
   Primary key fingerprint: E0AF FA11 FFF3 5BD7 349E  E222 479C 97A1 848A BDC8
   ```

   예상 출력에 신뢰할 수 있는 서명에 대한 경고가 있을 수 있습니다. 사용자 또는 사용자가 신뢰하는 사람이 서명한 키만 신뢰됩니다. 이는 서명이 잘못되었음을 의미하지 않으며, 단지 해당 사용자가 퍼블릭 키를 확인하지 않은 것입니다.

   출력에 `BAD signature`가 포함된 경우 단계를 올바르게 수행했는지 확인합니다. `BAD signature` 응답이 계속되는 경우 AWS에 문의하고, 다운로드한 파일을 사용하지 마세요.

### x86-64 예
<a name="Lambda-Insights-Getting-Started-docker-example"></a>

이 단원에는 컨테이너 이미지 기반 Python Lambda 함수에서 Lambda Insights를 사용 설정하는 예가 포함되어 있습니다.

**Lambda 컨테이너 이미지에서 Lambda Insights를 사용 설정하는 예**

1. 다음과 유사한 Dockerfile을 생성합니다.

   ```
   FROM public.ecr.aws/lambda/python:3.8
   
   // extra lines to install the agent here
   RUN curl -O https://lambda-insights-extension.s3-ap-northeast-1.amazonaws.com/amazon_linux/lambda-insights-extension.rpm && \
       rpm -U lambda-insights-extension.rpm && \
       rm -f lambda-insights-extension.rpm
     
   COPY index.py ${LAMBDA_TASK_ROOT}
   CMD [ "index.handler" ]
   ```

1. 다음과 유사한 `index.py`라는 Python 파일을 생성합니다.

   ```
   def handler(event, context):
     return {
       'message': 'Hello World!'
     }
   ```

1. Dockerfile 및 `index.py`를 동일한 디렉터리에 넣습니다. 그런 다음, 해당 디렉터리에서 다음 단계를 실행함으로써 Docker 이미지를 구축하여 Amazon ECR에 업로드합니다.

   ```
   // create an ECR repository
   aws ecr create-repository --repository-name test-repository
   // build the docker image
   docker build -t test-image .
   // sign in to AWS
   aws ecr get-login-password | docker login --username AWS --password-stdin "${ACCOUNT_ID}".dkr.ecr."${REGION}".amazonaws.com
   // tag the image
   docker tag test-image:latest "${ACCOUNT_ID}".dkr.ecr."${REGION}".amazonaws.com/test-repository:latest
   // push the image to ECR
   docker push "${ACCOUNT_ID}".dkr.ecr."${REGION}".amazonaws.com/test-repository:latest
   ```

1. 방금 생성한 Amazon ECR 이미지를 사용하여 Lambda 함수를 생성합니다.

1.  [**CloudWatchLambdaInsightsExecutionRolePolicy**] IAM 정책을 함수의 실행 역할에 할당합니다.

## ARM64 컨테이너 이미지 배포
<a name="Lambda-Insights-Getting-Started-docker-ARM64"></a>

AL2\$1aarch64 컨테이너(ARM64 아키텍처 사용)에서 실행되는 컨테이너 이미지로 배포된 Lambda 함수에서 Lambda Insights를 사용하도록 설정하려면 Dockerfile에 다음 줄을 추가하세요. 이 줄은 Lambda Insights 에이전트를 컨테이너 이미지의 확장 프로그램으로 설치합니다.

```
RUN curl -O https://lambda-insights-extension-arm64.s3-ap-northeast-1.amazonaws.com/amazon_linux/lambda-insights-extension-arm64.rpm && \
    rpm -U lambda-insights-extension-arm64.rpm && \
    rm -f lambda-insights-extension-arm64.rpm
```

Lambda 함수를 생성한 후 [**CloudWatchLambdaInsightsExecutionRolePolicy**] IAM 정책을 함수의 실행 역할에 할당하면 Lambda Insights가 컨테이너 이미지 기반 Lambda 함수에서 사용하도록 설정됩니다.

**참고**  
이전 버전의 Lambda Insights 익스텐션을 사용하려면 위 명령의 URL을 `https://lambda-insights-extension-arm64.s3-ap-northeast-1.amazonaws.com/amazon_linux/lambda-insights-extension-arm64.1.0.229.0.rpm` URL로 바꿉니다. 자세한 내용은 [사용 가능한 Lambda Insights 익스텐션 버전](Lambda-Insights-extension-versions.md) 섹션을 참조하세요.

**Linux 서버에서 Lambda Insights 에이전트 패키지의 서명을 확인하려면**

1. 다음 명령을 입력하여 퍼블릭 키를 다운로드합니다.

   ```
   shell$ wget https://lambda-insights-extension-arm64.s3-ap-northeast-1.amazonaws.com/lambda-insights-extension.gpg
   ```

1. 다음 명령을 입력하여 퍼블릭 키를 키링으로 가져옵니다.

   ```
   shell$ gpg --import lambda-insights-extension.gpg
   ```

   출력은 다음과 비슷합니다. 다음 단계에서 필요하므로 `key` 값을 기록해 둡니다. 이 출력 예에서 ​​키 값은 `848ABDC8`입니다.

   ```
   gpg: key 848ABDC8: public key "Amazon Lambda Insights Extension" imported
   gpg: Total number processed: 1
   gpg: imported: 1  (RSA: 1)
   ```

1. 다음 명령을 입력하여 지문을 확인합니다. `key-value`를 이전 단계의 키 값으로 바꿉니다.

   ```
   shell$  gpg --fingerprint key-value
   ```

   이 명령의 출력에서 ​​지문 문자열은 `E0AF FA11 FFF3 5BD7 349E E222 479C 97A1 848A BDC8`이어야 합니다. 문자열이 일치하지 않으면 에이전트를 설치하지 말고 AWS에 문의하세요.

1. 지문을 확인한 후 이를 사용하여 Lambda Insights 에이전트 패키지를 확인할 수 있습니다. 다음 명령을 입력하여 패키지 서명 파일을 다운로드합니다.

   ```
   shell$  wget https://lambda-insights-extension-arm64.s3-ap-northeast-1.amazonaws.com/amazon_linux/lambda-insights-extension-arm64.rpm.sig
   ```

1. 다음 명령을 입력하여 서명을 확인합니다.

   ```
   shell$ gpg --verify lambda-insights-extension-arm64.rpm.sig lambda-insights-extension-arm64.rpm
   ```

   출력은 다음과 같아야 합니다.

   ```
   gpg: Signature made Thu 08 Apr 2021 06:41:00 PM UTC using RSA key ID 848ABDC8
   gpg: Good signature from "Amazon Lambda Insights Extension"
   gpg: WARNING: This key is not certified with a trusted signature!
   gpg:          There is no indication that the signature belongs to the owner.
   Primary key fingerprint: E0AF FA11 FFF3 5BD7 349E  E222 479C 97A1 848A BDC8
   ```

   예상 출력에 신뢰할 수 있는 서명에 대한 경고가 있을 수 있습니다. 사용자 또는 사용자가 신뢰하는 사람이 서명한 키만 신뢰됩니다. 이는 서명이 잘못되었음을 의미하지 않으며, 단지 해당 사용자가 퍼블릭 키를 확인하지 않은 것입니다.

   출력에 `BAD signature`가 포함된 경우 단계를 올바르게 수행했는지 확인합니다. `BAD signature` 응답이 계속되는 경우 AWS에 문의하고, 다운로드한 파일을 사용하지 마세요.

### ARM64 예
<a name="Lambda-Insights-Getting-Started-docker-example-ARM64"></a>

이 단원에는 컨테이너 이미지 기반 Python Lambda 함수에서 Lambda Insights를 사용 설정하는 예가 포함되어 있습니다.

**Lambda 컨테이너 이미지에서 Lambda Insights를 사용 설정하는 예**

1. 다음과 유사한 Dockerfile을 생성합니다.

   ```
   FROM public.ecr.aws/lambda/python:3.8
   // extra lines to install the agent here
   RUN curl -O https://lambda-insights-extension-arm64.s3-ap-northeast-1.amazonaws.com/amazon_linux/lambda-insights-extension-arm64.rpm && \
       rpm -U lambda-insights-extension-arm64.rpm && \
       rm -f lambda-insights-extension-arm64.rpm
     
   COPY index.py ${LAMBDA_TASK_ROOT}
   CMD [ "index.handler" ]
   ```

1. 다음과 유사한 `index.py`라는 Python 파일을 생성합니다.

   ```
   def handler(event, context):
     return {
       'message': 'Hello World!'
     }
   ```

1. Dockerfile 및 `index.py`를 동일한 디렉터리에 넣습니다. 그런 다음, 해당 디렉터리에서 다음 단계를 실행함으로써 Docker 이미지를 구축하여 Amazon ECR에 업로드합니다.

   ```
   // create an ECR repository
   aws ecr create-repository --repository-name test-repository
   // build the docker image
   docker build -t test-image .
   // sign in to AWS
   aws ecr get-login-password | docker login --username AWS --password-stdin "${ACCOUNT_ID}".dkr.ecr."${REGION}".amazonaws.com
   // tag the image
   docker tag test-image:latest "${ACCOUNT_ID}".dkr.ecr."${REGION}".amazonaws.com/test-repository:latest
   // push the image to ECR
   docker push "${ACCOUNT_ID}".dkr.ecr."${REGION}".amazonaws.com/test-repository:latest
   ```

1. 방금 생성한 Amazon ECR 이미지를 사용하여 Lambda 함수를 생성합니다.

1.  [**CloudWatchLambdaInsightsExecutionRolePolicy**] IAM 정책을 함수의 실행 역할에 할당합니다.

# 함수에 대한 Lambda Insights 확장 버전 업데이트
<a name="Lambda-Insights-Update-Extension"></a>

Lambda Insights 확장을 최신 버전으로 업데이트하는 것이 좋습니다. 이 페이지의 항목에서는 이를 수행하는 방법을 설명합니다.

**참고**  
이 페이지에서는 이미 Lambda Insights를 사용하고 있는 함수에서 사용 중인 확장 버전을 업데이트하는 방법을 설명합니다. Lambda Insights를 시작하는 방법에 대한 자세한 내용은 [Lambda Insights 시작하기](Lambda-Insights-Getting-Started.md) 섹션을 참조하세요.

## Lambda 콘솔을 사용하여 Lambda Insights 확장 버전 업데이트
<a name="Lambda-Insights-Update-Extension-console"></a>

다음 단계에 따라 Lambda 콘솔을 사용하여 Lambda Insights 확장 버전을 업데이트하세요.

**Lambda 콘솔을 사용하여 업데이트하려면 다음을 수행하세요.**

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

1. 함수의 이름을 선택합니다.

1. **계층** 섹션에서 **편집**을 선택합니다.

1. 계층 목록에서 **LambdaInsightsExtension**을 검색하고 계층 버전을 [사용 가능한 Lambda Insights 익스텐션 버전](Lambda-Insights-extension-versions.md)에 나열된 최신 버전으로 변경합니다.

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

## AWS CLI를 사용하여 Lambda Insights 확장 버전 업데이트
<a name="Lambda-Insights-Update-Extension-CLI"></a>

AWS CLI를 사용하여 Lambda Insights 확장 버전을 업데이트하려면 다음 명령을 입력하세요. layers 파라미터의 ARN 값을 사용하려는 리전 및 확장 버전과 일치하는 ARN으로 바꿉니다. 최신 릴리스 버전의 Lambda Insights 확장 계층에 대한 자세한 내용은 [사용 가능한 Lambda Insights 익스텐션 버전](Lambda-Insights-extension-versions.md) 섹션을 참조하세요.

```
aws lambda update-function-configuration \
--function-name function-name \
--layers "arn:aws:lambda:us-west-1:111122223333:layer:LambdaInsightsExtension:53"
```

## AWS SAM CLI를 사용하여 하나 이상의 함수에 대한 Lambda Insights 확장 업데이트
<a name="Lambda-Insights-Update-Extension-SAM-CLI"></a>

모든 Lambda 함수에 대한 Lambda Insights 확장 버전을 업데이트하려면 AWS Serverless Application Model(SAM) 템플릿의 `Globals` 섹션에서 `Layers` 속성을 Lambda Insights 계층의 ARN으로 업데이트하세요. 최신 릴리스 버전의 Lambda Insights 확장 계층에 대한 자세한 내용은 [사용 가능한 Lambda Insights 익스텐션 버전](Lambda-Insights-extension-versions.md) 섹션을 참조하세요.

다음은 모든 Lambda 함수를 업데이트합니다.

```
Globals:
  Function:
    Layers:
       - !Sub "arn:aws:lambda:${AWS::Region}:111122223333:layer:LambdaInsightsExtension:53"
```

다음은 하나의 함수만 업데이트합니다.

```
Resources:
  MyFunction:
    Type: AWS::Serverless::Function
    Properties:
      Layers:
        - !Sub "arn:aws:lambda:${AWS::Region}:111122223333:layer:LambdaInsightsExtension:53"
```

## CloudFormation을 사용하여 하나 이상의 함수에 대한 Lambda Insights 확장 업데이트
<a name="Lambda-Insights-Update-Extension-CloudFormation"></a>

CloudFormation을 사용하여 Lambda Insights 확장 버전을 업데이트하려면 다음 예제와 같이 함수의 CloudFormation 리소스 내 `Layers` 속성에서 확장 계층을 업데이트합니다. 최신 릴리스 버전의 Lambda Insights 확장 계층에 대한 자세한 내용은 [사용 가능한 Lambda Insights 익스텐션 버전](Lambda-Insights-extension-versions.md) 섹션을 참조하세요.

```
Resources:
  MyFunction:
    Type: AWS::Lambda::Function
    Properties:
      Layers:
        - !Sub "arn:aws:lambda:${AWS::Region}:111122223333:layer:LambdaInsightsExtension:53"
```

## AWS CDK를 사용하여 하나 이상의 함수에 대한 Lambda Insights 확장 업데이트
<a name="Lambda-Insights-Update-Extension-CDK"></a>

`layerArn` 파라미터의 ARN 값을 사용하려는 리전 및 확장 버전과 일치하는 ARN으로 바꿔서 Lambda 함수에서 확장 버전을 업데이트할 수 있습니다. 최신 릴리스 버전의 Lambda Insights 확장 계층에 대한 자세한 내용은 [사용 가능한 Lambda Insights 익스텐션 버전](Lambda-Insights-extension-versions.md) 섹션을 참조하세요.

```
import lambda = require('@aws-cdk/aws-lambda'); 
const layerArn = 'arn:aws:lambda:us-west-1:111122223333:layer:LambdaInsightsExtension:53'; 
const layer = lambda.LayerVersion.fromLayerVersionArn(this, 'LayerFromArn', layerArn);
```

## Serverless Framework를 사용하여 하나 이상의 함수에 대한 Lambda Insights 확장 업데이트
<a name="Lambda-Insights-Update-Extension-Serverless"></a>

다음 단계에 따라 Serverless Framework를 사용하여 기존 Lambda 함수에서 Lambda Insights 확장 버전을 업데이트할 수 있습니다. Serverless Framework에 대한 자세한 내용은 [Serverless Framework 설명서](https://serverless.com)를 참조하세요.

이 방법은 서버리스용 Lambda Insights 플러그인을 사용합니다. 자세한 내용은 [serverless-plugin-lambda-insights](https://www.npmjs.com/package/serverless-plugin-lambda-insights)를 참조하세요.

최신 버전의 서버리스 명령줄 인터페이스를 아직 설치하지 않은 경우 먼저 설치하거나 업그레이드해야 합니다. 자세한 내용은 [Setting Up Serverless Framework With AWS](https://www.serverless.com/framework/docs/getting-started/)를 참조하세요.

**Lambda 콘솔을 사용하여 업데이트하려면 다음을 수행하세요.**

1. Lambda Insights를 업데이트합니다. 아직 수행하지 않은 경우 파일 끝에 `custom` 섹션을 추가하고 `lambdaInsightsVersion` 속성 내에 Lambda Insights 버전을 지정합니다.

   ```
   custom:
       lambdaInsights:
           lambdaInsightsVersion: 53 #specify the Layer Version
   ```

1. 다음 명령을 입력하여 서버리스 서비스를 다시 배포합니다.

   ```
   serverless deploy
   ```

## Lambda 컨테이너 이미지 배포에 대한 Lambda Insights 확장 버전 업데이트
<a name="Lambda-Insights-Update-Extension-container"></a>

Lambda 컨테이너 이미지에서 Lambda Insights를 업데이트하려면 [Lambda 컨테이너 이미지 배포에서 Lambda Insights 활성화](Lambda-Insights-Getting-Started-docker.md)의 단계에 따라 최신 버전의 Lambda Insights로 이미지를 다시 빌드하세요. 그런 다음 AWS CLI를 사용하여 [함수 코드를 업데이트](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/update-function-code.html)하고 `--image-uri` 파라미터 값으로 컨테이너 이미지 URI를 제공합니다.

# Lambda Insights 지표 보기
<a name="Lambda-Insights-view-metrics"></a>

호출된 Lambda 함수에 Lambda Insights 확장을 설치한 후 CloudWatch 콘솔을 사용하여 지표를 확인할 수 있습니다. 다중 함수 개요를 보거나 단일 함수에 집중할 수 있습니다. 관리형 인스턴스에서 실행 중인 Lambda 함수에 대한 지표를 볼 수도 있습니다.

Lambda Insights 지표 목록은 [Lambda Insights가 수집하는 지표](Lambda-Insights-metrics.md) 단원을 참조하세요.

**Lambda Insights 지표의 다중 함수 개요를 보려면**

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

1. 탐색 창에서 **인사이트**를 선택한 다음 **Lambda Insights**를 선택하세요.

1. 페이지 상단의 **Lambda Insights 보기** 드롭다운에서 **함수**를 선택합니다.

1. **여러 함수**를 선택하세요.

   페이지의 위쪽 부분에는 Lambda Insights가 사용 설정된 리전의 모든 Lambda 함수에 대한 집계된 지표가 있는 그래프가 표시됩니다. 페이지의 아래쪽에는 함수를 나열하는 테이블이 있습니다.

1. 표시되는 함수의 수를 줄이기 위해 함수 이름을 기준으로 필터링하려면 페이지 상단 근처의 상자에 함수 이름의 일부를 입력합니다.

1. 이 보기를 대시보드에 위젯으로 추가하려면 [**대시보드에 추가(Add to dashboard)**]를 선택합니다.

**단일 함수의 지표를 보려면**

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

1. 탐색 창에서 **인사이트**를 선택한 다음 **Lambda Insights**를 선택하세요.

1. 페이지 상단의 **Lambda Insights 보기** 드롭다운에서 **함수**를 선택합니다.

1. **단일 함수**를 선택하세요.

   페이지의 위쪽 부분에는 선택한 함수에 대한 지표가 있는 그래프가 표시됩니다.

1. X-Ray를 사용 설정한 경우 단일 추적 ID를 선택할 수 있습니다. 그러면 해당 간접 호출에 대한 X-Ray 트레이스 맵 페이지가 열리며, 여기에서 축소하여 해당 특정 트랜잭션 처리와 관련된 분산 트레이스 및 기타 서비스를 확인할 수 있습니다. X-Ray 트레이스 맵에 대한 자세한 내용은 [X-Ray 트레이스 맵 사용](https://docs.aws.amazon.com/xray/latest/devguide/xray-console-servicemap.html)을 참조하세요.

1. CloudWatch Logs Insights를 열고 특정 오류를 확대하려면 페이지 하단의 테이블별 [**로그 보기(View logs)**]를 선택합니다.

1. 이 보기를 대시보드에 위젯으로 추가하려면 [**대시보드에 추가(Add to dashboard)**]를 선택합니다.

**관리형 인스턴스에서 실행 중인 Lambda 함수에 대한 지표를 보려면**

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

1. 탐색 창에서 **인사이트**를 선택한 다음 **Lambda Insights**를 선택하세요.

1. 페이지 상단의 **Lambda Insights 보기** 드롭다운에서 **관리형 인스턴스 함수**를 선택합니다.

   이 페이지에는 관리형 인스턴스에서 실행 중인 Lambda 함수에 대한 지표와 함께 관리형 인스턴스 보기가 표시됩니다.

1. **보기** 섹션에서 지표를 볼 세부 수준을 선택합니다.
   + **용량 제공업체** - 용량 제공업체 수준에서 집계된 지표가 표시됩니다.
   + **인스턴스 유형** - 인스턴스 유형 수준에서 집계된 지표가 표시됩니다.
   + **함수** - 개별 함수 수준에서 지표가 표시됩니다. 페이지의 위쪽 부분에는 Lambda Insights가 사용 설정된 리전의 모든 Lambda 함수에 대한 집계된 지표가 있는 그래프가 표시됩니다. 페이지의 아래쪽에는 함수를 나열하는 테이블이 있습니다. 함수 이름을 기준으로 필터링하려면 페이지 상단 근처의 상자에 함수 이름의 일부를 입력합니다.

1. **필터** 섹션을 사용하여 용량 제공업체, 인스턴스 유형 또는 함수를 기준으로 필터링합니다.

1. 이 보기를 대시보드에 위젯으로 추가하려면 [**대시보드에 추가(Add to dashboard)**]를 선택합니다.

# Application Insights와 통합
<a name="lambda-insights-appinsights"></a>

Amazon CloudWatch Application Insights는 애플리케이션 리소스와 기술 스택 전반에 걸쳐 애플리케이션을 모니터링하고 주요 지표, 로그, 경보를 식별 및 설정하는 데 도움이 됩니다. 자세한 내용은 [CloudWatch Application Insights로 일반적인 애플리케이션 문제 감지](cloudwatch-application-insights.md) 섹션을 참조하세요.

Application Insights를 활성화하여 Lambda 함수에서 추가 데이터를 수집할 수 있습니다. 아직 Application Insights를 활성화하지 않은 경우 Container Insights 대시보드의 성능 보기 아래에 있는 ****Application Insights** 자동 구성(Auto-configure Application Insights**)을 선택해 활성화할 수 있습니다.

Lambda 기능을 모니터링하도록 CloudWatch **Application Insights**를 이미 설정한 경우 Application Insights 대시보드가 Application Insights 탭 아래에 표시됩니다.

# Lambda Insights가 수집하는 지표
<a name="Lambda-Insights-metrics"></a>

Lambda Insights는 해당 서비스가 설치된 Lambda 함수에서 여러 지표를 수집합니다. 이러한 지표 중 일부는 CloudWatch 지표에서 시계열 집계 데이터로 사용할 수 있습니다. 다른 지표는 시계열 데이터로 집계되지는 않지만 CloudWatch Logs Insights를 사용하여 임베디드 지표 형식 로그 항목에서 찾아볼 수 있습니다.

**Topics**
+ [Lambda 함수](Lambda-Insights-metrics-lambda-functions.md)
+ [관리형 인스턴스 Lambda 함수](Lambda-Insights-metrics-managed-instances.md)

# Lambda 함수
<a name="Lambda-Insights-metrics-lambda-functions"></a>

다음 지표는 표준 Lambda 함수에 대한 `LambdaInsights` 네임스페이스의 CloudWatch 지표에서 시계열 집계 데이터로 사용할 수 있습니다.


| 지표 이름 | 측정 기준 | 설명 | 
| --- | --- | --- | 
|  `cpu_total_time` |  function\$1name function\$1name, version  |  `cpu_system_time` 및 `cpu_user_time`의 합계입니다. 단위: 밀리초  | 
|  `init_duration` |  function\$1name function\$1name, version  |  Lambda 실행 환경 수명 주기의 `init` 단계에서 소요된 시간입니다. 단위: 밀리초  | 
|  `memory_utilization` |  function\$1name function\$1name, version  |  함수에 할당된 메모리의 백분율로 측정된 최대 메모리입니다. 단위: 퍼센트  | 
|  `used_memory_max` |  function\$1name function\$1name, version  |  함수 실행 환경의 측정된 메모리입니다. 단위: 메가바이트  | 
|  `rx_bytes` |  function\$1name function\$1name, version  |  함수가 수신한 바이트 수입니다. 단위: 바이트  | 
|  `tmp_free` |  function\$1name function\$1name, version  |  `/tmp` 디렉터리에 사용 가능한 공간량입니다. 단위: 바이트  | 
|  `tmp_used` |  function\$1name function\$1name, version  |  `/tmp` 디렉터리에 사용된 공간량입니다. 단위: 바이트  | 
|  `tx_bytes` |  function\$1name function\$1name, version  |  함수가 전송한 바이트 수입니다. 단위: 바이트  | 
|  `total_memory` |  function\$1name function\$1name, version  |  Lambda 함수에 할당된 메모리 양입니다. 이는 함수의 메모리 크기와 같습니다. 단위: 메가바이트  | 
|  `total_network` |  function\$1name function\$1name, version  |  `rx_bytes` 및 `tx_bytes`의 합계입니다. I/O 태스크를 수행하지 않는 함수의 경우에도 이 값은 일반적으로 Lambda 런타임에서 수행된 네트워크 호출로 인해 0보다 큽니다. 단위: 바이트  | 
|  `used_memory_max` |  function\$1name function\$1name, version  |  측정된 함수 샌드박스 메모리입니다. 단위: 메가바이트  | 

다음 지표는 CloudWatch Logs Insights를 사용하여 임베디드 지표 형식 로그 항목에서 찾아볼 수 있습니다. CloudWatch Logs Insights에 대한 자세한 내용은 [CloudWatch Logs Insights를 사용한 로그 데이터 분석](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AnalyzingLogData.html) 단원을 참조하세요.

포함된 지표 형식에 대한 자세한 내용은 [로그 내에 지표 포함](CloudWatch_Embedded_Metric_Format.md) 단원을 참조하세요.


| 지표 이름 | 설명 | 
| --- | --- | 
|  `agent_version` |  Lambda 함수에서 실행 중인 Lambda Insights 확장 에이전트의 현재 버전입니다. 단위: 문자열  | 
|  `cpu_user_time` |  CPU가 사용자 코드를 실행하는 데 사용한 시간입니다. 단위: 밀리초  | 
|  `cpu_system_time` |  CPU가 커널 코드를 실행하는 데 사용한 시간입니다. 단위: 밀리초  | 
|  `cpu_total_time` |  `cpu_system_time` 및 `cpu_user_time`의 합계입니다. 단위: 밀리초  | 
|  `fd_use` |  현재 사용 중인 파일 디스크립터입니다. 단위: 수  | 
|  `fd_max` |  사용할 수 있는 최대 파일 디스크립터입니다. 단위: 수  | 
|  `version` |  다른 지표가 수집된 Lambda 함수의 버전입니다. 단위: 수  | 
|  `agent_memory_max` |  Lambda Insights 확장 에이전트가 사용하는 최대 메모리입니다. 단위: 바이트  | 
|  `agent_memory_avg` |  Lambda Insights 확장 에이전트가 사용하는 평균 메모리입니다. 단위: 바이트  | 
|  `memory_utilization` |  실행 환경에 할당된 메모리의 비율(%)로 측정된 평균 메모리입니다. 단위: 퍼센트  | 
|  `used_memory_max` |  함수 실행 환경의 측정된 메모리입니다. 단위: 메가바이트  | 
|  `rx_bytes` |  함수가 수신한 바이트 수입니다. 단위: 바이트  | 
|  `tx_bytes` |  함수가 전송한 바이트 수입니다. 단위: 바이트  | 
|  `threads_max` |  함수 프로세스에서 사용 중인 스레드 수입니다. 함수 작성자가 런타임에 의해 생성된 초기 스레드 수를 제어하지 않습니다. 단위: 수  | 
|  `tmp_used` |  `/tmp` 디렉터리에 사용된 공간량입니다. 단위: 바이트  | 
|  `tmp_max` |  `/tmp` 디렉터리에 사용 가능한 공간량입니다. 단위: 바이트  | 
|  `total_memory` |  Lambda 함수에 할당된 메모리 양입니다. 이는 함수의 메모리 크기와 같습니다. 단위: 메가바이트  | 
|  `total_network` |  `rx_bytes` 및 `tx_bytes`의 합계입니다. I/O 태스크를 수행하지 않는 함수의 경우에도 이 값은 일반적으로 Lambda 런타임에서 수행된 네트워크 호출로 인해 0보다 큽니다. 단위: 바이트  | 

# 관리형 인스턴스 Lambda 함수
<a name="Lambda-Insights-metrics-managed-instances"></a>

다음 지표는 관리형 인스턴스에서 실행 중인 표준 Lambda 함수에 대한 `LambdaInsights` 네임스페이스의 CloudWatch 지표에서 시계열 집계 데이터로 사용할 수 있습니다.


| 지표 이름 | 측정 기준 | 설명 | 
| --- | --- | --- | 
|  `cpu_utilization` |  function\$1name function\$1name, version  |  실행 환경에 할당된 vCPU의 비율(%)로 측정된 평균 CPU입니다. 단위: 퍼센트  | 
|  `cpu_utilization_max` |  function\$1name function\$1name, version  |  실행 환경에 할당된 vCPU의 비율(%)로 측정된 최대 CPU입니다. 이는 1초 간격으로 샘플링됩니다. 단위: 퍼센트  | 
|  `cpu_total_time` |  function\$1name function\$1name, version  |  `cpu_system_time` 및 `cpu_user_time`의 합계입니다. 단위: 밀리초  | 
|  `memory_utilization` |  function\$1name function\$1name, version  |  실행 환경에 할당된 메모리의 비율(%)로 측정된 평균 메모리입니다. 단위: 퍼센트  | 
|  `memory_utilization_max` |  function\$1name function\$1name, version  |  실행 환경에 할당된 메모리의 비율(%)로 측정된 최소 메모리입니다. 이는 50ms 간격으로 샘플링됩니다. 단위: 퍼센트  | 
|  `used_memory_max` |  function\$1name function\$1name, version  |  함수 실행 환경의 측정된 메모리입니다. 단위: 메가바이트  | 
|  `rx_bytes` |  function\$1name function\$1name, version  |  함수가 수신한 바이트 수입니다. 단위: 바이트  | 
|  `tmp_free` |  function\$1name function\$1name, version  |  `/tmp` 디렉터리에 사용 가능한 공간량입니다. 단위: 바이트  | 
|  `tmp_used` |  function\$1name function\$1name, version  |  `/tmp` 디렉터리에 사용된 공간량입니다. 단위: 바이트  | 
|  `tx_bytes` |  function\$1name function\$1name, version  |  함수가 전송한 바이트 수입니다. 단위: 바이트  | 
|  `total_memory` |  function\$1name function\$1name, version  |  Lambda 함수에 할당된 메모리 양입니다. 이는 함수의 메모리 크기와 같습니다. 단위: 메가바이트  | 
|  `total_network` |  function\$1name function\$1name, version  |  `rx_bytes` 및 `tx_bytes`의 합계입니다. I/O 태스크를 수행하지 않는 함수의 경우에도 이 값은 일반적으로 Lambda 런타임에서 수행된 네트워크 호출로 인해 0보다 큽니다. 단위: 바이트  | 
|  `used_memory_max` |  function\$1name function\$1name, version  |  측정된 함수 샌드박스 메모리입니다. 단위: 메가바이트  | 

다음 지표는 CloudWatch Logs Insights를 사용하여 임베디드 지표 형식 로그 항목에서 찾아볼 수 있습니다. CloudWatch Logs Insights에 대한 자세한 내용은 [CloudWatch Logs Insights를 사용한 로그 데이터 분석](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AnalyzingLogData.html) 단원을 참조하세요.

포함된 지표 형식에 대한 자세한 내용은 [로그 내에 지표 포함](CloudWatch_Embedded_Metric_Format.md) 단원을 참조하세요.


| 지표 이름 | 설명 | 
| --- | --- | 
|  `lambda_mode` |  이 로그 이벤트가 Lambda 관리형 인스턴스에서 실행되는 함수에 대한 것인지를 나타냅니다. 이 필드가 로그 이벤트에 있는 경우 `managed-instance`라는 한 가지 값만 가질 수 있습니다. 이 필드가 없으면 해당 함수가 일반 Lambda 함수였다는 뜻입니다. 단위: 문자열  | 
|  `agent_version` |  Lambda 함수에서 실행 중인 Lambda Insights 확장 에이전트의 현재 버전입니다. 단위: 문자열  | 
|  `cpu_utilization` |  실행 환경에 할당된 vCPU의 비율(%)로 측정된 평균 CPU입니다. 단위: 퍼센트  | 
|  `cpu_utilization_max` |  실행 환경에 할당된 vCPU의 비율(%)로 측정된 최대 CPU입니다. 이는 1초 간격으로 샘플링됩니다. 단위: 퍼센트  | 
|  `cpu_user_time` |  CPU가 사용자 코드를 실행하는 데 사용한 시간입니다. 단위: 밀리초  | 
|  `cpu_system_time` |  CPU가 커널 코드를 실행하는 데 사용한 시간입니다. 단위: 밀리초  | 
|  `cpu_total_time` |  `cpu_system_time` 및 `cpu_user_time`의 합계입니다. 단위: 밀리초  | 
|  `fd_use` |  현재 사용 중인 파일 디스크립터입니다. 단위: 수  | 
|  `fd_max` |  사용할 수 있는 최대 파일 디스크립터입니다. 단위: 수  | 
|  `execution_environment_init` |  이 함수에 대해 새 실행 환경이 가동되었는지를 나타내는 부울 값입니다. 단위: 부울  | 
|  `version` |  다른 지표가 수집된 Lambda 함수의 버전입니다. 단위: 수  | 
|  `agent_memory_max` |  Lambda Insights 확장 에이전트가 사용하는 최대 메모리입니다. 단위: 바이트  | 
|  `agent_memory_avg` |  Lambda Insights 확장 에이전트가 사용하는 평균 메모리입니다. 단위: 바이트  | 
|  `memory_utilization` |  실행 환경에 할당된 메모리의 비율(%)로 측정된 평균 메모리입니다. 단위: 퍼센트  | 
|  `memory_utilization_max` |  실행 환경에 할당된 메모리의 비율(%)로 측정된 최소 메모리입니다. 이는 50ms 간격으로 샘플링됩니다. 단위: 퍼센트  | 
|  `used_memory_max` |  함수 실행 환경의 측정된 메모리입니다. 단위: 메가바이트  | 
|  `rx_bytes` |  함수가 수신한 바이트 수입니다. 단위: 바이트  | 
|  `tx_bytes` |  함수가 전송한 바이트 수입니다. 단위: 바이트  | 
|  `threads_max` |  함수 프로세스에서 사용 중인 스레드 수입니다. 함수 작성자가 런타임에 의해 생성된 초기 스레드 수를 제어하지 않습니다. 단위: 수  | 
|  `tmp_free` |  `/tmp` 디렉터리에 사용 가능한 공간량입니다. 단위: 바이트  | 
|  `tmp_used` |  `/tmp` 디렉터리에 사용된 공간량입니다. 단위: 바이트  | 
|  `tmp_max` |  `/tmp` 디렉터리에 사용 가능한 공간량입니다. 단위: 바이트  | 
|  `total_memory` |  Lambda 함수에 할당된 메모리 양입니다. 이는 함수의 메모리 크기와 같습니다. 단위: 메가바이트  | 
|  `total_network` |  `rx_bytes` 및 `tx_bytes`의 합계입니다. I/O 태스크를 수행하지 않는 함수의 경우에도 이 값은 일반적으로 Lambda 런타임에서 수행된 네트워크 호출로 인해 0보다 큽니다. 단위: 바이트  | 

# CloudWatch Lambda Insights 문제 해결 및 알려진 문제
<a name="Lambda-Insights-Troubleshooting"></a>

문제 해결을 위한 첫 번째 단계는 Lambda Insights 익스텐션에 디버그 로깅을 사용 설정하는 것입니다. 이렇게 하려면 Lambda 함수에서 환경 변수 `LAMBDA_INSIGHTS_LOG_LEVEL=info`를 설정합니다. 자세한 내용은 [AWS Lambda 환경 변수 사용](https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html) 단원을 참조하세요.

익스텐션은 함수와 동일한 로그 그룹에 로그를 내보냅니다(`/aws/lambda/function-name)`. 해당 로그를 검토하여 오류가 설정 문제와 관련이 있을 수 있는지 확인합니다.

## Lambda Insights의 지표가 표시되지 않음
<a name="Lambda-Insights-Troubleshooting-nometrics"></a>

표시될 것으로 예상했던 Lambda Insights 지표가 표시되지 않으면 다음 가능성을 확인하세요.
+ **지표가 지연될 뿐일 수 있음** - ​​함수가 아직 호출되지 않았거나 데이터가 아직 플러시되지 않은 경우 CloudWatch에 지표가 표시되지 않습니다. 자세한 내용은 이 단원의 뒷부분에 있는 **알려진 문제**를 참조하세요.
+ **Lambda 함수에 올바른 권한이 있는지 확인** - [**CloudWatchLambdaInsightsExecutionRolePolicy**] IAM 정책이 함수의 실행 역할에 할당되었는지 확인합니다.
+ **Lambda 런타임 확인** - Lambda Insights는 특정 Lambda 런타임만 지원합니다. 지원되는 런타임 목록은 [Lambda Insights](Lambda-Insights.md) 단원을 참조하세요.

  예를 들어 Java 8에서 Lambda Insights를 사용하려면 `java8` 런타임이 아니라 `java8.al2` 런타임을 사용해야 합니다.
+ **네트워크 액세스 확인** - Lambda 함수가 인터넷에 액세스할 수 없는 VPC 프라이빗 서브넷에 있을 수 있으며, CloudWatch Logs에 대해 구성된 VPC 엔드포인트가 없습니다. 이 문제를 디버그하기 위해 환경 변수 `LAMBDA_INSIGHTS_LOG_LEVEL=info`를 설정할 수 있습니다.

## 알려진 문제
<a name="Lambda-Insights-Troubleshooting-knownissues"></a>

데이터 지연은 20분까지 걸릴 수 있습니다. 함수 핸들러가 완료되면 Lambda는 샌드박스를 고정하며 이에 따라 Lambda Insights 익스텐션도 고정됩니다. 함수가 실행되는 동안에는 함수 TPS를 기반으로 적응형 배치 처리 전략을 사용하여 데이터를 출력할 수 있습니다. 그러나 함수 호출이 장기간 중지되는데 버퍼에 여전히 이벤트 데이터가 있는 경우 이 데이터는 Lambda가 유휴 샌드박스를 종료할 때까지 지연될 수 있습니다. Lambda가 샌드박스를 종료하면 버퍼링된 데이터를 플러시할 수 있습니다.

# CloudWatch Lambda Insights의 원격 분석 이벤트 예
<a name="Lambda-Insights-example-event"></a>

Lambda Insights가 사용 설정된 Lambda 함수를 호출할 때마다 단일 로그 이벤트가 `/aws/lambda-insights` 로그 그룹에 기록됩니다. 각 로그 이벤트에는 임베디드 지표 형식의 지표가 포함됩니다. 포함된 지표 형식에 대한 자세한 내용은 [로그 내에 지표 포함](CloudWatch_Embedded_Metric_Format.md) 단원을 참조하세요.

이러한 로그 이벤트를 분석하기 위해 다음 방법을 사용할 수 있습니다.
+ [Lambda Insights 지표 보기](Lambda-Insights-view-metrics.md) 단원에 설명된 것처럼 CloudWatch 콘솔의 Lambda Insights 섹션을 활용합니다.
+ CloudWatch Logs Insights를 사용하여 로그 이벤트를 쿼리합니다. 자세한 내용은 [CloudWatch Logs Insights를 사용한 로그 데이터 분석](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AnalyzingLogData.html)을 참조하세요.
+ `LambdaInsights` 네임스페이스에 수집된 지표를 검토하고 CloudWatch 지표를 사용하여 이를 그래프로 표시합니다.

다음은 임베디드 지표 형식이 있는 Lambda Insights 로그 이벤트의 예입니다.

```
{
    "_aws": {
        "Timestamp": 1605034324256,
        "CloudWatchMetrics": [
            {
                "Namespace": "LambdaInsights",
                "Dimensions": [
                    [ "function_name" ],
                    [ "function_name", "version" ]
                ],
                "Metrics": [
                    { "Name": "memory_utilization", "Unit": "Percent" },
                    { "Name": "total_memory", "Unit": "Megabytes" },
                    { "Name": "used_memory_max", "Unit": "Megabytes" },
                    { "Name": "cpu_total_time", "Unit": "Milliseconds" },
                    { "Name": "tx_bytes", "Unit": "Bytes" },
                    { "Name": "rx_bytes", "Unit": "Bytes" },
                    { "Name": "total_network", "Unit": "Bytes" },
                    { "Name": "init_duration", "Unit": "Milliseconds" }
                ]
            }
        ],
        "LambdaInsights": {
            "ShareTelemetry": true
        }
    },
    "event_type": "performance",
    "function_name": "cpu-intensive",
    "version": "Blue",
    "request_id": "12345678-8bcc-42f7-b1de-123456789012",
    "trace_id": "1-5faae118-12345678901234567890",
    "duration": 45191,
    "billed_duration": 45200,
    "billed_mb_ms": 11571200,
    "cold_start": true,
    "init_duration": 130,
    "tmp_free": 538329088,
    "tmp_max": 551346176,
    "threads_max": 11,
    "used_memory_max": 63,
    "total_memory": 256,
    "memory_utilization": 24,
    "cpu_user_time": 6640,
    "cpu_system_time": 50,
    "cpu_total_time": 6690,
    "fd_use": 416,
    "fd_max": 32642,
    "tx_bytes": 4434,
    "rx_bytes": 6911,
    "timeout": true,
    "shutdown_reason": "Timeout",
    "total_network": 11345,
    "agent_version": "1.0.72.0",
    "agent_memory_avg": 10,
    "agent_memory_max": 10
}
```

다음은 Lambda 관리형 인스턴스에서 실행 중인 Lambda 함수에 대한 Lambda Insights 로그 이벤트의 예제입니다.

```
{
    "total_network": 16443,
    "tmp_free": 531492864,
    "total_memory": 2048,
    "fd_use": 85,
    "tmp_used": 11984896,
    "execution_environment_init": false,
    "version": "3",
    "event_type": "performance",
    "agent_memory_max": 6,
    "fd_max": 1024,
    "function_name": "cpu-intensive",
    "tx_bytes": 8404,
    "memory_utilization": 3,
    "used_memory_max": 73,
    "memory_utilization_max": 3,
    "cpu_system_time": 541,
    "threads_max": 49,
    "tmp_max": 543477760,
    "cpu_utilization_max": 2,
    "agent_memory_avg": 6,
    "cpu_total_time": 815,
    "rx_bytes": 8039,
    "lambda_mode": "managed-instance",
    "agent_version": "1.0.660.0",
    "_aws": {
        "CloudWatchMetrics": [
            {
                "Namespace": "LambdaInsights",
                "Dimensions": [
                    [
                        "function_name"
                    ],
                    [
                        "function_name",
                        "version"
                    ]
                ],
                "Metrics": [
                    {
                        "Name": "cpu_total_time",
                        "Unit": "Milliseconds"
                    },
                    {
                        "Name": "cpu_utilization",
                        "Unit": "Percent"
                    },
                    {
                        "Name": "cpu_utilization_max",
                        "Unit": "Percent"
                    },
                    {
                        "Name": "tx_bytes",
                        "Unit": "Bytes"
                    },
                    {
                        "Name": "rx_bytes",
                        "Unit": "Bytes"
                    },
                    {
                        "Name": "total_network",
                        "Unit": "Bytes"
                    },
                    {
                        "Name": "used_memory_max",
                        "Unit": "Megabytes"
                    },
                    {
                        "Name": "memory_utilization",
                        "Unit": "Percent"
                    },
                    {
                        "Name": "memory_utilization_max",
                        "Unit": "Percent"
                    },
                    {
                        "Name": "total_memory",
                        "Unit": "Megabytes"
                    },
                    {
                        "Name": "tmp_used",
                        "Unit": "Bytes"
                    },
                    {
                        "Name": "tmp_free",
                        "Unit": "Bytes"
                    }
                ]
            }
        ],
        "Timestamp": 1764164871353,
        "LambdaInsights": {
            "ShareTelemetry": true
        }
    },
    "cpu_utilization": 1,
    "cpu_user_time": 273
}
```

# CloudWatch Database Insights
<a name="Database-Insights"></a>

CloudWatch Database Insights를 사용하여 Amazon Aurora MySQL, Amazon Aurora PostgreSQL, Amazon Aurora PostgreSQL Limitless, Amazon RDS for SQL Server, RDS for MySQL, RDS for PostgreSQL, RDS for Oracle, RDS for MariaDB 데이터베이스를 대규모로 모니터링하고 문제를 해결할 수 있습니다.

Database Insights를 사용하면 사전 구축되고 독자적인 대시보드를 사용하여 데이터베이스 플릿을 모니터링할 수 있습니다. Database Insights 대시보드에는 플릿의 성능을 분석하는 데 도움이 될 수 있도록 큐레이트된 지표와 시각화가 표시되며, 이러한 대시보드는 사용자 지정할 수 있습니다. 플릿의 모든 데이터베이스에 대한 지표를 단일 대시보드에 제시하면 Database Insights를 통해 데이터베이스를 동시에 모니터링할 수 있습니다.

예를 들어 Database Insights를 사용하면 수백 개의 데이터베이스 인스턴스로 이루어진 플릿 내에서 성능이 저하된 데이터베이스를 찾을 수 있습니다. 그런 다음, 해당 인스턴스를 선택한 후 Database Insights를 사용하여 문제를 해결할 수 있습니다.

엔진, AWS 리전 및 인스턴스 클래스 지원에 대한 내용은 [Database Insights용 Aurora DB 엔진, 리전 및 인스턴스 클래스 지원](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_DatabaseInsights.Engines.html) 및 [Database Insights용 Amazon RDS DB 엔진, 리전 및 인스턴스 클래스 지원](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_DatabaseInsights.Engines.html)을 참조하세요.

Database Insights는 여러 계정 및 리전 전체의 워크로드 모니터링을 지원합니다. Database Insights의 교차 계정 교차 리전 모니터링 기능에 대한 자세한 내용은 [CloudWatch Database Insights에 대한 교차 계정 교차 리전 모니터링 설정](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Database-Insights-Cross-Account-Cross-Region.html)을 참조하세요.

Database Insights를 시작하려면 다음 주제를 참조하세요.

**주제**
+ [CloudWatch Database Insights 시작하기](Database-Insights-Get-Started.md)
+ [CloudWatch Database Insights용 플릿 상태 대시보드 보기](Database-Insights-Fleet-Health-Dashboard.md)
+ [CloudWatch Database Insights용 데이터베이스 인스턴스 대시보드 보기](Database-Insights-Database-Instance-Dashboard.md)
+ [CloudWatch Database Insights의 문제 해결](Database-Insights-Troubleshooting.md)

## Database Insights를 위한 모드
<a name="Database-Insights-modes"></a>

Database Insights에는 고급 모드와 표준 모드가 있습니다. 표준 모드는 Database Insights의 기본값이며, 데이터베이스에 대해 고급 모드를 켤 수 있습니다.

아래 표에는 CloudWatch가 Database Insights의 고급 모드 및 표준 모드에 대해 지원하는 기능이 나와 있습니다.


| 기능 | 스탠다드 모드 | 고급 모드. | 
| --- | --- | --- | 
| DB 로드에 대한 상위 기여자를 차원별로 분석 | 지원됨 | 지원됨 | 
| 최대 7일의 보존 기간으로 데이터베이스 지표에 대한 쿼리, 그래프, 경보 설정 | 지원됨 | 지원됨 | 
| 세분화된 액세스 제어 정책을 정의하여 잠재적으로 민감한 차원(예: SQL 텍스트)에 대한 액세스 제한 | 지원됨 | 지원됨 | 
| 실행 프로세스당 세부 지표를 사용하여 데이터베이스에서 수행되는 운영 체제 프로세스 분석 이 기능이 작동하려면 [Amazon RDS 확장 모니터링](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_PerfInsights_Counters.html)이 필요합니다. | 지원되지 않음 | 지원됨 | 
| 플릿 전반의 모니터링 보기를 정의한 후 저장하여 대규모 데이터베이스 상태 평가 | 지원되지 않음 | 지원됨 | 
| 15개월의 보존과 안내형 UX를 사용하여 SQL 잠금 분석 | 지원되지 않음 | Aurora PostgreSQL에 대해서만 지원됨 | 
| 15개월의 보존과 안내형 UX를 사용하여 SQL 실행 계획 분석 | 지원되지 않음 | Aurora PostgreSQL, RDS for Oracle 및 RDS for SQL Server에만 지원됨 | 
| 쿼리당 통계 시각화 | 지원되지 않음 | 지원됨 | 
| 느린 SQL 쿼리 분석이 기능이 작동하려면 데이터베이스 로그를 CloudWatch Logs로 내보내야 합니다. | 지원되지 않음 | 지원됨 | 
| CloudWatch Application Signals를 사용하여 직접 호출 서비스 보기 | 지원되지 않음 | 지원됨 | 
| 지표, 로그, 이벤트, 애플리케이션을 비롯하여 모든 데이터베이스 원격 측정에 대한 통합된 대시보드 보기Database Insights 콘솔에서 데이터베이스 로그를 보려면 데이터베이스 로그를 CloudWatch Logs로 내보내야 합니다. | 지원되지 않음 | 지원됨 | 
| 성능 개선 도우미 카운터 지표를 자동으로 CloudWatch로 가져오기 | 지원되지 않음 | 지원됨 | 
| CloudWatch에서 Amazon RDS 이벤트 보기 | 지원되지 않음 | 지원됨 | 
| 온디맨드 분석을 사용하여 선택한 기간 동안 데이터베이스 성능 분석 | 지원되지 않음 | 지원됨 | 

**참고**  
Database Insights 기능 가용성은 AWS 리전마다 다릅니다. 일부 고급 모드 기능을 일부 리전에서 사용할 수 없기 때문입니다.

## 데이터 보존
<a name="Database-Insights-retention"></a>

Database Insights의 고급 모드는 성능 개선 도우미가 수집한 지표를 15개월간 유지합니다.

표준 모드에 성능 개선 도우미가 활성화된 경우, Amazon RDS는 성능 개선 도우미 카운터 지표를 7일간 유지합니다.

Amazon RDS 성능 개선 도우미 카운터 지표에 대한 자세한 내용은 [성능 개선 도우미 카운터](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_PerfInsights_Counters.html) 섹션을 참조하세요.

Database Insights에서 수집한 CloudWatch 지표의 보존 기간에 대한 자세한 내용은 다음 주제를 참조하세요.
+ **Amazon Aurora 사용 설명서의 [Amazon Aurora에 대한 Amazon CloudWatch 지표](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraMonitoring.Metrics.html)
+ **Amazon RDS 사용 설명서의 [Amazon Relational Database Service용 Amazon CloudWatch 지표](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-metrics.html)
+ **Amazon Aurora 사용 설명서의 [Amazon CloudWatch metrics for Amazon RDS Performance Insights](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_PerfInsights.Cloudwatch.html)
+ **Amazon Aurora 사용 설명서의 [Amazon CloudWatch metrics for Amazon RDS Performance Insights](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.Cloudwatch.html)

## Database Insights를 성능 개선 도우미와 통합하는 방법
<a name="Database-Insights-pi"></a>

성능 개선 도우미는 데이터베이스 성능 모니터링 서비스입니다.

Database Insights는 성능 개선 도우미의 기능을 구축하고 확장합니다. Database Insights는 모니터링, 분석, 최적화 기능을 추가합니다.

Database Insights의 고급 모드를 활성화하려면 성능 개선 도우미를 활성화해야 합니다.

Database Insights는 성능 개선 도우미 카운터 지표를 자동으로 CloudWatch로 가져옵니다. Database Insights의 고급 모드는 성능 개선 도우미 지표 및 CloudWatch 지표를 포함하여 Database Insights에서 수집한 모든 지표를 15개월 동안 자동으로 유지합니다. 이는 추가 구성 없이 인스턴스에서 고급 모드를 활성화하면 자동으로 발생합니다. Amazon RDS 성능 개선 도우미 카운터 지표에 대한 자세한 내용은 Amazon Aurora 사용 설명서의** [성능 개선 도우미 카운터](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights_Counters.html) 섹션을 참조하세요.

## 가격 책정
<a name="Database-Insights-pricing"></a>

요금에 대한 자세한 내용은 [Amazon CloudWatch 요금](https://aws.amazon.com/cloudwatch/pricing/)을 참조하세요.

# CloudWatch Database Insights 시작하기
<a name="Database-Insights-Get-Started"></a>

Database Insights의 표준 모드는 기본적으로 Amazon RDS 및 Aurora 데이터베이스에 대해 활성화됩니다. Database Insights의 고급 모드를 시작하려면 새 데이터베이스를 생성하거나 데이터베이스를 수정하면 됩니다.

Amazon RDS 데이터베이스에 대한 Database Insights의 고급 모드 또는 표준 모드를 활성화하는 방법에 대한 내용은 다음 주제를 참조하세요.
+ **Amazon RDS 사용 설명서의 [Amazon RDS용 Database Insights의 고급 모드 켜기](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_DatabaseInsights.TurningOnAdvanced.html)
+ **Amazon Aurora 사용 설명서의 [Amazon RDS용 Database Insights의 표준 모드 켜기](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_DatabaseInsights.TurningOnStandard.html)
+ **Amazon RDS 사용 설명서의 [Amazon RDS용 DB 인스턴스 또는 다중 AZ DB 클러스터 생성 시 CloudWatch Database Insights 켜기 또는 끄기](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_DatabaseInsights.TurnOnCreateDatabase.html)

Amazon Aurora 데이터베이스에 대한 Database Insights의 고급 모드 또는 표준 모드를 활성화하는 방법에 대한 자세한 내용은 다음 주제를 참조하세요.
+ **Amazon Aurora 사용 설명서의 [Turning on the Advanced mode of Database Insights for Amazon Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_DatabaseInsights.TurningOnAdvanced.html)
+ **Amazon Aurora 사용 설명서의 [Turning on the Standard mode of Database Insights for Amazon Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_DatabaseInsights.TurningOnStandard.html)

Aurora PostgreSQL Limitless 데이터베이스에 대한 Database Insights의 고급 모드 또는 표준 모드를 활성화하는 방법에 대한 자세한 내용은 다음 주제를 참조하세요.
+ *Amazon Aurora 사용 설명서*의 [Aurora PostgreSQL Limitless Database용 Database Insights의 고급 모드 켜기](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/limitless-monitoring.cwdbi.advanced.html)
+ *Amazon Aurora 사용 설명서*의 [Aurora PostgreSQL Limitless Database용 Database Insights의 표준 모드 켜기](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/limitless-monitoring.cwdbi.standard.html)

## Database Insights의 필수 권한
<a name="w2aac26c13c31c17"></a>

Database Insights를 사용하려면 특정한 IAM 권한이 필요합니다. Database Insights를 사용하려면 CloudWatch, CloudWatch Logs, Amazon RDS, Amazon RDS Performance Insights에 대한 권한이 필요합니다. 더 광범위한 권한을 보유한 경우, 사용자 또는 역할에 이러한 권한을 제공하지 않아도 될 수 있습니다.

Database Insights를 사용하려면 다음과 같은 CloudWatch 권한이 필요합니다.
+ `cloudwatch:BatchGetServiceLevelIndicatorReport`
+ `cloudwatch:DescribeAlarms`
+ `cloudwatch:GetDashboard`
+ `cloudwatch:GetMetricData`
+ `cloudwatch:ListMetrics`
+ `cloudwatch:PutDashboard`

Database Insights를 사용하려면 다음과 같은 CloudWatch Logs 권한이 필요합니다.
+ `logs:DescribeLogGroups`
+ `logs:GetQueryResults`
+ `logs:StartQuery`
+ `logs:StopQuery`

Database Insights를 사용하려면 다음과 같은 Amazon RDS 권한이 필요합니다.
+ `rds:DescribeDBClusters`
+ `rds:DescribeDBInstances`
+ `rds:DescribeEvents`
+ `rds:DescribeDBShardGroups`(Aurora PostgreSQL Limitless Database를 사용하는 경우)

Database Insights를 사용하려면 다음가 같은 Performance Insights 권한이 필요합니다.
+ `pi:ListAvailableResourceMetrics`
+ `pi:ListAvailableResourceDimensions`
+ `pi:DescribeDimensionKeys`
+ `pi:GetDimensionKeyDetails`
+ `pi:GetResourceMetrics`
+ `pi:ListPerformanceAnalysisReports`
+ `pi:GetResourceMetadata`
+ `pi:GetPerformanceAnalysisReport`
+ `pi:CreatePerformanceAnalysisReport`
+ `pi:DeletePerformanceAnalysisReport`
+ `pi:ListTagsForResource`
+ `pi:TagResource`
+ `pi:UntagResource`

아래의 정책 샘플에는 Database Insights에 전체 액세스하는 데 필요한 권한이 포함되어 있습니다.

### 전체 액세스를 위한 정책 샘플
<a name="Database-Insights-permissions-sample"></a>

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
    "Effect" : "Allow",
      "Action" : [
        "cloudwatch:BatchGetServiceLevelIndicatorReport",
        "cloudwatch:DescribeAlarms",
        "cloudwatch:GetMetricStatistics",
        "cloudwatch:GetMetricData",
        "cloudwatch:ListMetrics",
        "cloudwatch:PutDashboard"
      ],
      "Resource" : "*"
    },
    {
    "Effect" : "Allow",
      "Action" : [
        "logs:DescribeLogGroups",
        "logs:GetQueryResults",
        "logs:StartQuery",
        "logs:StopQuery"
      ],
      "Resource" : "*"
    },
    {
    "Effect" : "Allow",
      "Action" : [
        "pi:DescribeDimensionKeys",
        "pi:GetDimensionKeyDetails",
        "pi:GetResourceMetadata",
        "pi:GetResourceMetrics",
        "pi:ListAvailableResourceDimensions",
        "pi:ListAvailableResourceMetrics",
        "pi:CreatePerformanceAnalysisReport",
        "pi:GetPerformanceAnalysisReport",
        "pi:ListPerformanceAnalysisReports",
        "pi:DeletePerformanceAnalysisReport",
        "pi:TagResource",
        "pi:UntagResource",
        "pi:ListTagsForResource"
      ],
      "Resource" : "arn:aws:pi:*:*:*/rds/*"
    },
    {
    "Effect" : "Allow",
      "Action" : [
        "rds:DescribeDBInstances",
        "rds:DescribeDBClusters",
        "rds:DescribeEvents"
      ],
      "Resource" : "*"
    }
  ]
}
```

------

# CloudWatch Database Insights에 대한 교차 계정 교차 리전 모니터링 설정
<a name="Database-Insights-Cross-Account-Cross-Region"></a>

 CloudWatch Database Insights는 교차 계정 및 교차 리전 데이터베이스 플릿 모니터링을 지원하므로, 전체 데이터베이스 AWS 인프라에서 중앙 집중식 관찰성을 지원합니다. 이를 통해 단일 통합 콘솔 환경에서 여러 AWS 계정 및 리전에 걸친 데이터베이스를 모니터링 및 문제 해결하고 최적화할 수 있습니다.

**Topics**
+ [사전 조건](#Database-Insights-Cross-Account-Cross-Region-Prereq)
+ [Database Insights 교차 계정 액세스를 위한 모니터링 및 소스 계정 설정](#Database-Insights-Cross-Account-Cross-Region-MonitoringSourceAccountSetup)
+ [교차 계정 교차 리전 콘솔을 위한 Database Insights 설정](#Database-Insights-Cross-Account-Cross-Region-setup)
+ [Database Insights 교차 계정 교차 리전 대시보드 사용](#Database-Insights-Cross-Account-Cross-Region-Using)

## 사전 조건
<a name="Database-Insights-Cross-Account-Cross-Region-Prereq"></a>
+ Database Insights 교차 계정 교차 리전에서는 우선 **CloudWatch 교차 계정 관찰성**과 **교차 계정 교차 리전 CloudWatch 콘솔**을 둘 다 설정해야 합니다. 두 가지를 모두 활성화하는 방법은 아래 지침을 참조하세요.
+ 이미 활성화한 경우에도 Database Insights가 해당 환경의 계정 및 리전에서 작동하도록 하려면 추가 데이터 공유를 구성해야 할 수 있습니다. 아래 지침을 참조하여 올바른 데이터 공유 구성을 선택했는지 확인하세요.

## Database Insights 교차 계정 액세스를 위한 모니터링 및 소스 계정 설정
<a name="Database-Insights-Cross-Account-Cross-Region-MonitoringSourceAccountSetup"></a>

1. [CloudWatch 교차 계정 관찰성](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Unified-Cross-Account-Setup.html)의 단계별 가이드를 따릅니다. 코드형 인프라 배포를 위한 CloudFormation 템플릿이 제공됩니다.

1. **1단계: 모니터링 계정 설정**에서 Database Insights가 계정 및 리전에서 작동하도록 모니터링 계정과 공유할 데이터 유형을 **로그**, **지표**, **트레이스**, **Application Signals - 서비스, 서비스 수준 목표(SLO)** 중에서 선택해야 합니다.

1. 교차 계정 교차 리전 지원을 통해 Database Insights를 설정하려는 **모든 리전**에 대해 이 프로세스를 수행해야 합니다.

## 교차 계정 교차 리전 콘솔을 위한 Database Insights 설정
<a name="Database-Insights-Cross-Account-Cross-Region-setup"></a>

1. [교차 계정 교차 리전 CloudWatch 콘솔](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Cross-Account-Cross-Region.html)의 단계별 가이드를 따릅니다.

1. **5단계: 권한**에서 모니터링 계정과 공유할 데이터 유형을 최소한 **CloudWatch 자동 대시보드 포함** 및 **Database Insights에 대한 읽기 전용 액세스 포함** 중에서 선택해야 합니다. 또는 **계정의 모든 항목에 대한 전체 읽기 전용 액세스**를 선택할 수도 있으며, 이 경우 사용 가능한 모든 데이터 소스가 포함됩니다.

1.  CloudWatch 교차 리전 콘솔은 글로벌 설정이므로, 이 단계를 한 번만 수행하면 모든 리전에서 작동합니다.

## Database Insights 교차 계정 교차 리전 대시보드 사용
<a name="Database-Insights-Cross-Account-Cross-Region-Using"></a>

 교차 계정 교차 리전 지원을 위해 Database Insights를 설정한 후 **데이터베이스 보기** 바로 아래에 있는 왼쪽 패널의 **필터** 섹션에서 '교차 계정 교차 리전 모드'를 활성화할 수 있습니다. 아래 스크린샷과 같이 왼쪽 상단 모서리에 토글 버튼이 표시됩니다.

![\[alt text not found\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/database-insights-enable-cross-account-toggle.png)


 교차 계정 교차 리전 모드가 활성화되면 새 필터를 사용할 수 있으므로 여러 리전을 선택하고 AWS 계정 ID 및 레이블, 데이터베이스 리소스 유형, 데이터베이스 리소스 식별자를 기준으로 필터링할 수 있습니다.

 기본적으로 현재 리전 및 모든 계정이 선택됩니다. 리전 및 계정 선택을 변경하면 플릿 상태 대시보드가 자동으로 업데이트되어 선택한 리전 및 계정 필터와 일치하는 리소스가 표시됩니다.

 플릿 상태 대시보드에서 다른 AWS 계정 및 리전에 속하는 인스턴스의 데이터베이스 인스턴스 대시보드로 쉽게 이동할 수 있습니다.

 Database Insights 교차 계정 교차 리전 모니터링을 사용할 때 고려해야 할 몇 가지 요소가 있습니다.
+  경보는 모니터링 계정에서만 생성해야 합니다. 경보를 소스 계정의 지표에 대해 구성할 수 있지만, 모니터링 계정에서 생성해야 합니다.
+  플릿 모니터링 보기는 모니터링 계정에서만 정의하고 저장해야 합니다.
+  Database Insights 인스턴스 대시보드의 사용자 지정 지표 대시보드는 모니터링 계정에서만 사용자 지정해야 합니다.
+  주어진 시점에 Database Insights 플릿 상태 대시보드에 허용되는 최대 리전 수는 3개입니다.
+  모니터링 계정에서는 읽기 작업만 허용됩니다. 즉, 모니터링 계정에서 성능 분석 보고서를 생성하는 건 불가능합니다.
+  플릿 상태 대시보드에서 교차 계정 교차 리전 모드가 활성화된 경우, AWS 리소스 태그 및 리소스 속성을 기준으로 필터링할 수 없습니다.

# CloudWatch Database Insights용 플릿 상태 대시보드 보기
<a name="Database-Insights-Fleet-Health-Dashboard"></a>

플릿 상태 대시보드를 사용하여 데이터베이스 플릿의 상태 스냅샷을 볼 수 있습니다.

![\[플릿 상태 대시보드\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/dbi_fhd.png)


## 플릿 상태 보기
<a name="Database-Insights-fleet-views"></a>

Database Insights의 **데이터베이스 플릿은 모니터링하려는 데이터베이스 그룹입니다. **필터** 구성 요소에서 필터를 선택하여 데이터베이스 플릿에 대한 모니터링 보기를 생성할 수 있습니다. 이 구성 요소를 사용하면 클러스터 또는 인스턴스 이름 및 태그 같은 속성에 필터를 적용할 수 있습니다. 플릿 상태 대시보드에서 CloudWatch는 플릿 상태 보기의 필터 조건 중 한 가지 이상과 일치하는 데이터베이스를 표시합니다.

![\[속성 및 태그를 기준으로 필터링\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/dbi_filter.png)


데이터베이스 플릿에 대한 보기를 생성, 수정 또는 삭제하려면 다음 주제의 절차를 사용합니다.
+ [CloudWatch Database Insights에 대한 플릿 상태 보기 생성](Database-Insights-fleet-views-create.md)
+ [CloudWatch Database Insights에 대한 플릿 상태 보기 편집](Database-Insights-fleet-views-edit.md)
+ [CloudWatch Database Insights에 대한 플릿 상태 보기 삭제](Database-Insights-fleet-views-delete.md)

## RDS 인스턴스 개요 테이블
<a name="Database-Insights-instances"></a>

**RDS instances overview** 테이블을 사용하여 플릿의 각 인스턴스에 대한 경보 상태, 최대 DB 로드 백분율, 마지막 상태 업데이트 시간을 확인할 수 있습니다.

![\[Amazon RDS 리소스 테이블\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/dbi_fhd-resources.png)


## 인스턴스 상태 요약
<a name="Database-Insights-Instances-State-Summary"></a>

**Instances state summary**를 사용하여 플릿에 있는 모든 인스턴스의 상태를 확인할 수 있습니다. Instances state summary에서는 **경보** 및 DB 로드 지표를 기준으로 2가지 보기를 제공합니다. 기본적으로 CloudWatch는 **경보** 보기를 표시합니다.

![\[인스턴스 상태 요약\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/dbi_iss.png)


Honeycomb 안의 각 노드는 인스턴스를 나타냅니다. 인스턴스에 대한 자세한 내용을 알아보려면 해당 노드를 선택하고 **Filter view by this instance**를 선택합니다.

![\[선택한 인스턴스 상태 요약\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/dbi_iss-selected.png)


Honeycomb 구성 요소는 Honeycomb 상단에 있는 각 상태의 노드 수와 함께 플릿의 인스턴스에 대한 경보 상태를 요약합니다. CloudWatch는 Honeycomb에 표시된 데이터의 마지막 새로 고침 시간을 표시합니다.

**DB 로드** 보기로 전환하면 DB 로드 지표의 관점에서 플릿의 전체 상태를 볼 수 있습니다. 데이터베이스 로드(DB 로드)는 데이터베이스의 활성 세션 수를 측정합니다. DB 로드는 Database Insights의 주요 지표이며 초당 수집됩니다. CloudWatch는 DB 로드에 대한 임곗값을 기준으로 DB 인스턴스를 다음과 같은 상태로 분류합니다.
+ 높음
+ 경고
+ Ok
+ 유휴

해당하는 상태 아이콘을 선택하여 DB 로드의 임곗값을 볼 수 있습니다.

mazon RDS의 DB 로드에 대한 내용은 **Amazon Aurora 사용 설명서의 [데이터베이스 부하](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.Overview.ActiveSessions.html)를 참조하세요. Amazon Aurora의 DB 로드에 대한 자세한 내용을 알아보려면 **Amazon Aurora 사용 설명서의 [데이터베이스 부하](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_PerfInsights.Overview.ActiveSessions.html) 섹션을 참조하세요.

기본적으로 CloudWatch는 평균 DB 로드를 표시합니다. **최대**를 선택하여 각 인스턴스의 최대 DB 로드를 모니터링할 수 있습니다.

Instances state summary에서 노드를 선택하여 인스턴스에 대한 경보 및 DB 로드를 표시할 수 있습니다.

## 상위 10개 차트
<a name="Database-Insights-Top-Ten"></a>

**상대 DB 로드당 상위 10개의 인스턴스** 차트를 사용하여 DB 로드가 가장 높은 인스턴스 10개의 시간 경과에 따른 DB 로드 추세를 볼 수 있습니다. 이 차트는 DB 로드가 가장 높은 인스턴스에 대한 상위 쿼리 및 상위 대기 이벤트도 제공합니다.

![\[DB 로드별 상위 10개 인스턴스 차트\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/dbi_top10.png)


**Top 10 instances per metric** 차트를 사용하여 플릿의 상위 10개 인스턴스에 대한 2가지 주요 지표를 비교할 수 있습니다. 선택할 수 있는 지표는 다음과 같습니다.
+ CPU 사용률(%)
+ 여유 메모리(%)
+ DB 연결(%)
+ 네트워크 처리량
+ 읽기 IOPS
+ IOPS 쓰기
+ 읽기 지연 시간
+ 쓰기 지연 시간

![\[지표당 상위 10개 인스턴스 차트\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/dbi_fhd-top10per.png)


## Amazon RDS 이벤트
<a name="Database-Insights-Events"></a>

**이벤트** 요약 및 테이블을 사용하여 플릿의 인스턴스에 대한 RDS 이벤트를 볼 수 있습니다.

![\[이벤트 요약\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/dbi_events.png)


**이벤트** 테이블을 보려면 **세부 정보**를 선택합니다.

![\[이벤트 세부 정보\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/dbi_events-details.png)


Amazon RDS 및 Amazon Aurora의 이벤트 목록은 다음 주제를 참조하세요.
+ *Amazon Aurora 사용 설명서*의 [Amazon RDS 이벤트 카테고리 및 Aurora용 이벤트 메시지](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_Events.Messages.html)
+ *Amazon RDS 사용 설명서*의 [Amazon RDS 이벤트 카테고리 및 이벤트 메시지](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Events.Messages.html)

## 직접 호출 서비스 테이블
<a name="Database-Insights-Calling-Services"></a>

**직접 호출 서비스** 테이블을 사용하여 데이터베이스 엔드포인트를 직접적으로 호출하는 CloudWatch Application Signals 서비스 및 관련된 애플리케이션 수준 지표(예: 지연 시간 또는 오류)를 볼 수 있습니다.

![\[직접 호출 서비스 테이블\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/dbi_fhd-calling.png)


Database Insights에서는 DB 로드별로 상위 10개 인스턴스를 직접적으로 호출하는 서비스를 보여줍니다. 다른 인스턴스에 대한 직접 호출 서비스를 보려면 데이터베이스 인스턴스 대시보드에서 해당 인스턴스를 선택합니다.

애플리케이션에서 직접적으로 호출하는 엔드포인트가 Aurora 클러스터인 경우 Database Insights는 개별 데이터베이스 인스턴스가 아니라 **직접 호출 서비스** 테이블에 Aurora 클러스터의 라이터 또는 리더 엔드포인트를 표시합니다. 그러나 애플리케이션에서 직접적으로 호출하는 엔드포인트가 Amazon RDS 클러스터인 경우 Database Insights는 애플리케이션이 Amazon RDS 클러스터 내에서 직접적으로 호출하는 특정 데이터베이스 인스턴스를 표시합니다.

CloudWatch Application Signals에 대한 자세한 내용은 [Application Signals](CloudWatch-Application-Monitoring-Sections.md) 섹션을 참조하세요.

# CloudWatch Database Insights에 대한 플릿 상태 보기 생성
<a name="Database-Insights-fleet-views-create"></a>

플릿 상태 보기를 생성하려면 다음 절차를 사용합니다.

**플릿 상태 보기를 생성하려면**

1. AWS Management Console에 로그인하고 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)에서 CloudWatch 콘솔을 엽니다.

1. **인사이트**를 선택합니다.

1. **Database Insights**를 선택합니다.

1. 모니터링할 데이터베이스의 플릿에 대한 필터를 선택합니다.

1. **Save filter as fleet**을 선택합니다.

1. **Save filter set (fleet)** 창에서 플릿의 이름을 입력합니다.

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

저장된 플릿에 액세스하려면 **Saved fleets** 드롭다운을 선택합니다. 그런 다음, 플릿을 선택합니다.

# CloudWatch Database Insights에 대한 플릿 상태 보기 편집
<a name="Database-Insights-fleet-views-edit"></a>

플릿 상태 보기를 편집하려면 다음 절차를 사용합니다.

**플릿 상태 보기를 편집하려면**

1. AWS Management Console에 로그인하고 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)에서 CloudWatch 콘솔을 엽니다.

1. **인사이트**를 선택합니다.

1. **Database Insights**를 선택합니다.

1. **Saved fleets** 드롭다운을 선택합니다.

1. 편집하려는 플릿 상태 보기의 세로 줄임표를 선택합니다.

1. **Edit filter set (fleet)** 창에서 플릿의 이름과 플릿의 필터를 편집할 수 있습니다.

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

# CloudWatch Database Insights에 대한 플릿 상태 보기 삭제
<a name="Database-Insights-fleet-views-delete"></a>

플릿 상태 보기를 삭제하려면 다음 절차를 사용합니다.

**플릿 상태 보기를 삭제하려면**

1. AWS Management Console에 로그인하고 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)에서 CloudWatch 콘솔을 엽니다.

1. **인사이트**를 선택합니다.

1. **Database Insights**를 선택합니다.

1. **Saved fleets** 드롭다운을 선택합니다.

1. 삭제하려는 플릿 상태 보기의 세로 줄임표를 선택합니다.

1. **Delete filter set (fleet)** 창에서 **삭제** 버튼을 선택합니다.

# CloudWatch Database Insights용 데이터베이스 인스턴스 대시보드 보기
<a name="Database-Insights-Database-Instance-Dashboard"></a>

데이터베이스 인스턴스 대시보드를 사용하여 DB 인스턴스의 상태 스냅샷을 볼 수 있습니다.

Amazon Aurora PostgreSQL에 대한 잠금 트리 및 실행 계획을 분석하려면 다음 주제를 참조하세요.

**주제**
+ [CloudWatch Database Insights에서 Amazon Aurora PostgreSQL 및 Amazon RDS for PostgreSQL에 대한 잠금 트리 분석](Database-Insights-Lock-Analysis.md)
+ [CloudWatch Database Insights에서 실행 계획 분석](Database-Insights-Execution-Plans.md)

## 데이터베이스 로드 차트
<a name="Database-Insights-database-load"></a>

*데이터베이스 로드(DB 로드)*는 데이터베이스의 세션 활동 수준을 측정합니다. DB 로드는 Database Insights의 주요 지표이며, Database Insights는 초당 DB 로드를 수집합니다.

![\[데이터베이스 인스턴스 대시보드\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/dbi_did.png)


DB 로드에 대한 자세한 내용은 **Amazon RDS 사용 설명서의 [데이터베이스 로드](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.Overview.ActiveSessions.html) 또는 **Amazon Aurora 사용 설명서의 [데이터베이스 로드](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_PerfInsights.Overview.ActiveSessions.html)를 참조하세요.

다음과 같은 차원으로 분할(그룹화)된 모든 지원되는 데이터베이스 엔진의 DB 로드를 보려면 **데이터베이스 로드** 차트를 사용합니다.
+ 객체 차단([분석 잠금을 지원하는 데이터베이스 엔진](Database-Insights-Lock-Analysis.md)에만 해당)
+ 세션 차단([분석 잠금을 지원하는 데이터베이스 엔진](Database-Insights-Lock-Analysis.md)에만 해당)
+ SQL 차단([분석 잠금을 지원하는 데이터베이스 엔진](Database-Insights-Lock-Analysis.md)에만 해당)
+ 데이터베이스
+ Host
+ SQL
+ User
+ 대기
+ 애플리케이션(Amazon Aurora PostgreSQL에만 해당)
+ 계획([실행 계획 캡처를 지원하는 데이터베이스 엔진](Database-Insights-Execution-Plans.md)에만 해당)
+ 세션 유형(Amazon Aurora PostgreSQL에만 해당)

**참고**  
Amazon RDS의 Oracle PDB 로드 분석에 대한 내용은 **Amazon RDS 사용 설명서의 [상위 Oracle PDB 로드 분석](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.UsingDashboard.AnalyzeDBLoad.TopPDB.html)을 참조하세요.

![\[데이터베이스 인스턴스 대시보드의 DB 로드\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/dbi_did-dbload.png)


기본적으로 CloudWatch는 DB 로드를 막대 차트로 표시합니다. DB 로드를 누적된 선형 차트로 표시하려면 **선**을 선택합니다.

![\[데이터베이스 인스턴스 대시보드의 DB 로드에 대한 선형 그래프\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/dbi_did-dbload-line.png)


## DB 로드 분석 탭
<a name="Database-Insights-DB-load-analysis"></a>

**DB 로드 분석** 탭을 사용하여 아래의 각 측정기준에 대해 DB 로드의 상위 기여자를 모니터링합니다.
+ 데이터베이스
+ Host
+ SQL
+ User
+ 대기
+ 분석 잠금([분석 잠금을 지원하는 데이터베이스 엔진](Database-Insights-Lock-Analysis.md)에만 해당)
+ 애플리케이션(Amazon Aurora PostgreSQL에만 해당)
+ 세션 유형(Amazon Aurora PostgreSQL에만 해당)

![\[DB 로드 분석 탭을 보여주는 대시보드\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/dbi_lat.png)


## 쿼리에 대한 통계 분석
<a name="Database-Insights-sql-stats"></a>

DB 로드가 높은 쿼리에 대한 통계를 분석할 수 있습니다. 쿼리에 대한 통계를 분석하려면 아래의 절차를 사용합니다.

**쿼리에 대한 통계를 분석하려면 다음을 수행합니다.**

1. AWS Management Console에 로그인하고 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)에서 CloudWatch 콘솔을 엽니다.

1. **인사이트**를 선택합니다.

1. **Database Insights**를 선택합니다.

1. **데이터베이스 인스턴스** 보기를 선택합니다.

1. DB 인스턴스를 선택합니다.

1. **상위 SQL(Top SQL)** 탭을 선택합니다.

1. 쿼리에 대한 통계를 보려면 쿼리를 선택합니다.  
![\[상위 SQL 탭에 표시되는 테이블입니다.\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/DBInsights_LoadTopSQL.png)

## 데이터베이스 원격 측정 탭
<a name="Database-Insights-database-telemetry"></a>

선택한 인스턴스의 지표, 로그, 이벤트 및 느린 쿼리를 보려면 **데이터베이스 원격 측정** 탭을 사용합니다.

### 데이터베이스 원격 측정에 대한 지표 섹션
<a name="Database-Insights-metrics-tel"></a>

**지표** 섹션에는 각 엔진 유형에 맞게 사용자 지정된 기본 지표 대시보드가 표시됩니다.

OS 지표, 데이터베이스 카운터 지표 및 CloudWatch 지표를 추가하여 이 대시보드를 사용자 지정할 수 있습니다. 대시보드에서 지표를 제거할 수도 있습니다. 계정의 리전에 있는 각 엔진 유형에 대해 하나의 대시보드를 사용자 지정할 수 있습니다. 즉, 동일 계정의 해당 리전에 있는 특정 엔진 유형의 모든 인스턴스가 동일한 지표 대시보드를 갖게 됩니다.

계정의 대시보드에 편집 권한을 가진 사용자는 모든 엔진의 대시보드를 편집할 수 있습니다.

대시보드에 대한 변경 사항은 자동으로 저장되며 해당 리전 및 계정에 있는 데이터베이스 엔진의 모든 인스턴스에 적용됩니다.

![\[다양한 유형의 데이터베이스 지표의 예를 보여주는 대시보드.\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/dbi_dbmetrics.png)


**데이터베이스 원격 측정 탭에서 엔진 유형에 대한 대시보드 사용자 지정**

1. AWS Management Console에 로그인하고 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)에서 CloudWatch 콘솔을 엽니다.

1. **인사이트**, **데이터베이스 인사이트**를 선택합니다.

1. **데이터베이스 보기**에서 **데이터베이스 인스턴스**를 선택합니다.

1. **필터** 섹션에서 지표를 보려는 데이터베이스 인스턴스를 찾아 선택합니다.

1. **데이터베이스 원격 측정** 탭을 선택한 후 **지표** 탭을 선택합니다.

   기본 데이터베이스 인스턴스 대시보드가 나타납니다.

1. 대시보드에 위젯을 추가하려면 다음을 수행합니다.

   1. **위젯 생성 추가**를 선택합니다.

   1. **위젯 생성** 팝업에서, 추가할 지표를 찾고 각 지표의 확인란을 선택합니다. 이 단계에서 여러 지표를 선택하면 대시보드의 동일한 새 위젯에 지표가 모두 표시됩니다. 그런 다음 **위젯 생성**을 선택합니다.

      이 대시보드에 대한 모든 변경 사항은 계정의 이 리전에 있는 이 엔진 유형에 대한 모든 Database Insights 대시보드에 적용됩니다.

1. 대시보드에서 그래프를 삭제하려면 위젯에서 세로 줄임표를 선택한 후 **삭제**를 선택합니다.

1. 대시보드의 기존 위젯에 지표를 더 추가하거나 제목을 변경하려면 위젯에서 세로 줄임표를 선택한 후 **편집**을 선택합니다. 그런 다음 **위젯 업데이트** 팝업에서 추가할 지표를 찾고 해당 확인란을 선택한 후 **위젯 업데이트**를 선택합니다. 위젯 제목을 변경할 수도 있습니다.

1. 대시보드를 사용자 지정한 후 **대시보드 재설정**을 선택하여 원래 기본 상태로 재설정할 수 있습니다.

### 데이터베이스 원격 측정에 대한 로그 섹션
<a name="Database-Insights-logs-tel"></a>

**로그** 섹션에서는 선택한 DB 인스턴스에 대해 CloudWatch Logs로 내보낸 데이터베이스 로그를 볼 수 있습니다.

![\[데이터베이스 인스턴스 대시보드의 데이터베이스 원격 측정\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/dbi_did-telemetry-logs.png)


로그를 CloudWatch Logs for Amazon RDS에 게시하는 방법에 대한 내용은 **Amazon RDS 사용 설명서의 [Amazon CloudWatch Logs에 데이터베이스 로그 게시](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.Procedural.UploadtoCloudWatch.html)를 참조하세요. 로그를 CloudWatch Logs for Amazon Aurora에 게시하는 방법에 대한 내용은 **Amazon Aurora 사용 설명서의 [Amazon CloudWatch Logs에 데이터베이스 로그 게시](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_LogAccess.Procedural.UploadtoCloudWatch.html) 섹션을 참조하세요.

Aurora PostgreSQL Limitless Database의 경우 로그는 CloudWatch Logs에 자동으로 게시되며 Database Insights 콘솔에서 검색할 수 있습니다.

### 데이터베이스 원격 측정에 대한 OS 프로세스 데이터
<a name="Database-Insights-OS-processes"></a>

**데이터베이스 원격 측정** 탭 내 **OS 프로세스** 탭을 사용하여 DB 인스턴스가 실행되는 운영 체제(OS)에 대한 지표를 볼 수 있습니다. 지표에서는 지정된 타임스탬프에 데이터베이스에서 실행되는 OS 프로세스의 스냅샷과 각 실행 프로세스의 메모리 및 CPU 사용률과 같은 주요 지표를 제공합니다. Database Insights는 이러한 지표를 데이터베이스 로드 차트의 지표와 상호 연관시키므로 데이터베이스 로드 차트에서 데이터 포인트를 선택하면 동일한 타임스탬프의 원격 측정을 표시하도록 OS 프로세스 데이터가 업데이트됩니다.

데이터 포인트를 선택하면 Database Insights는 전체 페이지에 대해 선택한 시간 범위에 따라 표시할 기간을 자동으로 선택합니다. 이동할 수 있는 가장 오래된 시점은 `RDSOSMetrics` 로그 그룹에 대해 구성한 보존 시간에 따라 달라집니다.

타임스탬프를 선택하지 않으면 기본적으로 최신 타임스탬프의 원격 측정으로 테이블이 채워집니다.

**참고**  
OS 프로세스 정보는 [Amazon RDS Enhanced Monitoring](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_PerfInsights_Counters.html)이 활성화된 경우에만 사용할 수 있습니다. Enhanced Monitoring에는 추가 요금이 적용됩니다. 자세한 내용은 [Enhanced Monitoring 비용](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_Monitoring.OS.html#USER_Monitoring.OS.cost)을 참조하세요. Aurora PostgreSQL Limitless Database에서 향상된 모니터링은 자동으로 활성화됩니다.

![\[이벤트 테이블\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/dbinsights-osprocesses.png)


**OS 프로세스** 보기에서 각 프로세스에 대한 다음 데이터가 표시됩니다.
+ **프로세스 ID** - 이 프로세스의 ID.
+ **가상 메모리** - 프로세스에 할당된 가상 메모리 크기(키비바이트).
+ **잔존 주소** - 프로세스에서 사용 중인 실제 물리적 메모리.
+ **CPU %** – 프로세스에서 사용 중인 총 CPU 대역폭의 백분율.
+ **메모리 %** - 프로세스에서 사용 중인 총 메모리의 백분율.
+ **VM 제한** - 프로세스에 할당할 수 있는 최대 가상 메모리 크기.

  이 열의 값이 0이면 해당 프로세스에 VM 제한이 적용되지 않습니다.

표시되는 모니터링 데이터는 Amazon CloudWatch Logs에서 검색됩니다. CloudWatch Logs의 로그 스트림에서 직접 이러한 지표를 검색할 수도 있습니다. 자세한 내용은 [CloudWatch Logs을 사용하여 OS 지표 보기](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.CloudWatchLogs.html)를 참조하세요.

OS 프로세스 지표는 다음 기간에 반환되지 않습니다.
+ 데이터베이스 인스턴스의 장애 조치.
+ 데이터베이스 인스턴스의 인스턴스 클래스 변경(컴퓨팅 규모 조정).

데이터베이스 인스턴스가 재부팅되는 동안 OS 프로세스 지표가 반환됩니다. 데이터베이스 엔진만 재부팅되기 때문입니다. 운영 체제의 측정치는 계속 보고됩니다.

### 데이터베이스 원격 측정을 위한 느린 SQL 쿼리 섹션
<a name="Database-Insights-slow-sql-tel"></a>

느린 SQL 쿼리 및 쿼리 패턴을 보려면 CloudWatch Logs에 로그 내보내기를 활성화하고, 데이터베이스에 대한 DB 파라미터를 구성해야 합니다.

로그를 Amazon RDS logs to CloudWatch Logs에 게시하는 방법에 대한 내용은 **Amazon RDS 사용 설명서의 [Amazon CloudWatch Logs에 데이터베이스 로그 게시](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.Procedural.UploadtoCloudWatch.html)를 참조하세요.

Aurora 로그를 CloudWatch Logs에 게시하는 방법에 대한 내용은 **Amazon Aurora 사용 설명서의 [Amazon CloudWatch Logs에 데이터베이스 로그 게시](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_LogAccess.Procedural.UploadtoCloudWatch.html)를 참조하세요.

Amazon RDS의 데이터베이스에 대한 DB 파라미터 구성에 대한 내용은 **Amazon Aurora 사용 설명서의 [Amazon RDS용 Database Insights를 사용하여 느린 SQL 쿼리를 모니터링하도록 데이터베이스 구성](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_DatabaseInsights.SlowSQL.html)을 참조하세요.

Amazon Aurora의 데이터베이스에 대한 DB 파라미터 구성에 대한 내용은 **Amazon Aurora 사용 설명서의 [Amazon Aurora용 Database Insights를 사용하여 느린 SQL 쿼리를 모니터링하도록 데이터베이스 구성](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_DatabaseInsights.SlowSQL.html)을 참조하세요.

**Slow SQL Queries** 섹션에서는 빈도별로 정렬된 느린 쿼리 패턴 목록을 제공합니다. 패턴을 선택하면 선택한 패턴과 일치하는 느린 쿼리 목록을 볼 수 있습니다. 느린 쿼리 목록을 사용하여 DB 인스턴스에 영향을 미치는 느린 쿼리를 식별할 수 있습니다.

Database Insights에서는 느린 쿼리에 대한 통계를 표시합니다. 통계는 구성된 느린 쿼리 기간 임곗값을 초과하는 쿼리만 나타냅니다.

![\[느린 SQL 쿼리의 예에 대한 세부 정보 표시\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/dbi_slowsql.png)


**중요**  
느린 쿼리에는 민감한 데이터가 포함될 수 있습니다. CloudWatch Logs로 민감한 데이터를 마스킹해야 합니다. 로그 데이터 마스킹에 대한 자세한 내용은 **Amazon CloudWatch Logs 사용 설명서의 [Help protect sensitive log data with masking](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/mask-sensitive-log-data.html) 섹션을 참조하세요.

### 이벤트 테이블
<a name="Database-Insights-events-tel"></a>

**이벤트** 테이블을 사용하여 DB 인스턴스에 대한 RDS 이벤트를 볼 수 있습니다. Amazon Aurora에 대한 이벤트 목록은 Amazon Aurora 사용 설명서**의 [Amazon RDS 이벤트 카테고리 및 Aurora용 이벤트 메시지](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_Events.Messages.html) 섹션을 참조하세요. Amazon Relational Database Service에 대한 이벤트 목록은 **Amazon RDS 사용 설명서의 [Amazon RDS 이벤트 카테고리 및 Aurora용 이벤트 메시지](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_Events.Messages.html)를 참조하세요.

![\[이벤트 테이블\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/dbi_did-events.png)


## 직접 호출 서비스 탭
<a name="Database-Insights-calling"></a>

Database Insights에서는 인스턴스를 직접적으로 호출하는 서비스와 작업을 보여줍니다. Database Insights는 CloudWatch Application Signals와 통합되어 가용성, 지연 시간, 오류, 볼륨을 비롯하여 각 서비스 및 작업에 대한 지표를 제공합니다.

애플리케이션에서 직접적으로 호출하는 엔드포인트가 Aurora 클러스터인 경우 Database Insights는 개별 데이터베이스 인스턴스가 아니라 **직접 호출 서비스** 테이블에 Aurora 클러스터의 라이터 또는 리더 엔드포인트를 표시합니다. 그러나 애플리케이션에서 직접적으로 호출하는 엔드포인트가 Amazon RDS 클러스터인 경우 Database Insights는 애플리케이션이 Amazon RDS 클러스터 내에서 직접적으로 호출하는 특정 데이터베이스 인스턴스를 표시합니다.

![\[직접 호출 서비스 탭\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/dbi_did-calling.png)


## CloudWatch Database Insights를 사용하여 온디맨드로 데이터베이스 성능 분석
<a name="Database-Insights-On-demand-Analysis"></a>

CloudWatch Database Insights를 사용하여 Amazon RDS 데이터베이스에 대한 온디맨드 분석을 통해 데이터베이스 성능을 분석할 수 있습니다.

**데이터베이스 로드** 차트의 오른쪽 상단에서 **성능 분석**을 선택하여 온디맨드 성능 분석을 실행할 수 있습니다. 보고서는 선택한 기간 동안 실행됩니다. **성능 분석** 탭을 사용하여 플릿의 데이터베이스에 대한 성능 분석 보고서를 볼 수 있습니다.

![\[성능 분석 탭\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/dbi_dl-perfanalysis.png)


Amazon Aurora의 성능 분석 보고서에 대한 자세한 내용은 **Amazon Aurora 사용 설명서의 [일정 기간 동안의 데이터베이스 성능 분석](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_PerfInsights.UsingDashboard.AnalyzePerformanceTimePeriod.html) 섹션을 참조하세요.

## CloudWatch Database Insights를 CloudWatch Application Signals와 통합
<a name="Database-Insights-Integration-Application-Signals"></a>

CloudWatch Database Insights를 CloudWatch Application Signals와 통합합니다.

**직접 호출 서비스** 탭을 사용하여 선택된 인스턴스의 엔드포인트를 직접적으로 호출한 CloudWatch Application Signals 서비스 및 작업을 볼 수 있습니다. 기본적으로 CloudWatch는 장애 발생률을 기준으로 테이블을 정렬합니다. **서비스**, **작업** 또는 **엔드포인트 주소** 열의 값을 선택하여 CloudWatch Application Signals 콘솔에서 해당 리소스를 확인합니다.

CloudWatch Application Signals에 지원되는 시스템에 대한 자세한 내용은 [지원되는 시스템](CloudWatch-Application-Signals-supportmatrix.md) 섹션을 참조하세요.

# CloudWatch Database Insights에서 Amazon Aurora PostgreSQL 및 Amazon RDS for PostgreSQL에 대한 잠금 트리 분석
<a name="Database-Insights-Lock-Analysis"></a>

잠금으로 인한 성능 문제를 해결하기 위해 CloudWatch Database Insights에서 다음을 사용하여 Amazon Aurora PostgreSQL 및 Amazon RDS for PostgreSQL 데이터베이스의 잠금 트리를 분석할 수 있습니다.
+ **슬라이스된 기준** 드롭다운 - **데이터베이스 로드** 차트에서 **객체 차단**, **세션 차단** 또는 **SQL 차단** 차원을 선택하여 시간이 지남에 따라 고유한 상위 블로커가 DB 로드에 어떻게 기여하는지 확인합니다. DB 로드 차트를 사용하면 상위 블로커가 일정한지 아니면 자주 변경되는지 분석할 수 있습니다. 그런 후에 블로커 문제를 해결할 수 있습니다.  
![\[분할 기준 드롭다운에서 세션 차단이 선택된 상위 SQL 테이블\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/DBInsights_TopSQLBlocking.png)
+ **분석 잠금** 탭 - **DB 로드 분석**을 선택한 다음에 **분석 잠금** 탭을 선택하여 데이터베이스의 잠금 경합에 대한 내용을 봅니다.  
![\[데이터베이스 로드 대시보드의 잠금 트리 테이블\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/DBInsights_LoadLockAnalysis.png)

**참고**  
CloudWatch Database Insights는 모든 Aurora PostgreSQL 버전에 대한 분석 잠금을 지원합니다. 잠금 트리를 분석하려면 Database Insights 고급 모드가 활성화되어 있어야 합니다. 고급 모드를 켜는 방법에 대한 내용은 [Amazon Aurora용 Database Insights의 고급 모드 켜기](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_DatabaseInsights.TurningOnAdvanced.html)와 [Amazon Relational Database Service용 Database Insights의 고급 모드 켜기](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_DatabaseInsights.TurningOnAdvanced.html)를 참조하세요.

잠금 분석 탭에서는 데이터베이스의 잠금 경합에 대한 정보를 제공합니다. 잠금 트리 시각화에서는 서로 다른 세션에서 잠금 요청 간 관계와 종속성을 보여줍니다.

Database Insights는 15초마다 스냅샷을 캡처합니다. 스냅샷은 특정 시점에 데이터베이스에 대한 잠금 데이터를 표시합니다.

**참고**  
CloudWatch가 높은 잠금을 감지하면 CloudWatch에 **분석 잠금** 탭에 대한 **높은 잠금 감지됨** 배너가 표시됩니다. CloudWatch가 연속 15분 동안 15초 간격으로 잠금 스냅샷을 생성하는 경우 CloudWatch는 높은 잠금을 감지합니다.

트리의 각 노드는 특정 세션을 나타냅니다. 상위 노드는 하위 노드를 차단하는 세션입니다.

잠금 트리를 분석하려면 다음 절차를 사용합니다.

**잠금 트리를 분석하는 방법**

1. AWS Management Console에 로그인하고 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)에서 CloudWatch 콘솔을 엽니다.

1. **인사이트**를 선택합니다.

1. **Database Insights**를 선택합니다.

1. **데이터베이스 인스턴스** 보기를 선택합니다.

1. DB 인스턴스를 선택합니다.

1. **DB 로드 분석** 탭을 선택하세요.

1. **분석 잠금** 탭을 선택합니다.

   DB 인스턴스의 잠금 데이터를 보려면 1일 이하의 기간을 선택하세요.

1. 스냅샷 기간을 선택하세요. 기본적으로 Database Insights는 세션이 가장 많이 차단된 스냅샷 기간을 선택합니다.  
![\[잠금 분석 테이블\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/dbi_lock-analysis.png)

1. 스냅샷의 잠금 데이터를 보려면 Database Insights가 스냅샷을 생성한 시간을 선택하세요.

1. 잠금 트리를 확장하려면 세션 ID 옆의 화살표를 선택하세요.  
![\[잠금 트리 확장됨\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/dbi_lock-analysis-expand.png)

## 잠금 스냅샷 데이터
<a name="Database-Insights-Lock-Analysis-snapshot-data"></a>

Database Insights는 각 잠금 요청에 대해 다음 정보를 제공합니다. 기본적으로 활성화되지 않은 열을 보려면 **트리 잠금** 테이블의 **설정** 아이콘을 선택하고 다른 열을 활성화합니다.


| 열 이름 | 정의  | 기본 열 | 참고 | 
| --- | --- | --- | --- | 
|  `session_id`  | 고유한 세션 식별자. |  예  | `session_id`는 `HEX(pg_stat_activity.backend_start).HEX(pg_locks.pid)`에서 파생됩니다. | 
|  `pid`  | 이 백엔드의 PID. |  예  | `pg_locks.pid` | 
|  `blocked_sessions_count`  | 이 잠금으로 차단된 세션 수. |  예  | `blocked_sessions_count`는 이 잠금으로 차단된 세션 ID 수에서 파생됩니다. | 
|  `last_query_executed`  | 이 세션에서 실행한 마지막 쿼리. 블로커의 경우 차단 잠금을 보류하는 쿼리가 아닐 수 있습니다. |  예  | `pg_stat_activity.query` | 
|  `wait_event`  | 백엔드가 현재 대기 중인 경우 대기 이벤트 이름. 그렇지 않은 경우 값은 NULL입니다. |  예  | `pg_stat_activity.wait_event` | 
|  `blocking_time_(In Seconds)`  | 이 잠금이 시작된 이후 시간(초). |  예  | `blocking_time_(In Seconds)`는 첫 번째 대기자에 대한 대기 트랜잭션(`pg_locks.waitstart`)의 시작 시간에서 파생됩니다. | 
|  `blocking_mode`  | 차단 세션이 보류한 잠금 모드. |  아니요  | `pg_locks.mode` | 
|  `waiting_mode`  | 대기 세션에서 요청한 잠금 모드. |  아니요  | `pg_locks.mode` | 
|  `application`  | 이 백엔드에 연결된 애플리케이션 이름. |  아니요  | `pg_stat_activity.application_name` | 
|  `blocking_txn_start_time`  | 활성 트랜잭션이 없는 경우 차단 트랜잭션의 시작 시간 또는 null. |  아니요  | `pg_stat_activity.xact_start` | 
|  `waiting_start_time`  | 대기 중인 사용자 세션이 이 잠금을 기다리기 시작한 시간 또는 잠금이 보류된 경우 null. |  아니요  | `pg_locks.waitstart` | 
|  `session_start_time`  | 사용자 세션이 시작된 시간. |  아니요  | `pg_stat_activity.backend_start` | 
|  `state`  | 백엔드 상태. |  아니요  | `pg_stat_activity.state` | 
|  `wait_event_type`  | 이 세션이 대기 중인 대기 이벤트 유형. |  아니요  | `pg_stat_activity.wait_event_type` | 
|  `last_query_exec_time`  | 마지막 쿼리가 시작된 시간. |  아니요  | `pg_stat_activity.query_start` | 
|  `user`  | 이 백엔드에 로그인한 사용자 이름. |  아니요  | `pg_stat_activity.usename` | 
|  `host`  | `client_addr`의 역방향 DNS 조회에서 보고한 연결된 클라이언트의 호스트 이름. 이 필드는 IP 연결의 경우 그리고 [log\$1hostname](https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-HOSTNAME)이 활성화된 경우에만 null이 아닙니다. |  아니요  | `pg_stat_activity.client_hostname` | 
|  `port`  | 이 백엔드와의 통신에 클라이언트가 사용 중인 TCP 포트 번호 또는 Unix 소켓이 사용되는 경우 `-1`. 이 필드가 null이면 내부 서버 프로세스임을 나타냅니다. |  아니요  | `pg_stat_activity.client_port` | 
|  `client_address`  | 이 백엔드에 연결된 클라이언트의 IP 주소. 이 필드가 null이면 클라이언트가 서버 시스템에서 Unix 소켓을 통해 연결되었거나 autovacuum과 같은 내부 프로세스임을 나타냅니다. |  아니요  | `pg_stat_activity.client_addr` | 
|  `granted`  | 잠금이 보류된 경우 값은 true이고 잠금이 대기 중인 경우 false입니다. |  아니요  | `pg_locks.granted` | 
|  `waiting_tuple`  |  페이지 내 잠금이 대상으로 지정한 튜플 번호 또는 대상이 튜플이 아닌 경우 null.  |  아니요  | `pg_locks.tuple` | 
|  `waiting_page`  | 관계 내에서 잠금이 대상으로 지정한 페이지 번호 또는 대상이 관계 페이지나 튜플이 아닌 경우 null. |  아니요  | `pg_locks.page` | 
|  `waiting_transaction_id`  | 잠금이 대상으로 지정한 트랜잭션의 ID 또는 대상이 트랜잭션 ID가 아닌 경우 null. |  아니요  | `pg_locks.transactionid` | 
|  `waiting_relation`  | 잠금이 대상으로 지정한 관계의 OID 또는 대상이 관계나 관계의 일부가 아닌 경우 null. |  아니요  | `pg_locks.relation` | 
|  `waiting_object_id`  | 시스템 카탈로그 내 잠금 대상의 OID 또는 대상이 일반 데이터베이스 객체가 아닌 경우 null. |  아니요  | `pg_locks.objid` | 
|  `waiting_database_id`  | 잠금 대상이 있는 데이터베이스의 OID, 대상이 공유 객체인 경우 0 또는 대상이 트랜잭션 ID인 경우 null. |  아니요  | `pg_locks.database` | 
|  `waiting_database_name`  | 잠금 테이블이 있는 데이터베이스의 이름. |  아니요  | `pg_stat_activity.datname` | 
|  `waiting_locktype`  | 잠금 가능한 객체 유형: relation, extend, frozenid, page, tuple, transactionid, virtualxid, spectoken, object, userlock, advisory, or applytransaction. |  아니요  | `pg_locks.locktype` | 
|  `is_fastpath`  | 이 값은 빠른 경로로 잠금을 수행한 경우 true, 기본 잠금 테이블에서 잠금을 가져온 경우 false입니다. |  아니요  | `pg_locks.fastpath` | 

`pg_stat_activity` 및 `pg_locks` 보기의 값에 대한 자세한 내용은 PostgreSQL 설명서의 다음 주제를 참조하세요.
+ [pg\$1locks](https://www.postgresql.org/docs/current/view-pg-locks.html)
+ [pg\$1stat\$1activity](https://www.postgresql.org/docs/current/monitoring-stats.html#MONITORING-PG-STAT-ACTIVITY-VIEW)

# CloudWatch Database Insights에서 실행 계획 분석
<a name="Database-Insights-Execution-Plans"></a>

다음과 같은 방법을 사용하여 Amazon Aurora PostgreSQL, RDS for Microsoft SQL Server 및 RDS for Oracle 데이터베이스의 실행 계획을 분석할 수 있습니다.
+ **슬라이스된 기준** 드롭다운 - **데이터베이스 로드** 차트에서 **계획** 차원을 선택하여 시간이 지남에 따라 여러 계획이 DB 로드에 어떻게 기여하는지 확인합니다.
+ **상위 SQL** 탭 - **DB 로드 분석**을 선택한 다음 **상위 SQL** 탭을 선택하여 각 다이제스트 쿼리의 계획 수를 확인합니다.

  다이제스트 쿼리의 실행 계획을 분석하려면 쿼리를 선택한 다음 **계획** 탭을 선택합니다. 자세한 내용은 다음 절차를 참조하세요.

## 사전 조건
<a name="Database-Insights-Execution-Plans-prereqs"></a>

실행 계획을 분석하려면 Database Insights의 고급 모드를 사용해야 합니다. 고급 모드를 켜는 방법에 대한 내용은 [Amazon Aurora용 Database Insights의 고급 모드 켜기](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_DatabaseInsights.TurningOnAdvanced.html)와 [Amazon Relational Database Service용 Database Insights의 고급 모드 켜기](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_DatabaseInsights.TurningOnAdvanced.html)를 참조하세요.

Aurora PostgreSQL을 사용 중이라면 다음과 같은 사전 조건도 있습니다.
+ DB 인스턴스에서는 Aurora PostgreSQL 버전 14.10, 15.5 이상이 사용되어야 합니다. Aurora PostgreSQL DB 클러스터 업그레이드에 대한 자세한 내용은 *Amazon Aurora 사용 설명서*의 [Amazon Aurora PostgreSQL DB 클러스터 업그레이드](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_UpgradeDBInstance.PostgreSQL.html)를 참조하세요.
+ 다음과 같은 옵션 중 하나에서 파라미터 `aurora_compute_plan_id`를 `on`으로 설정하여 실행 계획을 분석하도록 Amazon Aurora PostgreSQL DB 클러스터를 구성해야 합니다.
  + *Amazon Aurora 사용 설명서*의 [Amazon Aurora에서 DB 클러스터 파라미터 그룹 생성](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_WorkingWithParamGroups.CreatingCluster.html)
  + *Amazon Aurora 사용 설명서*의 [Amazon Aurora에서 DB 클러스터 파라미터 그룹의 파라미터 수정](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_WorkingWithParamGroups.ModifyingCluster.html)

## 실행 계획 분석
<a name="Database-Insights-Execution-Plans-analyze"></a>

실행 계획을 분석하려면 다음 절차를 사용합니다.

**실행 계획을 분석하는 방법**

1. AWS Management Console에 로그인하고 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)에서 CloudWatch 콘솔을 엽니다.

1. **인사이트**를 선택합니다.

1. **Database Insights**를 선택합니다.

1. **데이터베이스 인스턴스** 보기를 선택합니다.

1. DB 인스턴스를 선택합니다.

1. **상위 SQL(Top SQL)** 탭을 선택합니다. **계획 수** 열에는 각 다이제스트 쿼리에 대해 수집된 계획 수가 표시됩니다.

1. (선택 사항) **계획 수** 열이 표시되지 않으면 **상위 SQL** 테이블에서 **설정** 아이콘을 선택하여 열의 가시성과 순서를 사용자 지정합니다.  
![\[계획 세부 정보 테이블 설정\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/DBInsights2.png)

1. 다이제스트 쿼리를 선택하여 구성 요소 문으로 확장합니다.  
![\[쿼리를 구성 요소 문으로 확장\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/dbi_did-dbload-expand.png)

1. 아래로 스크롤하여 SQL 텍스트를 보세요. 그런 다음 **계획** 탭을 선택하세요.

   기본적으로 CloudWatch에서는 예상 실행 계획이 표시됩니다. Aurora PostgreSQL의 경우 실제 실행 계획을 보려면 DB 인스턴스에 대한 `aurora_stat_plans.with_analyze` 파라미터를 활성화합니다. 파라미터 `aurora_stat_plans.with_analyze`에 대한 자세한 내용은 *Amazon Aurora 사용 설명서*의 [Aurora PostgreSQL용 쿼리 실행 계획 및 피크 메모리 모니터링](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Monitoring.Query.Plans.html#aurora.with_analyze)을 참조하세요.

1. 동일한 다이제스트 쿼리의 계획을 비교하려면 **다이제스트 쿼리 계획** 목록에서 두 개의 **계획**을 선택하세요.

   쿼리에 대해 한 번에 하나 또는 2개의 계획을 볼 수 있습니다. 다음 예제 스크린샷의 두 가지 계획은 모두 Aurora PostgreSQL용입니다.  
![\[계획 비교\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/dbi_did-plans.png)

1. DBLoad 차트의 **분할 기준** 드롭다운에서 **계획**을 선택하여 시간 경과에 따라 각 계획이 DBLoad에 어떻게 기여하는지 볼 수도 있습니다.  
![\[Database load chart showing active sessions over time with plans contribution highlighted.\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/DBInsights_OverTime.png)

# Database Insights를 사용하여 Aurora Limitless Database 모니터링
<a name="database-insights-limitless"></a>

Database Insights는 플릿 및 인스턴스 수준에서 [Aurora PostgreSQL Limitless 데이터베이스](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_DatabaseInsights.Engines.html) 모니터링을 지원합니다. Aurora PostgreSQL Limitless 데이터베이스는 데이터베이스 인스턴스 대시보드 및 플릿 상태 대시보드 모두에서 검색 가능합니다.

Aurora PostgreSQL Limitless Database는 *샤드 그룹*을 사용합니다. 각 샤드 그룹은 분산 워크로드를 처리하기 위해 함께 작동하는 여러 개의 데이터베이스 인스턴스로 구성됩니다. Database Insights는 샤드 그룹 내 인스턴스 간의 로드 분산을 파악하는 데 도움이 됩니다.

플릿 상태 대시보드에서 Database Insights는 데이터베이스 플릿을 구성하는 나머지 데이터베이스와 함께 Limitless 샤드 그룹에 대한 모니터링을 제공합니다. 플릿의 다른 데이터베이스에서와 동일한 방식으로 Limitless 샤드 그룹의 상태 및 DBLoad 사용률에 대한 독자적인 보기를 확인할 수 있습니다. 인스턴스 대시보드에서 Database Insights는 샤드 그룹 수준과 그룹 내 개별 인스턴스 모두에서 모니터링을 제공합니다. Database Insights는 샤드 그룹별로 새 보기를 제공하고, 여기에서 샤드 그룹의 인스턴스에 분산된 데이터베이스 로드를 볼 수 있습니다. 여기에서 샤드 그룹 내의 특정 인스턴스 대시보드로 이동할 수 있습니다.

## Aurora Limitless에 사용 가능한 기능
<a name="database-insights-limitless-features"></a>

다음 테이블에는 Aurora PostgreSQL Limitless 데이터베이스에 사용할 수 있는 기능이 나와 있습니다. 각 기능이 표준 및 고급 모니터링 모드에서 지원되는지, 샤드 그룹 수준, 인스턴스 수준 또는 두 수준 모두에서 사용 가능한지, Database Insights의 플릿 또는 인스턴트 대시보드에서 사용 가능한지가 나와 있습니다.


| 기능 | 표준 | Advanced | ShardGroup | Instance | Database Insights 대시보드 | 
| --- | --- | --- | --- | --- | --- | 
| DB 로드에 대한 상위 기여자를 차원별로 분석 | 지원됨 | 지원됨 | 예 | 예 | Instance | 
| 최대 7일의 보존 기간으로 데이터베이스 지표에 대한 쿼리, 그래프, 경보 설정 | 지원됨 | 지원됨 | 예 | 예 | Instance | 
| 세분화된 액세스 제어 정책을 정의하여 잠재적으로 민감한 차원(예: SQL 텍스트)에 대한 액세스 제한 | 지원됨 | 지원됨 | 예 | 예 | Instance | 
| 로드 분산 구성 요소를 사용하여 동일한 샤드 그룹 내의 인스턴스 간 로드 분산 분석 | 지원됨 | 지원됨 | 예 | 아니요 | 인스턴스 | 
|  실행 프로세스당 세부 지표를 사용하여 데이터베이스에서 수행되는 운영 체제 프로세스 분석 이 기능이 작동하려면 [Amazon RDS 확장 모니터링](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_PerfInsights_Counters.html)이 필요합니다.  | 지원되지 않음 | 지원됨 | 아니요 | 예 | Instance | 
| 플릿 전반의 모니터링 보기를 생성 및 저장하여 수백 개의 데이터베이스에서 상태 평가 | 지원되지 않음 | 지원됨 | 예 | 아니요 | 플릿 | 
| 15개월의 보존과 안내형 UX를 사용하여 SQL 잠금 분석 | 지원되지 않음 | 지원되지 않음 | 아니요 | 아니요 | 인스턴스 | 
| 15개월의 보존과 안내형 UX를 사용하여 SQL 실행 계획 분석 | 지원되지 않음 | 지원되지 않음 | 아니요 | 아니요 | 인스턴스 | 
| 쿼리당 통계 시각화 | 지원되지 않음 | 지원됨 | 아니요 | 예 | Instance | 
| 느린 SQL 쿼리 분석 이 기능이 작동하려면 데이터베이스 로그를 CloudWatch Logs로 내보내야 합니다. | 지원되지 않음 | 지원됨 | 아니요 | 예 | Instance | 
| CloudWatch Application Signals를 사용하여 직접 호출 서비스 보기 | 지원되지 않음 | 지원됨 | 예 | 아니요 | 둘 다 | 
| 지표, 로그, 이벤트, 애플리케이션을 비롯하여 모든 데이터베이스 원격 측정에 대한 통합된 대시보드 보기Database Insights 콘솔에서 데이터베이스 로그를 보려면 데이터베이스 로그를 CloudWatch Logs로 내보내야 합니다. | 지원되지 않음 | 지원됨 | 아니요 | 예 | Instance | 
| 성능 개선 도우미 카운터 지표를 자동으로 CloudWatch로 가져오기 | 지원되지 않음 | 지원됨 | 해당 사항 없음 | 해당 사항 없음 | Instance | 
| CloudWatch에서 Amazon RDS 이벤트 보기 | 지원되지 않음 | 지원됨 | 예 | 아니요 | 둘 다 | 
| 온디맨드 분석을 사용하여 선택한 기간 동안 데이터베이스 성능 분석 | 지원되지 않음 | 지원되지 않음 | 아니요 | 아니요 | 인스턴스 | 

**참고**  
Aurora PostgreSQL Limitless Database에서 향상된 모니터링은 자동으로 활성화됩니다. Enhanced Monitoring에는 추가 요금이 적용됩니다. 자세한 내용은 [Enhanced Monitoring 비용](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_Monitoring.OS.html#USER_Monitoring.OS.cost)을 참조하세요.  
Aurora PostgreSQL Limitless Database의 경우 로그는 CloudWatch Logs에 자동으로 게시되며 Database Insights 콘솔에서 검색할 수 있습니다. 이로 인해 표준 CloudWatch Logs 요금에 따라 추가 요금이 발생합니다. CloudWatch Logs 및 Database Insights 가격 책정 방법 및 요금 예제에 대한 자세한 내용은 [Amazon CloudWatch 요금](https://aws.amazon.com/cloudwatch/pricing/?nc1=h_ls)을 참조하세요.

## 플릿 상태 대시보드에서 Aurora Limitless 샤드 그룹 모니터링
<a name="database-insights-limitless-fleet"></a>

 Database Insights는 플릿 상태 대시보드에서 Aurora Limitless 샤드 그룹 모니터링을 지원합니다.

이 보기에서는 데이터베이스 플릿을 구성하는 다른 데이터베이스와 함께 Limitless 샤드 그룹을 확인할 수 있습니다. 플릿 상태 대시보드는 플릿의 다른 데이터베이스에 대한 정보를 제공하는 방식과 마찬가지로 Limitless 샤드 그룹의 상태 및 DBLoad 사용률에 대한 독자적인 보기를 제공합니다.

![\[Database Insights 플릿 상태 대시보드. 기본 패널에는 'shardgroup2'가 강조 표시된 항목을 포함해 데이터베이스 인스턴스를 나타내는 육각형 그리드가 표시됩니다. 라우터 및 샤드에 대한 DB 로드 사용률을 표시합니다. 오른쪽 상단에는 시간 경과에 따른 'DB 로드 사용률당 상위 10개 인스턴스' 그래프가 표시됩니다. 다음은 상위 쿼리 및 대기 이벤트를 포함한 'db-microsoftsqlserver-enterprise-1-dbi-advanced'에 대한 세부 정보입니다. 하단 섹션에서는 심각 상태의 이벤트와 직접 호출 서비스가 없음을 보여줍니다. 왼쪽 사이드바에서는 경보 상태인 인스턴스가 2개이고 평균 DB 로드 사용률이 25.1%인 총 44개의 인스턴스를 보여줍니다.\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/dbi_fhd.png)


 플릿 상태 대시보드에서 Aurora Limitless 데이터베이스를 보는 경우: 
+ 개별 인스턴스가 아닌 샤드 그룹만 표시됨
+ 샤드 그룹은 다음 위젯에 표시됩니다.
  + 허니컴 차트
  + DBLoad별 상위 10개
  + 이벤트
  + 직접 호출 서비스
  + 테이블 목록
+ DBLoad 사용률은 라우터 및 샤드 모두에 제공됨

이 플릿 수준 보기를 사용하면 Aurora Limitless 샤드 그룹의 성능을 모니터링하고 플릿의 다른 데이터베이스와 비교하여 전체 데이터베이스 플릿에 대한 포괄적인 개요를 제공할 수 있습니다.

![\[데이터베이스 인스턴스 목록을 보여주는 Database Insights 대시보드. 이 테이블에는 DB 식별자, 경보 상태, 엔진 유형, DB 로드 사용률, 마지막 상태 업데이트 및 데이터베이스 버전을 함께 7개의 인스턴스가 표시됩니다. 엔진에는 PostgreSQL, SQL Server Enterprise, Oracle Standard, Aurora MySQL, Aurora PostgreSQL이 포함됩니다. SQL Server 인스턴스의 부하가 25.21%로 가장 높습니다. Aurora PostgreSQL 인스턴스 2개에는 'Limitless' 레이블이 지정되어 있으며 샤드 및 라우터에 대한 별도의 사용률을 표시합니다. 인터페이스에는 추가 세부 정보를 필터링 및 정렬하고 보는 옵션이 포함되어 있습니다.\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/dbi_fhd-limitless-list-view.png)


## 인스턴스 대시보드에서 Aurora PostgreSQL Limitless 데이터베이스 모니터링
<a name="database-insights-limitless-monitor"></a>

Database Insights는 Aurora PostgreSQL Limitless Database에서도 표준 Aurora DB 클러스터에서와 마찬가지로 작동합니다. 그러나 Aurora PostgreSQL Limitless Database에서는 샤드 그룹 수준에서 지표를 추적합니다. 추적할 두 가지 주요 지표는 다음과 같습니다.
+ **데이터베이스 로드** - 데이터베이스의 활동 수준을 측정합니다. 핵심 지표는 `DBLoad`이며, 1초 간격으로 수집됩니다. `DBLoad` 지표의 단위는 평균 활성 세션(AAS)입니다. 평균 활성 세션을 구하기 위해 Database Insights는 쿼리를 동시에 실행하는 세션 수를 샘플링합니다. AAS는 특정 기간 동안의 총 세션 수를 총 샘플 수로 나눈 값입니다.
+ **최대 CPU** - 데이터베이스에서 사용할 수 있는 최대 컴퓨팅 성능입니다. 활성 세션이 최대 CPU를 초과하는지 확인하려면 `Max vCPU` 줄과의 관계를 확인합니다. `Max vCPU` 값은 DB 인스턴스에서 vCPU(가상 CPU) 코어의 수로 결정됩니다.

`DBLoad` 지표를 이 지표의 하위 범주인 차원으로 '분할'할 수도 있습니다. 가장 유용한 차원은 다음과 같습니다.
+ **상위 인스턴스** - 인스턴스(샤드 및 라우터)의 상대적 DB 로드를 내림차순으로 표시합니다.
+ **대기 이벤트** - SQL 문이 계속 실행되기 전에 특정 이벤트가 발생할 때까지 기다리도록 합니다. 대기 이벤트는 작업이 방해받는 위치를 나타냅니다.
+ **상위 SQL** - DB 로드에 가장 많이 기여하는 쿼리를 표시합니다.

![\[데이터베이스 성능 지표를 보여주는 Database Insights 대시보드. 상단 섹션에는 7월 14일 12:00부터 14:45까지 데이터베이스 활동을 추적하는 선 그래프가 표시됩니다. 아래에 DB 로드 분석 탭은 4개의 데이터베이스 인스턴스(DTR-3-757, DTR-2-903, DAS-4-112, DAS-5-992)와 해당 로드 사용률 지표를 나열하는 '상위 인스턴스' 보기를 표시하며, 평균 활성 세션(AAS) 값이 모두 0.01 미만입니다. 인터페이스에는 경보 상태, 필터 및 다양한 분석 보기에 대한 옵션이 포함되어 있습니다.\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/dbi_limitless-top-instances.png)


## Database Insights를 사용하여 Aurora PostgreSQL Limitless Database의 DB 로드 분석
<a name="database-insights-limitless-dbload"></a>

Database Insights를 사용하면 Aurora PostgreSQL Limitless Database의 샤드 그룹 수준 및 인스턴스 수준에서 지표를 추적할 수 있습니다. Aurora PostgreSQL Limitless Database의 DB 로드를 분석할 때 각 샤드 및 라우터의 DB 로드를 최대 vCPU와 비교해볼 수 있습니다.

절대 뷰에는 평균 활성 세션(AAS) 수와 예상 vCPU가 표시됩니다. 상대 뷰는 AAS 대 추정 vCPU의 비율을 보여줍니다.

![\[shardgroup1 Aurora PostgreSQL 클러스터의 데이터베이스 로드 분산을 보여주는 Database Insights 대시보드. 인터페이스에는 평균 활성 세션(AAS)의 시계열 그래프 및 5개의 데이터베이스 인스턴스에 대한 로드 분포를 보여주는 원형 차트가 표시됩니다. 원형 차트는 인스턴스 DTR-2-103, DTR-3-650, DAS-4-659, DAS-5-784, DAS-6-336 사이에서 백분율이 분할된 총 261개의 AAS를 나타냅니다. 대시보드에는 필터, 경보 상태 및 데이터베이스 원격 분석 옵션이 포함되어 있습니다.\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/dbi_limitless-doughnut.png)


### Database Insights를 사용한 상대 DB 데이터베이스 로드 분석
<a name="analyzing-relative-db-load"></a>

상대 DB 로드를 추적하여 Aurora PostgreSQL Limitless Database의 성능을 개선하고 싶을 수 있습니다. 인스턴스별로 Aurora PostgreSQL Limitless Database의 상대 DB 로드를 분석하려면 다음 프로시저를 사용합니다.

**콘솔을 사용하여 상대 DB 로드 분석**

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

1. 탐색 창에서 Database Insights를 선택합니다.

1. Aurora PostgreSQL Limitless Database를 선택합니다. 해당 Aurora PostgreSQL Limitless Database에 대한 Database Insights 대시보드가 표시됩니다.

1. 데이터베이스 로드(DB 로드) 섹션의 *분할 기준*에서 *인스턴스*를 선택합니다. Aurora PostgreSQL Limitless Database의 모든 인스턴스에 대해 평균 활성 세션(AAS) 대 vCPU 코어의 비율을 보려면 *다음으로 보기*에서 *상대*를 선택합니다.

   평균 활성 세션 차트는 Aurora PostgreSQL Limitless Database의 인스턴스에 대한 DB 로드를 보여줍니다.

1. 최상위 인스턴스를 보려면 *상위 인스턴스* 탭을 선택합니다.

1. (선택 사항) Aurora PostgreSQL Limitless Database의 인스턴스에 대한 DB 로드를 분석하려면 *인스턴스* 열에서 인스턴스 이름을 선택합니다.

### Database Insights 대시보드를 사용한 대기 기준 DB 로드 분석
<a name="analyzing-db-load-waits"></a>

대기 이벤트를 추적하여 Aurora PostgreSQL Limitless Database의 성능을 개선하고 싶을 수 있습니다. 대기 이벤트별로 Aurora PostgreSQL Limitless Database의 DB 로드를 분석하려면 다음 프로시저를 사용합니다.

**콘솔을 사용하여 대기를 기준으로 Aurora PostgreSQL Limitless Database의 DB 로드를 분석하는 방법**

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

1. 탐색 창에서 Database Insights를 선택합니다.

1. Aurora PostgreSQL Limitless Database를 선택합니다. 해당 Aurora PostgreSQL Limitless Database에 대한 Database Insights 대시보드가 표시됩니다.

1. 데이터베이스 로드(DB 로드) 섹션의 *분할 기준*에서 *대기*를 선택합니다. AAS 수와 예상 vCPU를 보려면 *다음으로 보기*보기에서 *절대*를 선택합니다.

   평균 활성 세션 차트는 Aurora PostgreSQL Limitless Database의 인스턴스에 대한 DB 로드를 보여줍니다.

1. *상위 SQL* 탭까지 아래로 스크롤합니다.

1. SQL 문을 선택하여 구성 요소 문으로 확장합니다.

### Database Insights 대시보드를 사용한 로드 분산 분석
<a name="analyzing-db-load-distribution"></a>

Aurora PostgreSQL Limitless Database의 인스턴스에 대한 로드 분산의 균형을 맞추고 싶을 수 있습니다. Aurora PostgreSQL Limitless Database에서 인스턴스의 로드 분산을 분석하려면 다음 프로시저를 사용합니다.

**콘솔을 사용하여 Aurora PostgreSQL Limitless Database에서 인스턴스의 로드 분산을 분석하는 방법**

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

1. 탐색 창에서 Database Insights를 선택합니다.

1. Aurora PostgreSQL Limitless Database를 선택합니다. 해당 Aurora PostgreSQL Limitless Database에 대한 Database Insights 대시보드가 표시됩니다.

1. 데이터베이스 로드(DB 로드) 섹션의 *분할 기준*에서 *인스턴스*를 선택합니다. Aurora PostgreSQL Limitless Database의 모든 인스턴스에 대한 AAS 수와 예상 vCPU를 보려면 *다음으로 보기*를 *절대*로 선택합니다.

   평균 활성 세션 차트는 Aurora PostgreSQL Limitless Database의 인스턴스에 대한 DB 로드를 보여줍니다.

1. Aurora PostgreSQL Limitless Database에서 인스턴스의 로드 분산 차트를 보려면 *로드 분산* 탭을 선택합니다.

# CloudWatch Database Insights의 문제 해결
<a name="Database-Insights-Troubleshooting"></a>

다음 정보를 사용하여 CloudWatch Database Insights의 문제를 해결합니다.

## Amazon RDS 리소스에 태그 적용
<a name="Database-Insights-Troubleshooting-tags"></a>

데이터베이스에 태그를 적용하려면 Amazon RDS API, AWS CLI 또는 Amazon RDS 콘솔을 사용합니다. 자세한 정보는 다음 주제를 참조하세요.
+ **Amazon RDS API 참조의 [AddTagsToResource](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_AddTagsToResource.html)
+ **Amazon RDS 명령줄 참조의 [add-tags-to-resource](https://docs.aws.amazon.com/cli/latest/reference/rds/add-tags-to-resource.html)
+ **Amazon Aurora 사용 설명서의 [Amazon Aurora 및 Amazon RDS 리소스에 태그 지정](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_Tagging.html)

## 플릿의 최대 DB 인스턴스 수
<a name="Database-Insights-Troubleshooting-fleet-limit"></a>

데이터베이스 플릿에서 DB 인스턴스를 500개 이상 모니터링할 수 없습니다. 필터를 사용하여 DB 인스턴스가 500개 미만인 플릿 상태 보기를 생성할 수 있습니다.

# Contributor Insights를 사용하여 카디널리티가 높은 데이터 분석하기
<a name="ContributorInsights"></a>

Contributor Insights를 사용하면 로그 데이터를 분석하고 기고자 데이터를 표시하는 시계열을 생성할 수 있습니다. 상위 N개의 기고자, 총 고유 기고자 수 및 사용량에 대한 지표를 볼 수 있습니다. 이를 통해 상위 대화자를 찾고 시스템 성능에 영향을 미치는 사람 또는 대상을 파악할 수 있습니다. 예를 들어 잘못된 호스트를 찾거나 사용량이 가장 많은 네트워크 사용자를 식별하거나 가장 많은 오류를 생성하는 URL을 찾을 수 있습니다.

Scratch에서 규칙을 작성할 수 있으며, AWS Management Console를 사용하는 경우 AWS에서 만든 샘플 규칙을 사용할 수도 있습니다. 규칙은 `IpAddress`와 같이 기고자 정의에 사용할 로그 필드를 정의합니다. 또한 로그 데이터를 필터링하여 개별 기고자의 동작을 찾고 분석할 수 있습니다.

또한 CloudWatch는 다른 AWS 서비스의 지표를 분석하는 데 사용할 수 있는 기본 제공 규칙도 제공합니다.

모든 규칙은 수신 데이터를 실시간으로 분석합니다.

CloudWatch 크로스 계정 관측성에서 모니터링 계정으로 설정된 계정에 로그인한 경우 해당 모니터링 계정에서 소스 계정과 모니터링 계정의 로그 그룹을 분석하는 Contributor Insights 규칙을 생성할 수 있습니다. 여러 계정의 로그 그룹을 분석하는 단일 규칙을 생성할 수도 있습니다. 자세한 내용은 [CloudWatch 크로스 계정 관측성](CloudWatch-Unified-Cross-Account.md) 섹션을 참조하세요.

Contributor Insights의 경우 규칙과 일치하는 각 로그 이벤트에 대해 요금이 발생합니다. 자세한 내용은 [Amazon CloudWatch 요금](https://aws.amazon.com/cloudwatch/pricing/)을 참조하세요.

**참고**  
Contributor Insights는 규칙이 참조하는 숫자 값이 -1e9와 1e9 사이인 경우에만 로그 항목을 일치시킬 수 있습니다. 로그 항목의 값이 이 범위를 벗어나는 경우 Contributor Insights는 해당 로그 항목을 건너뜁니다.

**Topics**
+ [CloudWatch에서 Contributor Insights 규칙 생성](ContributorInsights-CreateRule.md)
+ [CloudWatch의 Contributor Insights 규칙 구문](ContributorInsights-RuleSyntax.md)
+ [CloudWatch Contributor Insights 규칙 예](ContributorInsights-Rule-Examples.md)
+ [CloudWatch에서 Contributor Insights 보고서 보기](ContributorInsights-ViewReports.md)
+ [CloudWatch에서 규칙에 따라 생성된 지표 그래프 작성](ContributorInsights-GraphReportData.md)
+ [CloudWatch에서 Contributor Insights 기본 제공 규칙 사용](ContributorInsights-BuiltInRules.md)

# CloudWatch에서 Contributor Insights 규칙 생성
<a name="ContributorInsights-CreateRule"></a>

규칙을 생성하여 로그 데이터를 분석할 수 있습니다. JSON 또는 CLF(일반적 로그 형식)의 모든 로그를 평가할 수 있습니다. 여기에는 이러한 형식 중 하나를 따르는 사용자 지정 로그와 Amazon VPC 흐름 로그, Amazon Route 53 DNS 쿼리 로그, Amazon ECS 컨테이너 로그 그리고 AWS CloudTrail, Amazon SageMaker AI, Amazon RDS, AWS AppSync 및 API Gateway의 로그와 같은 AWS 서비스의 로그가 포함됩니다.

규칙에서 필드 이름이나 값을 지정할 때 일치하는 모든 항목은 대/소문자를 구분합니다.

규칙을 생성할 때 기본 제공 샘플 규칙을 사용하거나 Scratch에서 고유한 규칙을 생성할 수 있습니다. Contributor Insights에는 다음 유형의 로그에 대한 샘플 규칙이 포함되어 있습니다.
+ Amazon API Gateway 로그
+ Amazon Route 53 퍼블릭 DNS 쿼리 로그
+ Amazon Route 53 Resolver 쿼리 로그
+ CloudWatch Container Insights 로그
+ VPC 흐름 로그

CloudWatch 크로스 계정 관측성에서 모니터링 계정으로 설정된 계정에 로그인한 경우 모니터링 계정에서 로그 그룹에 대한 규칙을 생성하는 것 외에도 이 모니터링 계정에 연결된 소스 계정의 로그 그룹에 대한 Contributor Insights 규칙을 생성할 수 있습니다. 여러 계정의 로그 그룹을 모니터링하는 단일 규칙을 설정할 수도 있습니다. 자세한 내용은 [CloudWatch 크로스 계정 관측성](CloudWatch-Unified-Cross-Account.md) 섹션을 참조하세요.

**중요**  
사용자에게 `cloudwatch:PutInsightRule` 권한을 부여하면 기본적으로 해당 사용자는 CloudWatch Logs의 로그 그룹을 평가하는 규칙을 생성할 수 있습니다. 이러한 권한을 제한하는 IAM 정책 조건을 추가하여 사용자가 특정 로그 그룹을 포함하고 제외하도록 할 수 있습니다. 자세한 내용은 [조건 키를 사용하여 Contributor Insights 사용자의 로그 그룹 액세스 제한](iam-cw-condition-keys-contributor.md) 섹션을 참조하세요.

**기본 제공 샘플 규칙을 사용하여 규칙을 생성하려면**

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

1. 탐색 창에서 **로그**, **Contributor Insights**를 선택하세요.

1. **규칙 생성**을 선택합니다.

   

1.  **Select log group(s)**(로그 그룹 선택)에서 규칙을 모니터링할 로그 그룹을 선택합니다. 로그 그룹을 20개까지 선택할 수 있습니다. CloudWatch 크로스 계정 관측성을 위해 설정된 모니터링 계정에 로그인한 경우 소스 계정에서 로그 그룹을 선택할 수 있으며 여러 계정의 로그 그룹을 분석하는 단일 규칙을 생성할 수도 있습니다.

   1.  (선택 사항) 이름이 특정 문자열로 시작하는 모든 로그 그룹을 선택하려면 **접두사 일치로 선택** 드롭다운을 누른 다음 접두사를 입력합니다. 모니터링 계정인 경우 선택적으로 검색할 계정을 선택할 수 있습니다. 그렇지 않으면 모든 계정이 선택됩니다.
**참고**  
 규칙과 일치하는 각 로그 이벤트에 대해 요금이 발생합니다. **접두사 일치로 선택** 드롭다운을 선택하는 경우 접두사가 일치할 수 있는 로그 그룹 수를 알고 있어야 합니다. 실수로 의도한 것보다 많은 로그 그룹을 검색하면 예기치 않은 요금이 발생할 수 있습니다. 자세한 내용은 [Amazon CloudWatch 요금](https://aws.amazon.com/cloudwatch/pricing)을 참조하세요.

1. **Rule type**(규칙 유형)에서 **Sample rule**(샘플 규칙)을 선택합니다. 그런 다음 **Select sample rule**(샘플 규칙 선택)을 선택하고 규칙을 선택합니다.

1. **로그 형식**에서 규칙에서 평가할 로그의 형식을 선택합니다.

1. **변환기**에서 [CloudWatch Logs 로그 변환](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CloudWatch-Logs-Transformation.html.html)에 의해 변환된 후 규칙에서 로그 이벤트를 평가하도록 **변환기에서 Contributor Insights 활성화**를 선택합니다. 활성화를 선택한 경우:
   + 규칙이 변환기가 있는 로그 그룹을 평가하면 변환된 로그 버전에 규칙이 적용됩니다.
   + 규칙이 변환기가 있는 로그 그룹을 평가하면 로그의 원본 버전에 규칙이 적용됩니다.

   선택하지 않으면 로그 변환을 사용하는 로그를 포함하여 모든 로그 그룹의 원본 로그 이벤트를 평가합니다.
**참고**  
로그 그룹에 변환기가 있고 일부 로그 이벤트에 대한 변환이 실패하면 Contributor Insights에서 해당 로그 이벤트를 평가하지 않습니다. 로그 변환 실패를 조사하는 방법은 [변환 지표 및 오류](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Transformation-Errors-Metrics.html)를 참조하세요.

1.  샘플 규칙에는 **로그 형식**, **기여**, **필터** 및 **집계** 필드가 작성되어 있습니다. 원하는 경우 이러한 값을 조정할 수 있습니다.

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

1. **Rule name(규칙 이름)**에 이름을 입력합니다. 유효한 문자는 A\$1Z, a\$1z, 0\$19, -(하이픈), \$1(밑줄) 및 .(마침표)입니다.

1. 규칙을 활성화된 또는 비활성화된 상태로 생성할지 여부를 선택합니다. 규칙을 활성화하도록 선택하면 즉시 규칙을 사용하여 데이터 분석이 시작됩니다. 활성화된 규칙을 실행하면 비용이 발생합니다. 자세한 내용은 [Amazon CloudWatch 요금](https://aws.amazon.com/cloudwatch/pricing/)을 참조하세요.

   Contributor Insights는 규칙이 생성된 후 새 로그 이벤트만 분석합니다. 규칙은 이전에 CloudWatch Logs에서 처리한 로그 이벤트를 처리할 수 없습니다.

1. (선택 사항) **Tags**(태그)에서 이 규칙에 대한 태그로 하나 이상의 키-값 페어를 추가합니다. 태그를 사용하면 AWS 리소스를 식별 및 구성하고 AWS 비용을 추적할 수 있습니다. 자세한 내용은 [Amazon CloudWatch 리소스 태그 지정](CloudWatch-Tagging.md) 섹션을 참조하세요.

1. **생성(Create)**을 선택합니다.

**Scratch에서 규칙을 새로 생성하려면**

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

1. 탐색 창에서 **로그**, **Contributor Insights**를 선택하세요.

1. **규칙 생성**을 선택합니다.

   

1.  **Select log group(s)**(로그 그룹 선택)에서 규칙을 모니터링할 로그 그룹을 선택합니다. 로그 그룹을 20개까지 선택할 수 있습니다. CloudWatch 크로스 계정 관측성을 위해 설정된 모니터링 계정에 로그인한 경우 소스 계정에서 로그 그룹을 선택할 수 있으며 여러 계정의 로그 그룹을 분석하는 단일 규칙을 생성할 수도 있습니다.

   1.  (선택 사항) 이름이 특정 문자열로 시작하는 모든 로그 그룹을 선택하려면 **접두사 일치로 선택** 드롭다운을 누른 다음 접두사를 입력합니다.
**참고**  
 규칙과 일치하는 각 로그 이벤트에 대해 요금이 발생합니다. **접두사 일치로 선택** 드롭다운을 선택하는 경우 접두사가 일치할 수 있는 로그 그룹 수를 알고 있어야 합니다. 실수로 의도한 것보다 많은 로그 그룹을 검색하면 예기치 않은 요금이 발생할 수 있습니다. 자세한 내용은 [Amazon CloudWatch 요금](https://aws.amazon.com/cloudwatch/pricing)을 참조하세요.

1. **Rule type**(규칙 유형)에서 **Custom rule**(사용자 지정 규칙)을 선택합니다.

1. **로그 형식**에서 **JSON** 또는 **CLF**를 선택합니다.

1. **변환기**에서 [CloudWatch Logs 로그 변환](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CloudWatch-Logs-Transformation.html.html)에 의해 변환된 후 규칙에서 로그 이벤트를 평가하도록 **변환기에서 Contributor Insights 활성화**를 선택합니다. 활성화를 선택한 경우:
   + 규칙이 변환기가 있는 로그 그룹을 평가하면 변환된 로그 버전에 규칙이 적용됩니다.
   + 규칙이 변환기가 있는 로그 그룹을 평가하면 로그의 원본 버전에 규칙이 적용됩니다.

   선택하지 않으면 로그 변환을 사용하는 로그를 포함하여 모든 로그 그룹의 원본 로그 이벤트를 평가합니다.
**참고**  
로그 그룹에 변환기가 있고 일부 로그 이벤트에 대한 변환이 실패하면 Contributor Insights에서 해당 로그 이벤트를 평가하지 않습니다. 로그 변환 실패를 조사하는 방법은 [변환 지표 및 오류](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Transformation-Errors-Metrics.html)를 참조하세요.

1. 마법사를 사용하거나 **Syntax(구문)** 탭을 선택하고 규칙 구문을 수동으로 지정하여 규칙 생성을 완료할 수 있습니다.

   마법사를 계속 사용하려면 다음을 수행합니다.

   1. **Contribution(기고)**, **Key(키)**에 보고할 기고자 유형을 입력합니다. 보고서에는 이 기고자 유형에 대한 상위 N개의 값이 표시됩니다.

      유효한 항목은 값이 있는 모든 로그 필드입니다. 예를 들면 **requestId**, **sourceIPaddress** 및 **containerID**입니다.

      특정 로그 그룹에 있는 로그의 로그 필드 이름을 찾는 방법에 대한 자세한 내용은 [로그 필드 찾기](#finding_log_fields)를 참조하세요.

      1KB보다 큰 키는 1KB 단위로 잘립니다.

   1. (선택 사항) **Add new key**(새 키 추가)를 선택하여 키를 더 추가합니다. 규칙에 최대 4개의 키를 포함할 수 있습니다. 두 개 이상의 키를 입력하면 보고서의 기고자는 키의 고유한 값 조합으로 정의됩니다. 예를 들어 세 개의 키를 지정하면 세 개의 키에 대한 각각의 고유한 값 조합이 고유한 기고자로 계산됩니다.

   1. (선택 사항) 결과 범위를 좁히는 필터를 추가하려는 경우 **필터 추가(Add filter)**를 선택합니다. **일치(Match)**에 필터링하려는 로그 필드 이름을 입력합니다. 그런 다음 **조건(Condition)**에서 비교 연산자를 선택하고 필터링하려는 값을 입력합니다.

      규칙에 필터를 4개까지 추가할 수 있습니다. 여러 필터는 AND 논리로 결합되므로 모든 필터와 일치하는 로그 이벤트만 평가됩니다.
**참고**  
비교 연산자 다음에 나오는 배열(예:`In`, `NotIn` 또는 `StartsWith`)은 최대 10개의 문자열 값을 포함할 수 있습니다. Contributor Insights 규칙 구문에 대한 자세한 내용은 [CloudWatch의 Contributor Insights 규칙 구문](ContributorInsights-RuleSyntax.md) 섹션을 참조하세요.

   1. [**집계(Aggregate on)**]에서 [**수(Count)**] 또는 [**합계(Sum)**]를 선택합니다. [**수(Count)**]를 선택하면 기여 요소 순위가 발생 횟수를 기반으로 결정됩니다. [**합계(Sum)**]를 선택하면 [**기여(Contribution)**], [**값(Value)**]에서 지정한 필드 값의 집계된 합계를 기반으로 순위가 결정됩니다.

1. 마법사를 사용하는 대신 규칙을 JSON 객체로 입력하려면 다음을 수행합니다.

   1. **Syntax(구문)** 탭을 선택합니다.

   1. **Rule body(규칙 본문)**에 규칙의 JSON 객체를 입력합니다. 규칙 구문에 대한 자세한 내용은 [CloudWatch의 Contributor Insights 규칙 구문](ContributorInsights-RuleSyntax.md) 단원을 참조하십시오.

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

1. **Rule name(규칙 이름)**에 이름을 입력합니다. 유효한 문자는 A-Z, a-z, 0-9, "-", "\$1” 및 "."입니다.

1. 규칙을 활성화된 또는 비활성화된 상태로 생성할지 여부를 선택합니다. 규칙을 활성화하도록 선택하면 즉시 규칙을 사용하여 데이터 분석이 시작됩니다. 활성화된 규칙을 실행하면 비용이 발생합니다. 자세한 내용은 [Amazon CloudWatch 요금](https://aws.amazon.com/cloudwatch/pricing/)을 참조하세요.

   Contributor Insights는 규칙이 생성된 후 새 로그 이벤트만 분석합니다. 규칙은 이전에 CloudWatch Logs에서 처리한 로그 이벤트를 처리할 수 없습니다.

1. (선택 사항) **Tags**(태그)에서 이 규칙에 대한 태그로 하나 이상의 키-값 페어를 추가합니다. 태그를 사용하면 AWS 리소스를 식별 및 구성하고 AWS 비용을 추적할 수 있습니다. 자세한 내용은 [Amazon CloudWatch 리소스 태그 지정](CloudWatch-Tagging.md) 섹션을 참조하세요.

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

1. 입력한 설정을 확인하고 **Create rule**(규칙 생성)을 선택합니다.

생성한 규칙을 비활성화, 활성화 또는 삭제할 수 있습니다.

**Contributor Insights에서 규칙을 활성화, 비활성화 또는 삭제하려면**

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

1. 탐색 창에서 **로그**, **Contributor Insights**를 선택하세요.

1. 규칙 목록에서 단일 규칙 옆에 있는 확인란을 선택합니다.

   기본 제공 규칙은 AWS 서비스에서 생성되며 편집, 비활성화 또는 삭제할 수 없습니다.

1. **작업**을 선택한 다음 원하는 옵션을 선택합니다.<a name="finding_log_fields"></a>

**로그 필드 찾기**

규칙을 생성할 때 로그 그룹의 로그 항목에 있는 필드의 이름을 알아야 합니다.

**로그 그룹에서 로그 필드를 찾으려면**

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

1. 탐색 창의 **로그**에서 **Insights**를 선택합니다.

1. 쿼리 편집기 위에서 쿼리할 로그 그룹을 하나 이상 선택합니다.

   로그 그룹을 선택하면 CloudWatch Logs Insights가 로그 그룹의 데이터에서 필드를 자동으로 감지하고 오른쪽 창의 [**검색된 필드(Discovered fields)**]에 해당 필드를 표시합니다.

# CloudWatch의 Contributor Insights 규칙 구문
<a name="ContributorInsights-RuleSyntax"></a>

이 단원에서는 Contributor Insights 규칙의 구문에 대해 설명합니다. JSON 블록을 입력하여 규칙을 생성하는 경우에만 이 구문을 사용합니다. 마법사를 사용하여 규칙을 생성하는 경우 구문을 알 필요가 없습니다. 마법사를 사용하여 규칙을 생성하는 방법에 대한 자세한 내용은 [CloudWatch에서 Contributor Insights 규칙 생성](ContributorInsights-CreateRule.md) 단원을 참조하십시오.

이벤트 필드 이름 및 값을 기록하기 위한 규칙과 일치하는 모든 항목은 대/소문자를 구분합니다.

다음 예제에서는 JSON 로그의 구문을 보여줍니다.

```
{
    "Schema": {
        "Name": "CloudWatchLogRule",
        "Version": 1
    },
    "LogGroupNames": [
        "API-Gateway-Access-Logs*",
        "Log-group-name2"
    ],
    "LogFormat": "JSON",
    "Contribution": {
        "Keys": [
            "$.ip"
        ],
        "ValueOf": "$.requestBytes",
        "Filters": [
            {
                "Match": "$.httpMethod",
                "In": [
                    "PUT"
                ]
            }
        ]
    },
    "AggregateOn": "Sum"
}
```Contributor Insights 규칙의 필드

스키마  
 CloudWatch Logs 데이터를 분석하는 규칙의 `Schema` 값은 항상 `{"Name": "CloudWatchLogRule", "Version": 1}`이어야 합니다.

LogGroupNames  
 문자열 배열입니다. 배열의 각 요소에 대해 선택적으로 문자열 끝에 `*`를 사용하여 해당 접두사로 시작하는 이름을 가진 모든 로그 그룹을 포함할 수 있습니다.  
로그 그룹 이름과 함께 와일드카드를 사용할 때는 주의해야 합니다. 규칙과 일치하는 각 로그 이벤트에 대해 요금이 발생합니다. 의도한 것보다 많은 로그 그룹을 실수로 검색하면 예기치 않은 요금이 발생할 수 있습니다. 자세한 내용은 [Amazon CloudWatch 요금](https://aws.amazon.com/cloudwatch/pricing)을 참조하세요.

LogGroupARNs  
CloudWatch 크로스 계정 관측성 모니터링 계정에서 이 규칙을 생성하는 경우 `LogGroupARNs`을 사용하여 모니터링 계정에 연결된 소스 계정에 로그 그룹을 지정하고 모니터링 계정 자체에 로그 그룹을 지정할 수 있습니다. 규칙에 `LogGroupNames` 또는 `LogGroupARNs`를 지정해야 하지만 둘 다 지정할 수는 없습니다.  
 `LogGroupARNs`는 문자열 배열입니다. 배열의 각 요소에 대해 특정 상황에서 선택적으로 `*`를 와일드카드로 사용할 수 있습니다. 예를 들어 `arn:aws:logs:us-west-1:*:log-group/MyLogGroupName2`를 지정하여 미국 서부(캘리포니아 북부) 리전의 모든 소스 계정과 모니터링 계정에 `MyLogGroupName2`라는 로그 그룹을 지정할 수 있습니다. `arn:aws:logs:us-west-1:111122223333:log-group/GroupNamePrefix*`를 지정하여 111122223333에 이름이 `GroupNamePrefix`로 시작하는 미국 서부(캘리포니아 북부)의 모든 로그 그룹을 지정할 수도 있습니다.  
부분 AWS 계정 ID를 와일드 카드가 있는 접두사로 지정할 수 없습니다.  
로그 그룹 ARN과 함께 와일드카드를 사용할 때는 주의해야 합니다. 규칙과 일치하는 각 로그 이벤트에 대해 요금이 발생합니다. 의도한 것보다 많은 로그 그룹을 실수로 검색하면 예기치 않은 요금이 발생할 수 있습니다. 자세한 내용은 [Amazon CloudWatch 요금](https://aws.amazon.com/cloudwatch/pricing)을 참조하세요.

LogFormat  
 유효 값은 `JSON` 및 `CLF`입니다.

Contribution  
 이 객체에는 최대 4개의 멤버가 있는 `Keys` 배열, 선택적으로 단일 `ValueOf` 및 선택적으로 최대 4개의 `Filters`가 있는 배열이 포함됩니다.

키  
 기고자를 분류하는 측정기준으로 사용되는 최대 4개의 로그 필드의 배열입니다. 두 개 이상의 키를 입력하면 키에 대한 각각의 고유한 값 조합이 고유한 기고자로 계산됩니다. 필드는 JSON 속성 형식 표기법을 사용하여 지정해야 합니다.

ValueOf  
 (선택 사항) `Sum`을 `AggregateOn`의 값으로 지정하는 경우에만 이 옵션을 지정합니다. `ValueOf`는 숫자 값을 갖는 로그 필드를 지정합니다. 이 유형의 규칙에서 기고자 순위는 로그 항목에서의 발생 횟수 대신 이 필드 값의 합계로 결정됩니다. 예를 들어 기고자를 일정 기간 동안 총 `BytesSent`로 정렬하려는 경우 `ValueOf`를 `BytesSent`로 설정하고 `AggregateOn`에 `Sum`을 지정합니다.

필터  
 보고서에 포함된 로그 이벤트의 범위를 좁히기 위해 최대 4개의 필터가 있는 배열을 지정합니다. 여러 필터를 지정하면 Contributor Insights는 논리 AND 연산자를 사용하여 필터를 평가합니다. 이 옵션을 사용하여 검색에서 관련 없는 로그 이벤트를 필터링하거나 단일 기고자를 선택하여 해당 동작을 분석할 수 있습니다.  
배열의 각 멤버는 `Match` 필드와 사용할 일치하는 연산자 유형을 나타내는 필드를 포함해야 합니다.  
`Match` 필드는 필터에서 평가할 로그 필드를 지정합니다. 로그 필드는 JSON 속성 형식 표기법을 사용하여 지정됩니다.  
일치하는 연산자 필드는 `In`, `NotIn`, `StartsWith`, `GreaterThan`, `LessThan`, `EqualTo`, `NotEqualTo` 또는 `IsPresent` 중 하나여야 합니다. 연산자 필드가 `In`, `NotIn` 또는 `StartsWith`인 경우 확인할 문자열 값의 배열이 뒤에 옵니다. Contributor Insights는 OR 연산자를 사용하여 문자열 값의 배열을 평가합니다. 배열은 최대 10개의 문자열 값을 포함할 수 있습니다.  
연산자 필드가 `GreaterThan`, `LessThan`, `EqualTo` 또는 `NotEqualTo`인 경우 비교할 단일 숫자 값이 뒤에 옵니다.  
연산자 필드가 `IsPresent`인 경우 뒤에 `true` 또는 `false`가 옵니다. 이 연산자는 로그 이벤트에 지정된 로그 필드가 있는지 여부에 따라 로그 이벤트를 일치시킵니다. `isPresent`는 JSON 속성의 리프 노드에 있는 값에서만 작동합니다. 예를 들어 `c-count`와 일치하는 항목을 찾는 필터는 `details.c-count.c1` 값이 있는 로그 이벤트를 평가하지 않습니다.  
필터의 예는 다음을 참조하세요.  

```
{"Match": "$.httpMethod", "In": [ "PUT", ] }
{"Match": "$.StatusCode", "EqualTo": 200 }
{"Match": "$.BytesReceived", "GreaterThan": 10000}
{"Match": "$.eventSource", "StartsWith": [ "ec2", "ecs" ] }
```

AggregateOn  
 유효 값은 `Count` 및 `Sum`입니다. 발생 횟수 또는 `ValueOf` 필드에 지정된 필드 값의 합계를 기준으로 보고서를 집계할지 여부를 지정합니다.

**JSON 속성 형식 표기법**

`Keys`, `ValueOf` 및 `Match` 필드는 점 표기법이 있는 JSON 속성 형식을 따르며 여기서 `$`는 JSON 객체의 루트를 나타냅니다. 그 뒤에는 마침표와 하위 속성의 이름을 가진 영숫자 문자열이 옵니다. 여러 속성 레벨이 지원됩니다.

문자열의 첫 번째 문자는 A\$1Z 또는 a\$1z만 가능합니다. 문자열의 다음 문자는 A\$1Z, a\$1z 또는 0\$19 중 하나일 수 있습니다.

다음 목록에서는 JSON 속성 형식의 유효한 예를 보여 줍니다.

```
$.userAgent
$.endpoints[0]
$.users[1].name
$.requestParameters.instanceId
```

**CLF 로그에 대한 규칙의 추가 필드**

CLF(일반적 로그 형식) 로그 이벤트에는 JSON과 같은 필드에 대한 이름이 없습니다. Contributor Insights 규칙에 사용할 필드를 제공하기 위해 CLF 로그 이벤트를 인덱스가 `1`부터 시작하는 배열로 취급할 수 있습니다. 예를 들어 첫 번째 필드를 **"1"**로, 두 번째 필드를 **"2"**로 지정할 수 있습니다.

CLF 로그에 대한 규칙을 읽기 쉽게 만들려면 `Fields`를 사용합니다. 이렇게 하면 CLF 필드 위치에 대한 이름 지정 별칭을 제공할 수 있습니다. 예를 들어 위치 “4"가 IP 주소가 되도록 지정할 수 있습니다. 지정한 후에는 `IpAddress`를 규칙에서 `Keys`, `ValueOf` 및 `Filters`의 속성으로 사용할 수 있습니다.

다음은 `Fields` 필드를 사용하는 CLF 로그에 대한 규칙의 예입니다.

```
{
    "Schema": {
        "Name": "CloudWatchLogRule",
        "Version": 1
    },
    "LogGroupNames": [
        "API-Gateway-Access-Logs*"
    ],
    "LogFormat": "CLF",
    "Fields": {
        "4": "IpAddress",
        "7": "StatusCode"
    },
    "Contribution": {
        "Keys": [
            "IpAddress"
        ],
        "Filters": [
            {
                "Match": "StatusCode",
                "EqualTo": 200
            }
        ]
    },
    "AggregateOn": "Count"
}
```

# CloudWatch Contributor Insights 규칙 예
<a name="ContributorInsights-Rule-Examples"></a>

이 단원에는 Contributor Insights 규칙의 사용 사례를 보여주는 예제가 포함되어 있습니다.

**VPC 흐름 로그: 소스 및 대상 IP 주소별 바이트 전송**

```
{
    "Schema": {
        "Name": "CloudWatchLogRule",
        "Version": 1
    },
    "LogGroupNames": [
        "/aws/containerinsights/sample-cluster-name/flowlogs"
    ],
    "LogFormat": "CLF",
    "Fields": {
        "4": "srcaddr",
        "5": "dstaddr",
        "10": "bytes"
    },
    "Contribution": {
        "Keys": [
            "srcaddr",
            "dstaddr"
        ],
        "ValueOf": "bytes",
        "Filters": []
    },
    "AggregateOn": "Sum"
}
```

**VPC 흐름 로그: HTTPS 요청 수가 가장 많음**

```
{
    "Schema": {
        "Name": "CloudWatchLogRule",
        "Version": 1
    },
    "LogGroupNames": [
        "/aws/containerinsights/sample-cluster-name/flowlogs"
    ],
    "LogFormat": "CLF",
    "Fields": {
        "5": "destination address",
        "7": "destination port",
        "9": "packet count"
    },
    "Contribution": {
        "Keys": [
            "destination address"
        ],
        "ValueOf": "packet count",
        "Filters": [
            {
                "Match": "destination port",
                "EqualTo": 443
            }
        ]
    },
    "AggregateOn": "Sum"
}
```

**VPC 흐름 로그: 거부된 TCP 연결**

```
{
    "Schema": {
        "Name": "CloudWatchLogRule",
        "Version": 1
    },
    "LogGroupNames": [
        "/aws/containerinsights/sample-cluster-name/flowlogs"
    ],
    "LogFormat": "CLF",
    "Fields": {
        "3": "interfaceID",
        "4": "sourceAddress",
        "8": "protocol",
        "13": "action"
    },
    "Contribution": {
        "Keys": [
            "interfaceID",
            "sourceAddress"
        ],
        "Filters": [
            {
                "Match": "protocol",
                "EqualTo": 6
            },
            {
                "Match": "action",
                "In": [
                    "REJECT"
                ]
            }
        ]
    },
    "AggregateOn": "Sum"
}
```

**소스 주소별 Route 53 NXDomain 응답**

```
{
    "Schema": {
        "Name": "CloudWatchLogRule",
        "Version": 1
    },
    "AggregateOn": "Count",
    "Contribution": {
        "Filters": [
            {
                "Match": "$.rcode",
                "StartsWith": [
                    "NXDOMAIN"
                ]
            }
        ],
        "Keys": [
            "$.srcaddr"
        ]
    },
    "LogFormat": "JSON",
    "LogGroupNames": [
        "<loggroupname>"
    ]
}
```

**도메인 이름별 Route 53 Resolver 쿼리**

```
{
    "Schema": {
        "Name": "CloudWatchLogRule",
        "Version": 1
    },
    "AggregateOn": "Count",
    "Contribution": {
        "Filters": [],
        "Keys": [
            "$.query_name"
        ]
    },
    "LogFormat": "JSON",
    "LogGroupNames": [
        "<loggroupname>"
    ]
}
```

**쿼리 유형 및 소스 주소별 Route 53 Resolver 쿼리**

```
{
    "Schema": {
        "Name": "CloudWatchLogRule",
        "Version": 1
    },
    "AggregateOn": "Count",
    "Contribution": {
        "Filters": [],
        "Keys": [
            "$.query_type",
            "$.srcaddr"
        ]
    },
    "LogFormat": "JSON",
    "LogGroupNames": [
        "<loggroupname>"
    ]
}
```

# CloudWatch에서 Contributor Insights 보고서 보기
<a name="ContributorInsights-ViewReports"></a>

보고서 데이터의 그래프와 규칙에 의해 발견된 기고자의 순위가 매겨진 목록을 보려면 다음 단계를 따르십시오.

**규칙 보고서를 보려면**

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

1. 탐색 창에서 **로그**, **Contributor Insights**를 선택하세요.

   

1. 규칙 목록에서 규칙 이름을 선택합니다.

   그래프는 지난 3시간 동안의 규칙 결과를 표시합니다. 그래프 아래의 표에는 상위 10개의 기고자가 나와 있습니다.

1. 표에 표시된 기고자 수를 변경하려면 그래프 상단에 있는 **Top 10 contributors(상위 10개의 기고자)**를 선택합니다.

1. 단일 기고자의 결과만 표시하도록 그래프를 필터링하려면 표 범례에서 해당 기고자를 선택합니다. 모든 기고자를 다시 표시하려면 범례에서 동일한 기고자를 다시 선택합니다.

1. 보고서에 표시된 시간 범위를 변경하려면 그래프 맨 위에서 **15m**, **30m**, **1h**, **2h**, **3h** 또는 **사용자 정의(Custom)**를 선택합니다.

   보고서의 최대 시간 범위는 24시간이지만 최대 15일 전에 발생한 24시간 기간을 선택할 수 있습니다. 과거의 기간을 선택하려면 **custom(사용자 지정)**, **absolute(절대값)**를 선택한 다음 기간을 지정합니다.

1. 기고자의 집계 및 순위에 사용되는 기간의 길이를 변경하려면 그래프 상단에서 **period(기간)**를 선택합니다. 더 긴 기간을 보면 일반적으로 스파이크가 거의 없는 더 부드러운 보고서가 표시됩니다. 더 짧은 기간을 선택하면 스파이크가 나타날 가능성이 더 큽니다.

1. 이 그래프를 CloudWatch 대시보드에 추가하려면 [**대시보드에 추가(Add to dashboard)**]를 선택합니다.

1. 이 보고서의 로그 그룹이 쿼리 상자에 이미 로드된 상태로 CloudWatch Logs Insights 쿼리 창을 열려면 [**로그 보기(View logs)**]를 선택합니다.

1. 보고서 데이터를 클립보드나 CSV 파일로 내보내려면 **내보내기**를 선택합니다.

# CloudWatch에서 규칙에 따라 생성된 지표 그래프 작성
<a name="ContributorInsights-GraphReportData"></a>

Contributor Insights는 지표 수학 함수 `INSIGHT_RULE_METRIC`을 제공합니다. 이 함수를 사용하여 Contributor Insights 보고서의 데이터를 CloudWatch 콘솔 [**지표(Metrics)**] 탭의 그래프에 추가할 수 있습니다. 이 수학 함수를 기반으로 경보를 설정할 수도 있습니다. 지표 수학 함수에 대한 자세한 내용은 [CloudWatch 지표에 수학 표현식 사용](using-metric-math.md) 단원을 참조하세요.

이 지표 수학 함수를 사용하려면 `cloudwatch:GetMetricData` 및 `cloudwatch:GetInsightRuleReport` 권한이 모두 있는 계정에 로그인해야 합니다.



구문은 `INSIGHT_RULE_METRIC(ruleName, metricName)`입니다. *ruleName*은 Contributor Insights 규칙의 이름이고 *metricName*은 다음 목록의 값 중 하나입니다. *metricName*의 값은 수학 함수가 반환하는 데이터의 유형을 결정합니다.
+ `UniqueContributors` - 각 데이터 요소에 대한 고유한 기여 요소 수입니다.
+ `MaxContributorValue` - 각 데이터 요소에 대한 최상위 기여 요소의 값입니다. 그래프의 각 데이터 포인트에 대해 기고자의 ID가 변경될 수 있습니다.

  이 규칙이 `Count`를 기준으로 집계되는 경우 각 데이터 요소의 최상위 기여 요소는 해당 기간에 가장 많이 발생한 기여 요소입니다. 규칙이 `Sum`을 기준으로 집계되는 경우 최상위 기여 요소는 해당 기간 동안 규칙의 `Value`로 지정된 로그 필드에서 합계가 가장 큰 기여 요소입니다.
+ `SampleCount` - 규칙과 일치하는 데이터 요소의 수입니다.
+ `Sum` - 해당 데이터 요소가 나타내는 기간 동안 모든 기여 요소의 값 합계입니다.
+ `Minimum` - 해당 데이터 요소가 나타내는 기간 동안 단일 관측치의 최솟값입니다.
+ `Maximum` - 해당 데이터 요소가 나타내는 기간 동안 단일 관측치의 최댓값입니다.
+ `Average` - 해당 데이터 요소가 나타내는 기간 동안 모든 기여 요소의 평균 값입니다.

## Contributor Insights 지표 데이터에 대한 경보 설정하기
<a name="ContributorInsights-GraphReportData-Alarm"></a>

`INSIGHT_RULE_METRIC` 함수를 사용하여 Contributor Insights가 생성하는 지표에 대한 경보를 설정할 수 있습니다. 예를 들어, 거부된 전송 제어 프로토콜(TCP) 연결의 비율을 기준으로 경보를 생성할 수 있습니다. 이 유형의 경보를 시작하려면 다음 두 예제에 표시된 것과 같은 규칙을 생성할 수 있습니다.

**예제 규칙: “RejectedConnectionsRule”**

```
{
    "Schema": {
        "Name": "CloudWatchLogRule",
        "Version": 1
    },
    "LogGroupNames": [
        "/aws/containerinsights/sample-cluster-name/flowlogs"
    ],
    "LogFormat": "CLF",
    "Fields": {
        "3": "interfaceID",
        "4": "sourceAddress",
        "8": "protocol",
        "13": "action"
    },
    "Contribution": {
        "Keys": [
            "interfaceID",
            "sourceAddress"
        ],
        "Filters": [
            {
                "Match": "protocol",
                "EqualTo": 6
            },
            {
                "Match": "action",
                "In": [
                    "REJECT"
                ]
            }
        ]
    },
    "AggregateOn": "Sum"
}
```

**예제 규칙: “TotalConnectionsRule”**

```
{
    "Schema": {
        "Name": "CloudWatchLogRule",
        "Version": 1
    },
    "LogGroupNames": [
        "/aws/containerinsights/sample-cluster-name/flowlogs"
    ],
    "LogFormat": "CLF",
    "Fields": {
        "3": "interfaceID",
        "4": "sourceAddress",
        "8": "protocol",
        "13": "action"
    },
    "Contribution": {
        "Keys": [
            "interfaceID",
            "sourceAddress"
        ],
        "Filters": [{
            "Match": "protocol",
            "EqualTo": 6
        }],
        "AggregateOn": "Sum"
    }
}
```

규칙을 생성하면 다음의 지표 수학 표현식 예를 사용하여 Contributor Insights가 보고하는 데이터를 그래프로 표시할 수 있는 CloudWatch 콘솔에서 **지표(Metrics)** 탭을 선택합니다.

**예: 지표 수학 표현식**

```
e1 INSIGHT_RULE_METRIC("RejectedConnectionsRule", "Sum")
e2 INSIGHT_RULE_METRIC("TotalConnectionsRule", "Sum")
e3 (e1/e2)*100
```

이 예에서 `e3` 지표 수학 표현식은 거부된 모든 TCP 연결을 반환합니다. TCP 연결의 20%가 거부되는 경우 알림을 받으려면, 임곗값을 `100`에서 `20`으로 변경하여 표현식을 수정할 수 있습니다.

**참고**  
**지표(Metrics)** 섹션에서 모니터링하는 지표에 대해 경보를 설정할 수 있습니다. **그래프로 표시된 지표(Graphed metrics)** 탭에서 **작업(Actions)** 열 아래에 있는 **경보 생성(Create alarm)** 아이콘을 선택할 수 있습니다. **경보 생성(Create alarm)** 아이콘은 종 모양으로 되어 있습니다.

지표 그래프 작성 및 지표 수학 함수 사용에 대한 자세한 내용은 [CloudWatch 그래프에 수학 표현식 추가](using-metric-math.md#adding-metrics-expression-console) 섹션을 참조하세요.

# CloudWatch에서 Contributor Insights 기본 제공 규칙 사용
<a name="ContributorInsights-BuiltInRules"></a>

Contributor Insights 기본 제공 규칙을 사용하여 다른 AWS 서비스의 지표를 분석할 수 있습니다. 기본 제공 규칙을 지원하는 서비스는 다음과 같습니다.
+ *Amazon DynamoDB 개발자 가이드*의 [Amazon DynamoDB용 Contributor Insights](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/contributorinsights.html)
+ *AWS PrivateLink 가이드*의 [기본 제공되는 Contributor Insights 규칙 사용](https://docs.aws.amazon.com/vpc/latest/privatelink/privatelink-cloudwatch-metrics.html#privatelink-contributor-insights)

# CloudWatch Application Insights로 일반적인 애플리케이션 문제 감지
<a name="cloudwatch-application-insights"></a>

Amazon CloudWatch Application Insights를 사용하여 애플리케이션 문제를 감지할 수 있습니다. CloudWatch Application Insights에서 애플리케이션 및 기본 AWS 리소스의 상태를 확인할 수 있습니다. 애플리케이션 리소스에 대한 최상의 모니터를 설정하고 데이터를 분석하여 애플리케이션 문제의 징후가 있는지 지속적으로 확인할 수 있습니다. [SageMaker](https://docs.aws.amazon.com/sagemaker/latest/dg/wahtis.html) 및 기타 AWS 기술을 기반으로 하는 Application Insights는 모니터링되는 애플리케이션의 잠재적인 문제를 보여 주는 자동화된 대시보드를 제공하므로 애플리케이션 및 인프라와 관련된 지속적인 문제를 신속하게 격리할 수 있습니다. Application Insights가 제공하는 애플리케이션 상태에 대한 향상된 가시성을 통해 MTTR(Mean Time to Repair)을 줄일 수 있으므로 애플리케이션 문제를 해결할 수 있습니다.

Amazon CloudWatch Application Insights에 애플리케이션을 추가하면 Application Insights가 애플리케이션의 리소스를 검색하고 [CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html)에서 애플리케이션 구성 요소에 대한 지표 및 로그를 권장하고 구성합니다. 애플리케이션 구성 요소의 예로는 SQL Server 백엔드 데이터베이스 및 Microsoft IIS/웹 티어가 있습니다. Application Insights는 기록 데이터를 사용한 지표 패턴 분석을 통해 이상을 감지하고 애플리케이션, 운영 체제 및 인프라 로그에서 오류 및 예외를 지속적으로 감지합니다. 이 알고리즘은 분류 알고리즘과 기본 규칙을 조합하여 이러한 관찰 결과를 연결합니다. 그런 다음, 작업 우선 순위를 지정하는 데 도움이 되는 관련 관찰 및 문제 심각도 정보를 보여 주는 대시보드를 자동으로 생성합니다. 애플리케이션 대기 시간, SQL Server 백업 실패, 메모리 누수, 대용량 HTTP 요청, 취소된 I/O 작업과 같은 일반적인 .NET 및 SQL 애플리케이션 스택 문제에 대해 가능한 근본 원인 및 해결 단계를 나타내는 추가 인사이트를 제공합니다. [AWS SSM OpsCenter](https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter.html)와의 기본 통합 기능을 통해 관련 Systems Manager Automation 문서를 실행하여 문제를 해결할 수 있습니다.

**Topics**
+ [Amazon CloudWatch Application Insights란?](appinsights-what-is.md)
+ [Application Insights 작동 방식](appinsights-how-works.md)
+ [사전 요구 사항, IAM 정책, 권한](appinsights-accessing.md)
+ [모니터링을 위한 애플리케이션 설정](appinsights-setting-up.md)
+ [Application Insights의 교차 계정 관찰성](appinsights-cross-account.md)
+ [구성 요소 구성 작업](component-config.md)
+ [CloudFormation 템플릿 사용](appinsights-cloudformation.md)
+ [자습서: SAP ASE의 모니터링 설정](appinsights-tutorial-sap-ase.md)
+ [자습서: SAP HANA에 대한 모니터링 설정](appinsights-tutorial-sap-hana.md)
+ [자습서: SAP NetWeaver에 대한 모니터링 설정](appinsights-tutorial-sap-netweaver.md)
+ [Application Insights 문제 보기 및 해결](appinsights-troubleshooting.md)
+ [지원되는 로그 및 지표](appinsights-logs-and-metrics.md)

# Amazon CloudWatch Application Insights란?
<a name="appinsights-what-is"></a>

CloudWatch Application Insights를 사용하면 다른 [애플리케이션 리소스](#appinsights-components)와 함께 Amazon EC2 인스턴스를 사용하는 애플리케이션을 모니터링할 수 있습니다. 이 기능은 애플리케이션 리소스 및 기술 스택(예: Microsoft SQL Server 데이터베이스, 웹(IIS) 및 애플리케이션 서버, OS, 로드 밸런서, 대기열 등) 전반에서 주요 지표 로그 및 경보를 파악하고 설정합니다. 지표 및 로그를 지속적으로 모니터링하여 이상 및 오류를 감지하고 연결합니다. 오류 및 이상이 감지되면 Application Insights에서 알림을 설정하고 작업을 수행할 수 있는 [CloudWatch Events](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/WhatIsCloudWatchEvents.html)를 생성합니다. Application Insights는 문제 해결을 지원하기 위해 잠재적 근본 원인을 알려 주는 추가 인사이트와 함께 상관관계가 있는 지표 이상 및 로그 오류를 비롯하여 감지한 문제에 대한 자동화된 대시보드를 생성합니다. 자동화된 대시보드를 사용하면 애플리케이션의 상태를 정상으로 유지하고 애플리케이션의 최종 사용자에게 미치는 영향을 방지하기 위한 수정 조치를 취할 수 있습니다. 또한 [AWS SSM OpsCenter](https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter.html)를 사용하여 문제를 해결할 수 있도록 OpsItem을 생성합니다.

CloudWatch에서 Windows 이벤트 로그뿐만 아니라 미러링된 쓰기 트랜잭션/초, 복구 대기열 길이, 트랜잭션 지연과 같은 중요한 카운터를 구성할 수 있습니다. 대상 데이터베이스 쿼리에 대한 제한된 액세스와 같이 SQL HA 워크로드에 장애 조치 이벤트 또는 문제가 발생하면 CloudWatch Application Insights는 자동화된 인사이트를 제공합니다.

CloudWatch Application Insights는 [AWS Launch Wizard](https://docs.aws.amazon.com/launchwizard/latest/userguide/what-is-launch-wizard.html)와 통합되어 AWS에 SQL Server HA 워크로드를 배포하기 위한 원클릭 모니터링 설정 환경을 제공합니다. [Launch Wizard 콘솔](https://console.aws.amazon.com/launchwizard)에서 Application Insights를 사용하여 모니터링 및 인사이트를 설정하는 옵션을 선택하면 CloudWatch Application Insights는 CloudWatch에서 관련 지표, 로그, 경보를 자동으로 설정하고 새로 배포된 워크로드의 모니터링을 시작합니다. CloudWatch 콘솔에서 SQL Server HA 워크로드의 상태와 함께 자동화된 인사이트 및 감지된 문제를 확인할 수 있습니다.

**Topics**
+ [특성](#appinsights-features)
+ [개념](#appinsights-concepts)
+ [가격 책정](#appinsights-pricing)
+ [관련 서비스](#appinsights-related-services)
+ [지원되는 애플리케이션 구성 요소](#appinsights-components)
+ [지원되는 기술 스택](#appinsights-stack)

## 특성
<a name="appinsights-features"></a>

Application Insights는 다음 기능을 제공합니다.

**애플리케이션 리소스 모니터 자동 설정**  
CloudWatch Application Insights는 애플리케이션에 대한 모니터링을 설정하는 데 걸리는 시간을 줄여줍니다. 그 방법은 애플리케이션 리소스를 검색하고 권장 지표 및 로그의 사용자 지정 목록을 제공하여 이를 CloudWatch에서 설정함으로써 Amazon EC2 및 Elastic Load Balancer(ELB)와 같은 애플리케이션 리소스에 필요한 가시성을 제공하는 것입니다. 또한 모니터링된 지표에 대해 동적 경보를 설정합니다. 경보는 지난 2주 동안 감지된 이상을 기반으로 자동 업데이트됩니다.

**문제 감지 및 알림**  
CloudWatch Application Insights는 지표 이상 및 로그 오류와 같은 애플리케이션 관련 잠재적 문제의 징후를 감지합니다. 이 관찰 결과를 통해 애플리케이션의 잠재적 문제를 표면화할 수 있습니다. 그런 다음 [알림을 받거나 작업을 수행하도록 구성할 수 있는](appinsights-cloudwatch-events.md) CloudWatch Events를 생성합니다. 따라서 지표나 로그 오류에 대한 개별 경보를 생성할 필요가 없습니다. 또한 [Amazon SNS 알림을 구성](appinsights-problem-notifications.md)하여 감지된 문제에 대한 알림을 수신할 수 있습니다.

**문제 해결**  
CloudWatch Application Insights는 감지된 문제에 대한 CloudWatch 자동 대시보드를 생성합니다. 대시보드에는 문제 해결에 도움이 되는 관련 지표 이상 및 로그 오류를 포함하여 문제에 대한 세부 정보가 표시됩니다. 또한 이상 및 오류의 잠재적 근본 원인을 파악하는 추가 통찰력을 제공합니다.

## 개념
<a name="appinsights-concepts"></a>

다음은 Application Insights가 애플리케이션을 모니터링하는 방법을 이해하는 데 있어 중요한 개념입니다.

**구성 요소**  
애플리케이션을 구성하는 유사한 리소스의 자동 그룹형, 독립 실행형 또는 사용자 지정 그룹. 모니터링 기능을 향상시키기 위해서는 유사한 리소스를 사용자 지정 구성 요소로 그룹화하는 것이 좋습니다.

**관측치**  
애플리케이션 또는 애플리케이션 리소스에서 감지된 개별 이벤트(지표 이상, 로그 오류 또는 예외)

**문제**  
문제는 관련 관찰을 연결, 분류 및 그룹화하여 감지됩니다.

CloudWatch Application Insights의 다른 주요 개념에 대한 정의는 [Amazon CloudWatch 개념](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html) 단원을 참조하세요.

## 가격 책정
<a name="appinsights-pricing"></a>

CloudWatch Application Insights는 탐지된 문제에 대한 알림을 위해 CloudWatch 지표, 로그 및 이벤트를 사용하여 선택한 애플리케이션 리소스에 대해 권장되는 지표 및 로그를 설정합니다. 이러한 기능은 [CloudWatch 요금](https://aws.amazon.com/cloudwatch/pricing)에 따라 AWS 계정으로 청구됩니다. 탐지된 문제의 경우 Application Insights에서 [SSM OpsItems](https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter-working-with-OpsItems.html)가 생성되어 문제에 대해 알려줍니다. 또한 Application Insights는 [SSM Parameter Store 파라미터](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html)를 생성하여 인스턴스에서 CloudWatch 에이전트를 구성합니다. Amazon EC2 Systems Manager 기능은 [SSM 요금제](https://aws.amazon.com/systems-manager/pricing/)에 따라 요금이 부과됩니다. 설정 지원, 데이터 분석 모니터링 또는 문제 탐지에 대해서는 비용이 청구되지 않습니다.

### CloudWatch Application Insights 비용
<a name="appinsights-pricing-ec2"></a>

Amazon EC2 비용에는 다음 기능 사용이 포함됩니다.
+ CloudWatch 에이전트
  + CloudWatch 에이전트 로그 그룹
  + CloudWatch 에이전트 지표
  + Prometheus 로그 그룹(JMX 워크로드용)

모든 리소스 비용에는 다음 기능 사용량이 포함됩니다.
+ CloudWatch 경보(비용의 대부분)
+ SSM OpsItems(최소 비용)

### 비용 계산 예
<a name="appinsights-pricing-example"></a>

이 예제의 비용은 다음 시나리오에 따라 고려됩니다.

다음을 포함하는 리소스 그룹을 생성했습니다.
+ SQL Server가 설치된 Amazon EC2 인스턴스.
+ 연결된 Amazon EBS 볼륨.

CloudWatch Application Insights로 이 리소스 그룹을 온보딩하면 Amazon EC2 인스턴스에 설치된 SQL Server 워크로드가 탐지됩니다. CloudWatch Application Insights는 다음 지표를 모니터링하기 시작합니다.

SQL Server 인스턴스에 대해 다음 지표가 모니터링됩니다.
+ CPUUtilization
+ StatusCheckFailed
+ Memory % Committed Bytes in Use
+ 사용 가능한 메모리(MB)
+ 네트워크 인터페이스 바이트 합계/초
+ 페이징된 파일 % 사용량
+ Physical Disk % Disk Time
+ 프로세서 % 프로세서 시간
+ SQLServer:Buffer Manager cache hit ratio
+ SQLServer:Buffer Manager life expectancy
+ SQLServer:차단된 일반 통계 프로세스
+ SQLServer:일반 통계 사용자 연결
+ SQLServer:잠금 교착 상태 수/초
+ SQLServer:SQL 통계 배치 요청/초
+ 시스템 프로세서 대기열 길이

SQL Server 인스턴스에 연결된 볼륨에 대해 다음 지표가 모니터링됩니다.
+ VolumeReadBytes
+ VolumeWriteBytes
+ VolumeReadOps
+ VolumeWriteOps
+ VolumeTotalReadTime
+ VolumeTotalWriteTime
+ VolumeIdleTime
+ VolumeQueueLength
+ VolumeThroughputPercentage
+ VolumeConsumedReadWriteOps
+ BurstBalance

이 시나리오의 경우 [CloudWatch 요금](https://aws.amazon.com/cloudwatch/pricing/) 페이지와 [SSM 요금](https://aws.amazon.com/systems-manager/pricing/) 페이지에 따라 비용이 계산됩니다.
+ **사용자 지정 지표**

  이 시나리오의 경우 위 지표 중 13개가 CloudWatch 에이전트를 사용하여 CloudWatch로 내보내집니다. 이러한 지표는 사용자 지정 지표로 처리됩니다. 각 사용자 지정 지표의 비용은 월 0.3 USD입니다. 이러한 사용자 지정 지표의 총 비용은 13 \$1 0.3 USD = 3.90 USD/월입니다.
+ **경보**

  이 시나리오의 경우 CloudWatch Application Insights는 총 26개의 지표를 모니터링하여 26개의 경보를 생성합니다. 각 경보의 비용은 0.1 USD/월입니다. 경보의 총 비용은 26 \$1 \$1.1 = 2.60 USD/월입니다.
+ **데이터 모으기 및 오류 로그**

  데이터 모으기 비용은 0.05 USD/GB이고 SQL Server 오류 로그의 스토리지는 0.03 USD/GB입니다. 데이터 모으기 및 오류 로그에 드는 총 비용은 0.05 USD/GB \$1 0.03 USD/GB= 0.08 USD/GB입니다.
+ **Amazon EC2 Systems Manager OpsItems**

  CloudWatch Application Insights에서 탐지된 각 문제에 대해 SSM OpsItem이 생성됩니다. 애플리케이션에 문제가 *n*개 있는 경우 총 비용은 월 0.00267 USD \$1 *n*입니다.

## 관련 서비스
<a name="appinsights-related-services"></a>

다음 서비스가 CloudWatch Application Insights와 함께 사용됩니다.

**관련 AWS 서비스**
+ **Amazon CloudWatch**를 사용하여 시스템 전체의 리소스 사용률, 애플리케이션 성능 및 운영 상태를 파악할 수 있습니다. 지표를 수집 및 추적하고 경보 알림을 보내고 정의한 규칙에 따라 모니터링 중인 리소스를 자동으로 업데이트하고 사용자 지정 지표를 모니터링할 수 있습니다. CloudWatch Application Insights는 CloudWatch를 통해, 특히 CloudWatch 기본 운영 대시보드 내에서 시작됩니다. 자세한 내용은 [https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html)를 참조하세요.
+ **CloudWatch Container Insights**는 컨테이너 애플리케이션 및 마이크로서비스의 지표 및 로그를 수집하고, 종합하며, 요약합니다. Container Insights를 사용하여 Amazon EC2에서 Amazon ECS, Amazon Elastic Kubernetes Service 및 Kubernetes 플랫폼을 모니터링할 수 있습니다. Container Insights 또는 Application Insights 콘솔에서 Application Insights를 활성화하면 Application Insights는 Container Insights 대시보드에 감지된 문제를 표시합니다. 자세한 정보는 [Container Insights](ContainerInsights.md)을 참조하세요.
+ **Amazon DynamoDB**는 분산 데이터베이스를 운영하고 크기 조정하는 데 따른 관리 부담을 없애주는 완전관리형 NoSQL 데이터베이스 서비스로, 하드웨어 프로비저닝, 설정 및 구성, 복제, 소프트웨어 패치 적용 또는 클러스터 크기 조정에 대해 걱정할 필요가 없게 합니다. 또한 DynamoDB는 유휴 시 암호화를 제공하여 중요한 데이터 보호와 관련된 운영 부담 및 복잡성을 제거합니다.
+ **Amazon EC2**는 AWS 클라우드에서 확장 가능한 컴퓨팅 용량을 제공합니다. Amazon EC2를 사용하면 필요한 수만큼 적절하게 가상 서버를 시작하고 보안 및 네트워킹을 구성하며 스토리지를 관리할 수 있습니다. 요건이나 갑작스러운 인기 증대 등 변동 사항에 따라 확장하거나 축소할 수 있어 트래픽 예측 필요성이 줄어듭니다. 자세한 내용은 [https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html) 또는 [https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/concepts.html](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/concepts.html)를 참조하세요.
+ **Amazon Elastic Block Store(Amazon EBS)**는 Amazon EC2 인스턴스에 사용할 수 있는 블록 수준 스토리지 볼륨을 제공합니다. Amazon EBS 볼륨은 형식이 지정되지 않은 원시 블록 디바이스처럼 동작합니다. 이러한 볼륨을 인스턴스에 디바이스로 마운트할 수 있습니다. 인스턴스에 연결된 Amazon EBS 볼륨은 스토리지 볼륨으로 표시되며, 인스턴스 수명과 관계없이 지속됩니다. 이러한 볼륨 위에 파일 시스템을 생성하거나 하드 드라이브와 같은 블록 디바이스를 사용하는 것처럼 볼륨을 사용할 수 있습니다. 인스턴스에 연결된 볼륨의 구성을 동적으로 변경할 수 있습니다. 자세한 내용은 [Amazon EBS 사용 설명서](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html)를 참조하세요.
+ **Amazon EC2 Auto Scaling**을 사용하면 애플리케이션의 로드를 처리할 수 있는 정확한 수의 EC2 인스턴스를 유지할 수 있습니다. 자세한 내용은 [https://docs.aws.amazon.com/autoscaling/ec2/userguide/what-is-amazon-ec2-auto-scaling.html](https://docs.aws.amazon.com/autoscaling/ec2/userguide/what-is-amazon-ec2-auto-scaling.html)를 참조하세요.
+ **Elastic Load Balancing**은 여러 가용 영역에 있는 EC2 인스턴스, 컨테이너, IP 주소와 같은 여러 대상에 걸쳐 수신되는 애플리케이션 또는 네트워크 트래픽을 분산합니다. 자세한 내용은 [https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html)를 참조하세요.
+ **IAM**은 사용자의 AWS 리소스에 대한 액세스를 안전하게 제어하도록 지원하는 웹 서비스입니다. IAM을 사용하여 AWS 리소스를 사용할 수 있는 사람을 제어(인증)하고 해당 사용자가 사용할 수 있는 리소스 및 그 사용 방법을 제어(권한 부여)할 수 있습니다. 자세한 내용은 [Amazon CloudWatch에 대한 인증 및 액세스 제어](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/auth-and-access-control-cw.html)를 참조하세요.
+ **AWS Lambda**를 사용하면 이벤트에 의해 트리거되는 함수로 구성된 서버리스 애플리케이션을 구축하고 CodePipeline 및 AWS CodeBuild를 사용해 이를 자동으로 배포할 수 있습니다. 자세한 내용은 [AWS Lambda 애플리케이션](https://docs.aws.amazon.com/lambda/latest/dg/deploying-lambda-apps.html) 단원을 참조하세요.
+ **AWS Launch Wizard for SQL Server**는 SQL Server 고가용성 솔루션을 클라우드에 배포하는 데 걸리는 시간을 줄여줍니다. 서비스 콘솔에서 성능, 노드 수, 연결을 비롯한 애플리케이션 요구 사항을 입력하면 AWS Launch Wizard가 SQL Server Always On 애플리케이션을 배포하고 실행하는 데 적합한 AWS 리소스를 식별합니다.
+ **AWS Resource Groups**를 사용하면 애플리케이션을 구성하는 리소스를 정리할 수 있습니다. Resource Groups를 사용하여 많은 리소스에 대한 작업을 한 번에 관리하고 자동화할 수 있습니다. 단일 애플리케이션에 대해 하나의 리소스 그룹만 등록할 수 있습니다. 자세한 내용은 [https://docs.aws.amazon.com/ARG/latest/userguide/welcome.html](https://docs.aws.amazon.com/ARG/latest/userguide/welcome.html)를 참조하세요.
+ **Amazon SQS**는 내구력 있고 가용성이 뛰어난 보안 호스팅 대기열을 제공하며 이를 통해 분산 소프트웨어 시스템과 구성 요소를 통합 및 분리할 수 있습니다. 자세한 내용은 [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html)를 참조하세요.
+ **AWS Step Functions**는 AWS Lambda 함수를 비롯한 다양한 AWS 서비스 및 리소스를 구조화된 시각적 워크플로로 시퀀싱할 수 있게 하는 서버리스 함수 컴포저입니다. 자세한 내용은 [AWS Step Functions 사용 설명서](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html)를 참조하세요.
+ **AWS SSM OpsCenter**는 서비스 전반에 걸쳐 OpsItem을 집계하고 표준화하는 동시에 각 OpsItem, 관련 OpsItem, 관련 리소스에 관한 상황별 조사 데이터를 제공합니다. OpsCenter는 문제를 신속하게 해결하는 데 사용할 수 있는 Systems Manager Automation 문서(실행서)도 제공합니다. 각 OpsItem에 대해 검색 가능한 사용자 지정 데이터를 지정할 수 있습니다. 상태 및 소스별로 OpsItem에 대한 자동 생성 요약 보고서를 볼 수도 있습니다. 자세한 내용은 [https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter.html](https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter.html)를 참조하세요.
+ **Amazon API Gateway**는 규모와 관계없이 REST, HTTP 및 WebSocket API를 생성하고 게시하며 유지 관리하고 모니터링하며 보호하기 위한 AWS 서비스입니다. API 개발자는 AWS 또는 다른 웹 서비스를 비롯해 AWS 클라우드에 저장된 데이터에 액세스하는 API를 생성할 수 있습니다. 자세한 내용은 [Amazon API Gateway 사용 설명서](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html)를 참조하세요.
**참고**  
Application Insights는 REST API 프로토콜(API Gateway 서비스의 v1)만 지원합니다.
+ **Amazon Elastic Container Service(Amazon ECS)**는 완전관리형 컨테이너 오케스트레이션 서비스입니다. Amazon ECS를 사용하여 가장 민감하고 미션 크리티컬한 애플리케이션을 실행할 수 있습니다. 자세한 내용은 [Amazon Elastic Container Service 개발자 안내서](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html)를 참조하세요.
+ **Amazon Elastic Kubernetes Service(Amazon EKS)**는 자체 Kubernetes 제어 영역 또는 노드를 설치, 운영, 유지 관리할 필요 없이 AWS에서 Kubernetes를 실행하는 데 사용할 수 있는 관리형 서비스입니다. Kubernetes는 컨테이너화된 애플리케이션의 배포, 조정 및 관리 자동화를 위한 오픈 소스 시스템입니다. 자세한 내용은 [Amazon EKS 사용 설명서](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html)를 참조하세요.
+ **Amazon EC2의 Kubernetes**. Kubernetes는 컨테이너화된 애플리케이션을 대규모로 배포하고 관리하도록 지원하는 오픈 소스 소프트웨어입니다. Kubernetes는 Amazon EC2 컴퓨팅 인스턴스 클러스터를 관리하며 배포, 유지 관리 및 크기 조정 프로세스를 통해 해당 인스턴스에서 컨테이너를 실행합니다. Kubernetes를 사용하면 온프레미스 및 클라우드에서 동일한 도구 세트로 모든 유형의 컨테이너화된 애플리케이션을 실행할 수 있습니다. 자세한 내용은 [Kubernetes 설명서: 시작하기](https://kubernetes.io/docs/setup/)를 참조하세요.
+ **Amazon FSx**를 통해 널리 사용되는 AWS의 완전관리형 파일 시스템을 시작하고 실행할 수 있습니다. Amazon FSx를 사용하면 일반적인 오픈 소스 및 상용 라이선스 파일 시스템의 기능 세트와 성능을 활용하여 시간이 많이 소요되는 관리 태스크를 피할 수 있습니다. 자세한 내용은 [Amazon FSx 설명서](https://docs.aws.amazon.com/fsx/)를 참조하세요.
+ **Amazon Simple Notification Service (SNS)**는 애플리케이션 간 통신과 애플리케이션 대 개인 통신 모두를 위한 완전관리형 메시징 서비스입니다. Application Insights를 통해 모니터링하도록 Amazon SNS를 구성할 수 있습니다. Amazon SNS가 모니터링을 위한 리소스로 구성된 경우 Application Insights는 SNS 지표를 추적하여 SNS 메시지에 문제가 발생하거나 실패할 수 있는 이유를 파악할 수 있습니다.
+ **Amazon Elastic File System(Amazon EFS)**는AWS 클라우드 서비스 및 온프레미스 리소스와 함께 사용할 수 있는 완전 관리형 엘라스틱 NFS 파일 시스템입니다. 애플리케이션 중단 없이 필요에 따라 페타바이트까지 확장할 수 있도록 구축되었습니다. 파일을 추가 및 제거하면 용량이 자동으로 확장 및 축소되므로 확장을 수용하기 위해 용량을 프로비저닝하고 관리할 필요가 없습니다. 자세한 내용은 [Amazon Elastic File System 문서](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEFS.html)를 참조하세요.

**관련 서드 파티 서비스**
+ Application Insights에서 모니터링되는 일부 워크로드 및 애플리케이션의 경우 **Prometheus JMX Exporter**가 AWS Systems Manager Distributor를 사용하여 설치되므로 CloudWatch Application Insights가 Java 관련 지표를 검색할 수 있습니다. Java 애플리케이션을 모니터링하도록 선택하면 Application Insights가 자동으로 Prometheus JMX Exporter를 설치합니다.

## 지원되는 애플리케이션 구성 요소
<a name="appinsights-components"></a>

CloudWatch Application Insights는 리소스 그룹을 검색하여 애플리케이션 구성 요소를 식별합니다. 구성 요소는 독립 실행형, 자동 그룹형(예: Auto Scaling 그룹의 인스턴스 또는 로드 밸런서 뒤의 인스턴스) 또는 사용자 지정(개별 Amazon EC2 인스턴스 그룹화) 형식일 수 있습니다.

CloudWatch Application Insights는 다음 구성 요소를 지원합니다.

**AWS 구성 요소**
+ Amazon EC2
+ Amazon EBS
+ Amazon RDS
+ Elastic Load Balancing: Application Load Balancer 및 Classic Load Balancer(이러한 로드 밸런서의 모든 대상 인스턴스가 식별되고 구성됨)
+ Amazon EC2 Auto Scaling 그룹: AWS Auto Scaling(오토 스케일링 그룹은 모든 대상 인스턴스에 대해 동적으로 구성되며, 애플리케이션이 확장되면 CloudWatch Application Insights가 자동으로 새 인스턴스 구성함) Auto Scaling 그룹은 CloudFormation 스택 기반 리소스 그룹에서 지원되지 않습니다.
+ AWS Lambda
+ Amazon Simple Queue Service(Amazon SQS)
+ Amazon DynamoDB 테이블
+ Amazon S3 버킷 지표
+ AWS Step Functions
+ Amazon API Gateway REST API 스테이지
+ Amazon Elastic Container Service(Amazon ECS): 클러스터, 서비스, 태스크
+ Amazon Elastic Kubernetes Service(Amazon EKS): 클러스터
+ Amazon EC2의 Kubernetes: EC2에서 실행되는 Kubernetes 클러스터
+ Amazon SNS 주제

CloudWatch Application Insights는 현재 다른 구성 요소 유형 리소스를 추적하지 않습니다. 지원되는 구성 요소 유형이 Application Insights 애플리케이션에 나타나지 않으면 해당 구성 요소가 이미 Application Insights에서 모니터링 중인 다른 애플리케이션에서 등록되고 관리되는 것일 수 있습니다.

## 지원되는 기술 스택
<a name="appinsights-stack"></a>

CloudWatch Application Insights를 사용하면 다음 기술 중 하나에 대한 애플리케이션 티어 드롭다운 메뉴 옵션을 선택하여 Windows Server 및 Linux 운영 체제에서 실행되는 애플리케이션을 모니터링할 수 있습니다.
+ 프런트 엔드: Microsoft 인터넷 정보 서비스(IIS) 웹 서버
+ 작업자 티어: 
  + .NET Framework 
  + .NET Core
+ 애플리케이션:
  + Java
  + SAP NetWeaver 표준, 분산, 고가용성 배포
+  Active Directory
+ SharePoint
+ 데이터베이스 
  + Amazon RDS 또는 Amazon EC2에서 실행되는 Microsoft SQL Server(SQL Server 고가용성 구성 포함, [구성 요소 구성 예제](component-configuration-examples.md) 단원 참조)
  + Amazon RDS, Amazon Aurora 또는 Amazon EC2에서 실행되는 MySQL
  + Amazon RDS 또는 Amazon EC2에서 실행되는 PostgreSQL
  + Amazon DynamoDB 테이블
  + Amazon RDS 또는 Amazon EC2에서 실행되는 Oracle
  + 단일 Amazon EC2 인스턴스와 여러 EC2 인스턴스의 SAP HANA 데이터베이스
  + 교차 AZ SAP HANA 데이터베이스 고가용성 설정
  + 단일 Amazon EC2 인스턴스의 SAP Sybase ASE 데이터베이스
  + 교차 AZ SAP Sybase ASE 데이터베이스 고가용성 설정

위에 나열된 기술 스택이 애플리케이션 리소스에 적용되지 않는 경우 [**모니터링 관리(Manage monitoring)**] 페이지의 애플리케이션 티어 드롭다운 메뉴에서 [**사용자 지정(Custom)**]을 선택하여 애플리케이션 스택을 모니터링할 수 있습니다.

# Amazon CloudWatch Application Insights 작동 방식
<a name="appinsights-how-works"></a>

CloudWatch Application Insights는 애플리케이션 리소스의 모니터링을 제공합니다. 다음 정보는 Application Insights의 작동 방식을 설명합니다.

**Topics**
+ [Application Insights가 애플리케이션을 모니터링하는 방식](#appinsights-how-works-sub)
+ [데이터 보존](#appinsights-retention)
+ [할당량](#appinsights-limits)
+ [CloudWatch Application Insights에서 사용하는 AWS Systems Manager(SSM) 패키지](appinsights-ssm-packages.md)
+ [CloudWatch Application Insights에서 사용하는 AWS Systems Manager(SSM) 문서](appinsights-ssm-documents.md)

## Application Insights가 애플리케이션을 모니터링하는 방식
<a name="appinsights-how-works-sub"></a>

다음 정보는 Application Insights가 애플리케이션을 모니터링하는 방법을 설명합니다.

**애플리케이션 검색 및 구성**  
애플리케이션이 CloudWatch Application Insights에 처음 추가되면 Application Insights는 애플리케이션 구성 요소를 검색하여 애플리케이션에 대해 모니터링할 주요 지표, 로그, 기타 데이터 원본을 권장합니다. 그러면 이러한 권장 사항을 기반으로 애플리케이션을 구성할 수 있습니다.

**데이터 사전 처리**  
CloudWatch Application Insights는 애플리케이션 리소스 전반에서 모니터링되는 데이터 원본을 지속적으로 분석하여 지표 이상 및 로그 오류를 발견합니다(관찰).

**지능형 문제 감지**  
CloudWatch Application Insights 엔진은 분류 알고리즘과 기본 제공 규칙을 사용하여 관찰을 상호 연결함으로써 애플리케이션의 문제를 감지합니다. 문제 해결을 돕기 위해 문제에 대한 상황별 정보가 포함된 자동 CloudWatch 대시보드를 만듭니다.

**알림 및 작업**  
CloudWatch Application Insights는 애플리케이션 관련 문제를 감지하면 CloudWatch Events를 생성하여 문제를 알려 줍니다. 이러한 이벤트를 설정하는 방법에 대한 자세한 내용은 [감지된 문제에 대한 Application Insights CloudWatch Events](appinsights-cloudwatch-events.md) 단원을 참조하세요. 또한 [Amazon SNS 알림을 구성](appinsights-problem-notifications.md)하여 감지된 문제에 대한 알림을 수신할 수 있습니다.

**예제 시나리오**

SQL Server 데이터베이스가 지원하는 ASP .NET 애플리케이션이 있습니다. 갑자기 메모리 부족 문제가 발생하여 데이터베이스가 오작동하기 시작합니다. 이로 인해 애플리케이션 성능이 저하되고 웹 서버 및 로드 밸런서에서 HTTP 500 오류가 발생할 수 있습니다.

CloudWatch Application Insights 및 지능형 분석을 사용하면 동적으로 생성된 대시보드에서 관련 지표 및 로그 파일 조각을 확인하여 문제를 일으키는 애플리케이션 계층을 식별할 수 있습니다. 이 경우 SQL 데이터베이스 계층에 문제가 있을 수 있습니다.

## 데이터 보존
<a name="appinsights-retention"></a>

CloudWatch Application Insights는 55일 동안 문제를 유지하고 60일 동안 관찰을 유지합니다.

## 할당량
<a name="appinsights-limits"></a>

CloudWatch Application Insights의 기본 할당량은 [Amazon CloudWatch Application Insights 엔드포인트 및 할당량](https://docs.aws.amazon.com/general/latest/gr/applicationinsights.html) 단원을 참조하세요. 별도로 명시되지 않는 한 각 할당량은 AWS 리전별로 적용됩니다. 서비스 할당량 증가를 요청하려면 [AWS Support](https://console.aws.amazon.com/support/home#/case/create?issueType=technical)에 문의하세요. 많은 서비스에는 변경할 수 없는 할당량이 포함되어 있습니다. 특정 서비스의 할당량에 대한 자세한 내용은 해당 서비스 설명서를 참조하세요.

# CloudWatch Application Insights에서 사용하는 AWS Systems Manager(SSM) 패키지
<a name="appinsights-ssm-packages"></a>

이 섹션에 나열된 패키지는 Application Insights에서 사용하며 AWS Systems Manager Distributor를 통해 개별적으로 관리하고 배포할 수 있습니다. SSM Distributor에 대한 자세한 내용은 *AWS Systems Manager 사용 설명서*의 [AWS Systems Manager Distributor](https://docs.aws.amazon.com/systems-manager/latest/userguide/distributor.html) 단원을 참조하세요.

**Topics**
+ [`AWSObservabilityExporter-JMXExporterInstallAndConfigure`](#configure-java)
+ [`AWSObservabilityExporter-SAP-HANADBExporterInstallAndConfigure`](#appinsights-ssm-sap-prometheus)
+ [`AWSObservabilityExporter-HAClusterExporterInstallAndConfigure`](#appinsights-ssm-sap-prometheus-ha)
+ [`AWSObservabilityExporter-SAP-SAPHostExporterInstallAndConfigure`](#appinsights-ssm-sap-host-exporter)
+ [`AWSObservabilityExporter-SQLExporterInstallAndConfigure`](#appinsights-ssm-sql-prometheus)

## `AWSObservabilityExporter-JMXExporterInstallAndConfigure`
<a name="configure-java"></a>

Application Insights의 [Prometheus JMX Exporter](https://prometheus.io/docs/instrumenting/exporters/#third-party-exporters)에서 워크로드별 Java 지표를 검색하여 경보를 구성하고 모니터링할 수 있습니다. Application Insights 콘솔의 [**모니터링 관리(Manage monitoring)**] 페이지에 있는 [**애플리케이션 티어(Application tier)**] 드롭다운에서 [**JAVA 애플리케이션(JAVA application)**]을 선택합니다. 그런 다음, [**JAVA Prometheus Exporter 구성(JAVA Prometheus exporter configuration)**]에서 [**수집 방법(Collection method)**] 및 [**JMX 포트 번호(JMX port number)**]를 선택합니다.

[AWS Systems Manager Distributor](https://docs.aws.amazon.com/systems-manager/latest/userguide/distributor.html)를 사용하여 Application Insights와 별도로 AWS 제공 Prometheus JMX Exporter 패키지를 패키징하고 설치하며 구성하려면 다음 단계를 완료합니다.

**Prometheus JMX Exporter SSM 패키지를 사용하기 위한 사전 조건**
+ SSM Agent 버전 2.3.1550.0 이상이 설치되어 있어야 합니다.
+ JAVA\$1HOME 환경 변수가 설정되어 있어야 합니다.

**`AWSObservabilityExporter-JMXExporterInstallAndConfigure` 패키지 설치 및 구성**  
`AWSObservabilityExporter-JMXExporterInstallAndConfigure` 패키지는 [Prometheus JMX Exporter](https://github.com/prometheus/jmx_exporter)를 설치하고 구성하는 데 사용할 수 있는 SSM Distributor 패키지입니다. Prometheus JMX Exporter가 Java 지표를 전송하면 CloudWatch 서비스의 지표를 검색하도록 CloudWatch 에이전트를 구성할 수 있습니다.

1. 기본 설정을 기반으로 Prometheus GitHub 리포지토리에 위치한 [Prometheus JMX Exporter YAML 구성 파일](https://github.com/prometheus/jmx_exporter#configuration)을 준비합니다. 예제 구성 및 옵션 설명을 사용하여 안내합니다.

1. Base64로 인코딩된 Prometheus JMX Exporter YAML 구성 파일을 [SSM 파라미터 스토어](https://console.aws.amazon.com/systems-manager/parameters)의 새 SSM 파라미터에 복사합니다.

1. [SSM Distributor](https://console.aws.amazon.com/systems-manager/distributor) 콘솔로 이동하여 **Amazon 소유(Owned by Amazon)** 탭을 엽니다. [**AWSObservabilityExporter-JMXExporterInstallAndConfigure**]를 선택하고 [**일회 설치(Install one time)**]를 선택합니다.

1. "추가 인수"를 다음으로 대체하여 첫 번째 단계에서 생성한 SSM 파라미터를 업데이트합니다.

   ```
   {
     "SSM_EXPORTER_CONFIGURATION": "{{ssm:<SSM_PARAMETER_STORE_NAME>}}",
     "SSM_EXPOSITION_PORT": "9404"
   }
   ```
**참고**  
포트 9404는 Prometheus JMX 지표를 전송하는 데 사용되는 기본 포트입니다. 이 포트를 업데이트할 수 있습니다.

**예: Java 지표를 검색하도록 CloudWatch 에이전트 구성**

1. 이전 절차에서 설명한 대로 Prometheus JMX Exporter를 설치합니다. 그런 다음, 포트 상태를 확인하여 인스턴스에 올바르게 설치되었는지 확인합니다.

   Windows 인스턴스에서의 성공적인 설치 예

   ```
   PS C:\> curl http://localhost:9404 (http://localhost:9404/)
   StatusCode : 200
   StatusDescription : OK
   Content : # HELP jvm_info JVM version info
   ```

   Linux 인스턴스에서의 성공적인 설치 예

   ```
   $ curl localhost:9404
   # HELP jmx_config_reload_failure_total Number of times configuration have failed to be reloaded.
   # TYPE jmx_config_reload_failure_total counter
   jmx_config_reload_failure_total 0.0
   ```

1. Prometheus 서비스 검색 YAML 파일을 생성합니다. 아래에 나와 있는 서비스 검색 파일 예에서는 다음을 수행합니다.
   + Prometheus JMX Exporter 호스트 포트를 `localhost: 9404`로 지정합니다.
   + CloudWatch 지표 측정기준으로 설정할 수 있는 레이블(`Application`, `ComponentName`, `InstanceId`)을 지표에 연결합니다.

   ```
   $ cat prometheus_sd_jmx.yaml 
   - targets:
     - 127.0.0.1:9404
     labels:
       Application: myApp
       ComponentName: arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/app/sampl-Appli-MMZW8E3GH4H2/aac36d7fea2a6e5b
       InstanceId: i-12345678901234567
   ```

1. Prometheus JMX Exporter 구성 YAML 파일을 생성합니다. 아래에 나와 있는 구성 파일 예에서는 다음을 지정합니다.
   + 지표 검색 작업 간격 및 시간 제한 기간
   + 작업 이름, 한 번에 반환되는 최대 시계열, 서비스 검색 파일 경로를 포함하는 지표 검색 작업(`jmx` 및 `sap`)으로 스크레이핑이라고도 함 

   ```
   $ cat prometheus.yaml 
   global:
     scrape_interval: 1m
     scrape_timeout: 10s
   scrape_configs:
     - job_name: jmx
       sample_limit: 10000
       file_sd_configs:
         - files: ["/tmp/prometheus_sd_jmx.yaml"]
     - job_name: sap
       sample_limit: 10000
       file_sd_configs:
         - files: ["/tmp/prometheus_sd_sap.yaml"]
   ```

1. CloudWatch 에이전트가 Amazon EC2 인스턴스에 설치되어 있고 버전이 1.247346.1b249759 이상인지 확인합니다. EC2 인스턴스에 CloudWatch 에이전트를 설치하려면 [CloudWatch 에이전트 설치](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/install-CloudWatch-Agent-on-EC2-Instance.html) 단원을 참조하세요. 버전을 확인하려면 [CloudWatch 에이전트 버전에 관한 정보 찾기](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/troubleshooting-CloudWatch-Agent.html#CloudWatch-Agent-troubleshooting-agent-version) 단원을 참조하세요.

1. CloudWatch 에이전트를 구성합니다. CloudWatch 에이전트 구성 파일을 구성하는 방법에 대한 자세한 내용은 [수동으로 CloudWatch 에이전트 구성 파일 생성 또는 편집](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-Configuration-File-Details.html) 단원을 참조하세요. 아래에 나와 있는 CloudWatch 에이전트 구성 파일 예에서는 다음을 수행합니다.
   + Prometheus JMX Exporter 구성 파일 경로를 지정합니다.
   + EMF 지표 로그를 게시할 대상 로그 그룹을 지정합니다.
   + 각 지표 이름에 대해 두 세트의 측정기준을 지정합니다.
   + CloudWatch 지표 8개(지표 이름 4개 \$1 지표 이름당 측정기준 세트 2개)를 전송합니다.

   ```
   {
      "logs":{
         "logs_collected":{
            ....
         },
         "metrics_collected":{
            "prometheus":{
               "cluster_name":"prometheus-test-cluster",
               "log_group_name":"prometheus-test",
               "prometheus_config_path":"/tmp/prometheus.yaml",
               "emf_processor":{
                  "metric_declaration_dedup":true,
                  "metric_namespace":"CWAgent",
                  "metric_unit":{
                     "jvm_threads_current":"Count",
                     "jvm_gc_collection_seconds_sum":"Second",
                     "jvm_memory_bytes_used":"Bytes"
                  },
                  "metric_declaration":[
                     {
                        "source_labels":[
                           "job"
                        ],
                        "label_matcher":"^jmx$",
                        "dimensions":[
                           [
                              "InstanceId",
                              "ComponentName"
                           ],
                           [
                              "ComponentName"
                           ]
                        ],
                        "metric_selectors":[
                           "^java_lang_threading_threadcount$",
                           "^java_lang_memory_heapmemoryusage_used$",
                           "^java_lang_memory_heapmemoryusage_committed$"
                        ]
                     }
                  ]
               }
            }
         }
      },
      "metrics":{
         ....
      }
   }
   ```

## `AWSObservabilityExporter-SAP-HANADBExporterInstallAndConfigure`
<a name="appinsights-ssm-sap-prometheus"></a>

Application Insights의 [Prometheus HANA 데이터베이스 Exporter](https://prometheus.io/docs/instrumenting/exporters/#third-party-exporters)에서 워크로드별 SAP HANA 지표를 검색하여 경보를 구성하고 모니터링할 수 있습니다. 자세한 내용은 이 안내서의 [모니터링을 위해 SAP HANA 데이터베이스 설정](appinsights-tutorial-sap-hana.md#appinsights-tutorial-sap-hana-set-up) 섹션을 참조하세요.

[AWS Systems Manager Distributor](https://docs.aws.amazon.com/systems-manager/latest/userguide/distributor.html)를 사용하여 Application Insights와 별도로 AWS 제공 Prometheus HANA 데이터베이스 Exporter 패키지를 패키징하고, 설치하고, 구성하려면 다음 단계를 완료합니다.

**Prometheus HANA 데이터베이스 Exporter SSM 패키지를 사용하기 위한 사전 조건**
+ SSM Agent 버전 2.3.1550.0 이상이 설치되어 있어야 합니다.
+ SAP HANA 데이터베이스
+ Linux 운영 체제(SUSE Linux, RedHat Linux)
+ AWS Secrets Manager를 통해 SAP HANA 데이터베이스 모니터링 자격 증명을 사용한 보안 암호. 키/값 페어 형식을 사용해 보안 암호를 생성하고, 키 사용자 이름을 지정한 다음, 값에 대한 데이터베이스 사용자를 입력합니다. 두 번째 키 암호를 추가한 후 값에 암호를 입력합니다. 보안 암호 생성에 대한 자세한 내용은 *AWS Secrets Manager 사용 설명서*의 [보안 암호 생성](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_create-basic-secret.html)을 참조하세요. 보안 암호는 다음과 같은 형식이어야 합니다.

  ```
  {
    "username": "<database_user>",
    "password": "<database_password>"
  }
  ```

**`AWSObservabilityExporter-SAP-HANADBExporterInstallAndConfigure` 패키지 설치 및 구성**  
`AWSObservabilityExporter-SAP-HANADBExporterInstallAndConfigure` 패키지는 [Prometheus HANA 데이터베이스 Exporter](https://github.com/prometheus/jmx_exporter)를 설치하고 구성하는 데 사용할 수 있는 SSM Distributor 패키지입니다. Prometheus HANA 데이터베이스 Exporter가 HANA 데이터베이스 지표를 전송하면 CloudWatch 서비스의 지표를 검색하도록 CloudWatch 에이전트를 구성할 수 있습니다.

1. [SSM 파라미터 스토어](https://console.aws.amazon.com/systems-manager/parameters)에서 SSM 파라미터를 생성하여 Exporter 구성을 저장합니다. 다음은 파라미터 값의 예제입니다.

   ```
   {\"exposition_port\":9668,\"multi_tenant\":true,\"timeout\":600,\"hana\":{\"host\":\"localhost\",\"port\":30013,\"aws_secret_name\":\"HANA_DB_CREDS\",\"scale_out_mode\":true}}
   ```
**참고**  
이 예제에서 내보내기는 `SYSTEM` 데이터베이스가 활성 상태인 Amazon EC2 인스턴스에서만 실행되며 중복 지표를 피하기 위해 다른 EC2 인스턴스에서는 유휴 상태로 유지됩니다. Exporter는 `SYSTEM` 데이터베이스에서 모든 데이터베이스 테넌트 정보를 검색할 수 있습니다.

1. [SSM 파라미터 스토어](https://console.aws.amazon.com/systems-manager/parameters)에서 SSM 파라미터를 생성하여 Exporter 지표 쿼리를 저장합니다. 패키지는 둘 이상의 지표 파라미터를 적용할 수 있습니다. 각 파라미터에는 유효한 JSON 객체 형식이 있어야 합니다. 다음은 파라미터 값의 예제입니다.

   ```
   {\"SELECT MAX(TIMESTAMP) TIMESTAMP, HOST, MEASURED_ELEMENT_NAME CORE, SUM(MAP(CAPTION, 'User Time', TO_NUMBER(VALUE), 0)) USER_PCT, SUM(MAP(CAPTION, 'System Time', TO_NUMBER(VALUE), 0)) SYSTEM_PCT, SUM(MAP(CAPTION, 'Wait Time', TO_NUMBER(VALUE), 0)) WAITIO_PCT, SUM(MAP(CAPTION, 'Idle Time', 0, TO_NUMBER(VALUE))) BUSY_PCT, SUM(MAP(CAPTION, 'Idle Time', TO_NUMBER(VALUE), 0)) IDLE_PCT FROM sys.M_HOST_AGENT_METRICS WHERE MEASURED_ELEMENT_TYPE = 'Processor' GROUP BY HOST, MEASURED_ELEMENT_NAME;\":{\"enabled\":true,\"metrics\":[{\"name\":\"hanadb_cpu_user\",\"description\":\"Percentage of CPU time spent by HANA DB in user space, over the last minute (in seconds)\",\"labels\":[\"HOST\",\"CORE\"],\"value\":\"USER_PCT\",\"unit\":\"percent\",\"type\":\"gauge\"},{\"name\":\"hanadb_cpu_system\",\"description\":\"Percentage of CPU time spent by HANA DB in Kernel space, over the last minute (in seconds)\",\"labels\":[\"HOST\",\"CORE\"],\"value\":\"SYSTEM_PCT\",\"unit\":\"percent\",\"type\":\"gauge\"},{\"name\":\"hanadb_cpu_waitio\",\"description\":\"Percentage of CPU time spent by HANA DB in IO mode, over the last minute (in seconds)\",\"labels\":[\"HOST\",\"CORE\"],\"value\":\"WAITIO_PCT\",\"unit\":\"percent\",\"type\":\"gauge\"},{\"name\":\"hanadb_cpu_busy\",\"description\":\"Percentage of CPU time spent by HANA DB, over the last minute (in seconds)\",\"labels\":[\"HOST\",\"CORE\"],\"value\":\"BUSY_PCT\",\"unit\":\"percent\",\"type\":\"gauge\"},{\"name\":\"hanadb_cpu_idle\",\"description\":\"Percentage of CPU time not spent by HANA DB, over the last minute (in seconds)\",\"labels\":[\"HOST\",\"CORE\"],\"value\":\"IDLE_PCT\",\"unit\":\"percent\",\"type\":\"gauge\"}]}}
   ```

   지표 쿼리에 대한 자세한 내용은 GitHub의 [https://github.com/SUSE/hanadb_exporter/blob/master/metrics.json](https://github.com/SUSE/hanadb_exporter/blob/master/metrics.json) 리포지토리를 참조하세요.

1. [SSM Distributor](https://console.aws.amazon.com/systems-manager/distributor) 콘솔로 이동하여 **Amazon 소유(Owned by Amazon)** 탭을 엽니다. **AWSObservabilityExporter-SAP-HANADBExporterInstallAndConfigure\$1**를 선택하고 **한 번만 설치(Install one time)**를 선택합니다.

1. "추가 인수"를 다음으로 대체하여 첫 번째 단계에서 생성한 SSM 파라미터를 업데이트합니다.

   ```
   {
     "SSM_EXPORTER_CONFIG": "{{ssm:<*SSM_CONFIGURATIONS_PARAMETER_STORE_NAME>*}}",
     "SSM_SID": "<SAP_DATABASE_SID>",
     "SSM_EXPORTER_METRICS_1": "{{ssm:<SSM_FIRST_METRICS_PARAMETER_STORE_NAME>}}",
     "SSM_EXPORTER_METRICS_2": "{{ssm:<SSM_SECOND_METRICS_PARAMETER_STORE_NAME>}}"
   }
   ```

1. SAP HANA 데이터베이스가 있는 Amazon EC2 인스턴스를 선택한 다음 **실행(Run)**을 선택합니다.

## `AWSObservabilityExporter-HAClusterExporterInstallAndConfigure`
<a name="appinsights-ssm-sap-prometheus-ha"></a>

Application Insights의 [Prometheus HANA 클러스터 Exporter](https://prometheus.io/docs/instrumenting/exporters/#third-party-exporters)에서 워크로드별 고가용성(HA) 클러스터 지표를 검색하여 SAP HANA 데이터베이스 고가용성 설정에 대한 경보를 구성하고 모니터링할 수 있습니다. 자세한 내용은 이 안내서의 [모니터링을 위해 SAP HANA 데이터베이스 설정](appinsights-tutorial-sap-hana.md#appinsights-tutorial-sap-hana-set-up) 섹션을 참조하세요.

[AWS Systems Manager Distributor](https://docs.aws.amazon.com/systems-manager/latest/userguide/distributor.html)를 사용하여 Application Insights와 별도로 AWS 제공 Prometheus HA Cluster Exporter 패키지를 패키징하고, 설치하고, 구성하려면 다음 단계를 완료합니다.

**Prometheus HA Cluster Exporter SSM 패키지를 사용하기 위한 사전 조건**
+ SSM Agent 버전 2.3.1550.0 이상이 설치되어 있어야 합니다.
+ Pacemaker, Corosync, SBD 및 DRBD를 위한 HA 클러스터
+ Linux 운영 체제(SUSE Linux, RedHat Linux)

**`AWSObservabilityExporter-HAClusterExporterInstallAndConfigure` 패키지 설치 및 구성**  
`AWSObservabilityExporter-HAClusterExporterInstallAndConfigure` 패키지는 Prometheus HA Cluster Exporter를 설치하고 구성하는 데 사용할 수 있는 SSM Distributor 패키지입니다. Prometheus HANA 데이터베이스 Exporter가 클러스터 지표를 전송하면 CloudWatch 서비스의 지표를 검색하도록 CloudWatch 에이전트를 구성할 수 있습니다.

1. [SSM 파라미터 스토어](https://console.aws.amazon.com/systems-manager/parameters)에서 SSM 파라미터를 생성하여 JSON 형식으로 Exporter 구성을 저장합니다. 다음은 파라미터 값의 예제입니다.

   ```
   {\"port\":\"9664\",\"address\":\"0.0.0.0\",\"log-level\":\"info\",\"crm-mon-path\":\"/usr/sbin/crm_mon\",\"cibadmin-path\":\"/usr/sbin/cibadmin\",\"corosync-cfgtoolpath-path\":\"/usr/sbin/corosync-cfgtool\",\"corosync-quorumtool-path\":\"/usr/sbin/corosync-quorumtool\",\"sbd-path\":\"/usr/sbin/sbd\",\"sbd-config-path\":\"/etc/sysconfig/sbd\",\"drbdsetup-path\":\"/sbin/drbdsetup\",\"enable-timestamps\":false}
   ```

   Exporter 구성에 대한 자세한 내용은 GitHub의 [https://github.com/ClusterLabs/ha_cluster_exporter/blob/master/ha_cluster_exporter.yaml](https://github.com/ClusterLabs/ha_cluster_exporter/blob/master/ha_cluster_exporter.yaml) 리포지토리를 참조하세요.

1. [SSM Distributor](https://console.aws.amazon.com/systems-manager/distributor) 콘솔로 이동하여 **Amazon 소유(Owned by Amazon)** 탭을 엽니다. **AWSObservabilityExporter-HAClusterExporterInstallAndConfigure\$1**를 선택한 다음 **한 번만 설치(Install one time)**를 선택합니다.

1. "추가 인수"를 다음으로 대체하여 첫 번째 단계에서 생성한 SSM 파라미터를 업데이트합니다.

   ```
   {
     "SSM_EXPORTER_CONFIG": "{{ssm:<*SSM_CONFIGURATIONS_PARAMETER_STORE_NAME>*}}"
   }
   ```

1. SAP HANA 데이터베이스가 있는 Amazon EC2 인스턴스를 선택한 다음 **실행(Run)**을 선택합니다.

## `AWSObservabilityExporter-SAP-SAPHostExporterInstallAndConfigure`
<a name="appinsights-ssm-sap-host-exporter"></a>

Application Insights용 [Prometheus SAP 호스트 내보내기 도구](https://prometheus.io/docs/instrumenting/exporters/#third-party-exporters)에서 워크로드별 SAP NetWeaver 지표를 검색하여 SAP NetWeaver 분산 및 High Availability 배포에 대한 경보를 구성하고 모니터링할 수 있습니다.

[AWS Systems Manager Distributor](https://docs.aws.amazon.com/systems-manager/latest/userguide/distributor.html)를 사용하여 Application Insights와 별도로 SAP 호스트 내보내기 패키지를 패키징, 설치 및 구성하려면 다음 단계를 수행하세요.

**Prometheus SAP 호스트 내보내기 SSM 패키지를 사용하기 위한 사전 조건**
+ SSM Agent 버전 2.3.1550.0 이상이 설치되어 있어야 합니다.
+ SAP NetWeaver 애플리케이션 서버
+ Linux 운영 체제(SUSE Linux, RedHat Linux)

**`AWSObservabilityExporter-SAP-SAPHostExporterInstallAndConfigure` 패키지 설치 및 구성**  
`AWSObservabilityExporter-SAP-SAPHostExporterInstallAndConfigure` 패키지는 SAP NetWeaver Prometheus 지표 내보내기를 설치하고 구성하는 데 사용할 수 있는 SSM Distributor 패키지입니다. Prometheus 내보내기가 SAP NetWeaver 지표를 전송하면 CloudWatch 서비스의 지표를 검색하도록 CloudWatch 에이전트를 구성할 수 있습니다.

1. [SSM 파라미터 스토어](https://console.aws.amazon.com/systems-manager/parameters)에서 SSM 파라미터를 생성하여 JSON 형식으로 Exporter 구성을 저장합니다. 다음은 파라미터 값의 예제입니다.

   ```
   {\"address\":\"0.0.0.0\",\"port\":\"9680\",\"log-level\":\"info\",\"is-HA\":false}
   ```
   + **address**

     Prometheus 지표를 전송할 대상 주소입니다. 기본값은 `localhost`입니다.
   + **port**

     Prometheus 지표를 전송할 대상 포트입니다. 기본값은 `9680`입니다.
   + **is-HA**

     SAP NetWeaver High Availability 배포용 `true`. 다른 모든 배포의 경우 값은 `false`입니다.

1. [SSM Distributor](https://console.aws.amazon.com/systems-manager/distributor) 콘솔로 이동하여 **Amazon 소유(Owned by Amazon)** 탭을 엽니다. **AWSObservabilityExporter-SAP-SAPHostExporterInstallAndConfigure**를 선택하고 **Install one time**(한 번 설치)을 선택합니다.

1. "추가 인수"를 다음으로 대체하여 첫 번째 단계에서 생성한 SSM 파라미터를 업데이트합니다.

   ```
   {
     "SSM_EXPORTER_CONFIG": "{{ssm:<SSM_CONFIGURATIONS_PARAMETER_STORE_NAME>}}",
     "SSM_SID": "<SAP_DATABASE_SID>",
     "SSM_INSTANCES_NUM": "<instances_number seperated by comma>"
   }
   ```

   **예제**

   ```
   {
     "SSM_EXPORTER_CONFIG": "{{ssm:exporter_config_paramter}}",
     "SSM_INSTANCES_NUM": "11,12,10",
     "SSM_SID": "PR1"
   }
   ```

1. SAP NetWeaver 애플리케이션이 있는 Amazon EC2 인스턴스를 선택하고 **Run**(실행)을 선택합니다.

**참고**  
Prometheus Exporter는 로컬 엔드포인트에서 SAP NetWeaver 지표를 서비스합니다. Amazon EC2 인스턴스의 운영 체제 사용자만 로컬 엔드포인트에 액세스할 수 있습니다. 따라서 내보내기 도구 패키지가 설치된 후 모든 운영 체제 사용자가 지표를 사용할 수 있습니다. 기본 로컬 엔드포인트는 `localhost:9680/metrics`입니다.

## `AWSObservabilityExporter-SQLExporterInstallAndConfigure`
<a name="appinsights-ssm-sql-prometheus"></a>

[Prometheus SQL 내보내기](https://prometheus.io/docs/instrumenting/exporters/#third-party-exporters)에서 Application Insights에 대한 워크로드별 SQL Server 지표를 검색하여 주요 지표를 모니터링할 수 있습니다.

[AWS Systems Manager Distributor](https://docs.aws.amazon.com/systems-manager/latest/userguide/distributor.html)를 사용하여 Application Insights와 별도로 SQL 내보내기 패키지를 패키징, 설치, 구성하려면 다음 단계를 수행하세요.

**Prometheus SQL 내보내기 SSM 패키지 사용을 위한 사전 조건**
+ SSM Agent 버전 2.3.1550.0 이상이 설치되어 있어야 합니다.
+ SQL Server 사용자 인증을 사용하도록 설정된 Windows에서 SQL Server를 실행하는 Amazon EC2 인스턴스.
+ 다음 권한이 있는 SQL Server 사용자:

  ```
  GRANT VIEW ANY DEFINITION TO
  ```

  ```
  GRANT VIEW SERVER STATE TO
  ```
+ AWS Secrets Manager를 사용하는 데이터베이스 연결 문자열이 포함된 암호. 보안 암호 생성에 대한 자세한 내용은 *AWS Secrets Manager 사용 설명서*의 [보안 암호 생성](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_create-basic-secret.html)을 참조하세요. 보안 암호는 다음과 같은 형식이어야 합니다.

  ```
  {
    "data_source_name":"sqlserver://<username>:<password>@localhost:1433"
  }
  ```
**참고**  
암호 또는 사용자 이름에 특수 문자가 포함된 경우 데이터베이스에 성공적으로 연결하려면 특수 문자를 퍼센트 인코딩해야 합니다.

**`AWSObservabilityExporter-SQLExporterInstallAndConfigure` 패키지 설치 및 구성**  
`AWSObservabilityExporter-SQLExporterInstallAndConfigure` 패키지는 SQL Prometheus 지표 내보내기를 설치하고 구성하는 데 사용할 수 있는 SSM Distributor 패키지입니다. Prometheus 내보내기가 지표를 전송하면 CloudWatch 에이전트가 CloudWatch 서비스에 대한 지표를 검색하도록 구성할 수 있습니다.

1. 기본 설정에 따라 SQL Exporter YAML 구성을 준비합니다. 다음 샘플 구성에는 단일 지표가 구성되어 있습니다. [예 구성](https://github.com/burningalchemist/sql_exporter/blob/master/examples/sql_exporter.yml)을 사용하여 추가 지표로 구성을 업데이트하거나 고유한 구성을 생성할 수 있습니다.

   ```
   ---
   global:
     scrape_timeout_offset: 500ms
     min_interval: 0s
     max_connections: 3
     max_idle_connections: 3
   target:
     aws_secret_name: <SECRET_NAME>
     collectors:
       - mssql_standard
   collectors:
     - collector_name: mssql_standard
       metrics: 
       - metric_name: mssql_batch_requests
         type: counter
         help: 'Number of command batches received.'
         values: [cntr_value]
         query: |
           SELECT cntr_value
           FROM sys.dm_os_performance_counters WITH (NOLOCK)
           WHERE counter_name = 'Batch Requests/sec'
   ```

1. Base64로 인코딩된 Prometheus SQL Exporter YAML 구성 파일을 [SSM 파라미터 스토어](https://console.aws.amazon.com/systems-manager/parameters)의 새 SSM 파라미터에 복사합니다.

1. [SSM Distributor](https://console.aws.amazon.com/systems-manager/distributor) 콘솔로 이동하여 **Amazon 소유(Owned by Amazon)** 탭을 엽니다. **AWSObservabilityExporter-SQLExporterInstallAndConfigure**를 선택하고 **한 번 설치**를 선택합니다.

1. ‘추가 인수’를 다음 정보로 변경하세요. `SSM_PARAMETER_NAME`은 2단계에서 생성한 파라미터의 이름입니다.

   ```
   {
     "SSM_EXPORTER_CONFIGURATION": 
       "{{ssm:<SSM_PARAMETER_STORE_NAME>}}",
       "SSM_PROMETHEUS_PORT": "9399",
       "SSM_WORKLOAD_NAME": "SQL"                         
   }
   ```

1. SQL Server 데이터베이스가 있는 Amazon EC2 인스턴스를 선택한 다음 실행을 선택합니다.

# CloudWatch Application Insights에서 사용하는 AWS Systems Manager(SSM) 문서
<a name="appinsights-ssm-documents"></a>

Application Insights는 이 섹션에 나열된 SSM 문서를 사용하여 AWS Systems Manager가 관리형 인스턴스에서 수행하는 작업을 정의합니다. 이러한 문서에서는 Systems Manager의 `Run Command` 기능을 사용하여 Application Insights 모니터링 기능을 수행하는 데 필요한 작업을 자동화합니다. 이러한 문서의 실행 일정은 Application Insights에서 관리하며 변경할 수 없습니다.

SSM 문서에 대한 자세한 내용은 **AWS Systems Manager 사용 설명서의 [AWS Systems Manager Documents](https://docs.aws.amazon.com/systems-manager/latest/userguide/documents.html)를 참조하세요.

## CloudWatch Application Insights에서 관리하는 문서
<a name="ssm-documents-appinsights-managed"></a>

다음 표에는 Application Insights에서 관리하는 SSM 문서가 나와 있습니다.


| 문서 이름 | 설명 | 실행 일정 | 
| --- | --- | --- | 
|  `AWSEC2-DetectWorkload`  |  Application Insights에서 모니터링하도록 설정할 수 있는 애플리케이션 환경에서 실행 중인 애플리케이션을 자동으로 검색합니다.  |  이 문서는 애플리케이션 환경에서 매시간 실행되어 최신 애플리케이션 세부 정보를 제공합니다.  | 
|  `AWSEC2-CheckPerformanceCounterSets`  |  Amazon EC2 Windows 인스턴스에서 성능 카운터 네임스페이스가 활성화되어 있는지 확인합니다.  |  이 문서는 애플리케이션 환경에서 매시간 실행되며 해당 네임스페이스가 활성화된 경우에만 성능 카운터 지표를 모니터링합니다.  | 
|  `AWSEC2-ApplicationInsightsCloudwatchAgentInstallAndConfigure`  |  애플리케이션 구성 요소의 모니터링 구성을 기반으로 CloudWatch 에이전트를 설치하고 구성합니다.  |  이 문서는 CloudWatch 에이전트 구성이 항상 정확하고 최신 상태인지 확인하기 위해 30분마다 실행됩니다. 또한 이 문서는 지표 추가 또는 제거, 로그 구성 업데이트 등 애플리케이션 모니터링 설정을 변경한 직후에도 실행됩니다.  | 

## AWS Systems Manager에서 관리하는 문서
<a name="ssm-documents-aws-managed"></a>

다음 문서는 CloudWatch Application Insights에서 사용하고 Systems Manager에서 관리합니다.

**`AWS-ConfigureAWSPackage`**  
Application Insights는 이 문서를 사용하여 Prometheus 내보내기 배포자 패키지를 설치 및 제거하고, 워크로드별 지표를 수집하고, 고객 Amazon EC2 인스턴스의 워크로드를 포괄적으로 모니터링할 수 있습니다. CloudWatch Application Insights는 상관관계가 있는 대상 워크로드가 인스턴스에서 실행 중인 경우에만 Prometheus 내보내기 배포자 패키지를 설치합니다.

다음 표에는 Prometheus 내보내기 배포자 패키지와 상관관계가 있는 대상 워크로드가 나열되어 있습니다.


| Prometheus 내보내기 배포자 패키지 이름 | 워크로드 배포 | 
| --- | --- | 
|  `AWSObservabilityExporter-HAClusterExporterInstallAndConfigure`  |  SAP HANA HA  | 
|  `AWSObservabilityExporter-JMXExporterInstallAndConfigure`  |  Java/JMX  | 
|  `AWSObservabilityExporter-SAP-HANADBExporterInstallAndConfigure`  |  SAP HANA  | 
|  `AWSObservabilityExporter-SAP-SAPHostExporterInstallAndConfigure`  |  NetWeaver  | 
|  `AWSObservabilityExporter-SQLExporterInstallAndConfigure`  |  SQL Server(Windows) 및 SAP ASE(Linux)  | 

**`AmazonCloudWatch-ManageAgent`**  
Application Insights는 이 문서를 사용하여 인스턴스의 CloudWatch Agent의 상태와 구성을 관리하고, 운영 체제 전반의 Amazon EC2 인스턴스로부터 내부 시스템 수준 지표와 로그를 수집합니다.

# CloudWatch Application Insights에 액세스하는 데 필요한 사전 요구 사항, IAM 정책 및 권한
<a name="appinsights-accessing"></a>

CloudWatch Application Insights를 시작하려면 다음 사전 조건을 충족하고, IAM 정책을 생성하고, 필요한 경우 권한을 연결했는지 확인하세요.

**Topics**
+ [모니터링을 위한 애플리케이션을 구성하기 위한 사전 요구 사항](appinsights-prereqs.md)
+ [CloudWatch Application Insights에 대한 IAM 정책](appinsights-iam.md)
+ [계정 기반 애플리케이션 온보딩을 위한 IAM 역할 권한](appinsights-account-based-onboarding-permissions.md)

# 모니터링을 위한 애플리케이션을 구성하기 위한 사전 요구 사항
<a name="appinsights-prereqs"></a>

CloudWatch Application Insights로 애플리케이션을 구성하려면 다음 사전 조건을 충족해야 합니다.
+ **AWS Systems Manager 활성화** - Amazon EC2 인스턴스에 SSM Agent(Systems Manager Agent)를 설치하고 SSM에 대해 인스턴스를 활성화합니다. SSM Agent를 설치하는 방법에 대한 자세한 내용은 *AWS Systems Manager 사용 설명서*의 [AWS Systems Manager 설정](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-setting-up.html)을 참조하세요.
+ **EC2 인스턴스 역할** – Systems Manager를 활성화하려면 다음 Amazon EC2 인스턴스 역할을 연결해야 합니다.
  + Systems Manager를 사용 설정하려면 `AmazonSSMManagedInstanceCore` 역할을 연결해야 합니다. 자세한 내용은 [AWS Systems Manager 자격 증명 기반 정책 예제](https://docs.aws.amazon.com/systems-manager/latest/userguide/auth-and-access-control-iam-identity-based-access-control.html)를 참조하세요.
  + CloudWatch를 통해 인스턴스 지표 및 로그를 내보낼 수 있게 하려면 `CloudWatchAgentServerPolicy` 정책을 연결해야 합니다. 자세한 내용은 [CloudWatch 에이전트와 함께 사용하기 위한 IAM 역할 및 사용자 생성](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/create-iam-roles-for-cloudwatch-agent.html)을 참조하세요.
+ **AWS 리소스 그룹** - CloudWatch Application Insights에 애플리케이션을 온보딩하려면 애플리케이션 스택에서 사용하는 연결된 모든 AWS 리소스를 포함하는 리소스 그룹을 생성합니다. 이 그룹에는 Application Load Balancer, IIS 및 웹 프런트 엔드에서 실행 중인 Amazon EC2 인스턴스, .NET 작업자 티어, SQL Server 데이터베이스가 포함됩니다. Application Insights에서 지원하는 애플리케이션 구성 요소 및 기술 스택에 대한 자세한 내용은 [지원되는 애플리케이션 구성 요소](appinsights-what-is.md#appinsights-components)의 내용을 참조하세요. Auto Scaling 그룹은 CloudFormation 리소스 그룹에서 지원되지 않기 때문에 CloudWatch Application Insights는 리소스 그룹과 동일한 태그 또는 CloudFormation 스택을 사용하여 Auto Scaling 그룹을 자동으로 포함합니다. 자세한 내용은 [AWS Resource Groups 시작하기](https://docs.aws.amazon.com/ARG/latest/userguide/gettingstarted.html) 단원을 참조하세요.
+ **IAM 권한** - 관리 액세스 권한이 없는 사용자의 경우 서비스 연결 역할을 생성하고 이를 사용자의 아이덴티티에 연결할 수 있도록 Application Insights를 허용하는 AWS Identity and Access Management(IAM) 정책을 생성해야 합니다. IAM 정책을 생성하는 방법에 대한 자세한 내용은 [CloudWatch Application Insights에 대한 IAM 정책](appinsights-iam.md)의 내용을 참조하세요.
+ **서비스 연결 역할** - Application Insights는 AWS Identity and Access Management(IAM) 서비스 연결 역할을 사용합니다. 서비스 연결 역할은 Application Insights 관리 콘솔에서 첫 번째 Application Insights 애플리케이션을 생성할 때 생성됩니다. 자세한 내용은 [CloudWatch Application Insights에 서비스 연결 역할 사용](CHAP_using-service-linked-roles-appinsights.md) 섹션을 참조하세요.
+ **EC2 Windows 인스턴스용 성능 카운터 지표 지원:** Amazon EC2 Windows 인스턴스에서 성능 카운터 지표를 모니터링하려면 인스턴스에 성능 카운터를 설치해야 합니다. 성능 카운터 지표와, 이에 해당하는 성능 카운터 이름은 [성능 카운터 지표](application-insights-performance-counter.md)를 참조하세요. 성능 카운터에 대한 자세한 내용은 [Performance Counters(성능 카운터)](https://docs.microsoft.com/en-us/windows/win32/perfctrs/performance-counters-portal)를 참조하세요.
+ **Amazon CloudWatch 에이전트** – Application Insights가 CloudWatch 에이전트를 설치하고 구성합니다. CloudWatch 에이전트를 설치하면 Application Insights가 구성을 유지합니다. 병합 충돌을 방지하려면 Application Insights에서 사용하려는 리소스 구성을 기존 CloudWatch 에이전트 구성 파일에서 제거하세요. 자세한 내용은 [수동으로 CloudWatch 에이전트 구성 파일 생성 또는 편집](CloudWatch-Agent-Configuration-File-Details.md) 섹션을 참조하세요.

# CloudWatch Application Insights에 대한 IAM 정책
<a name="appinsights-iam"></a>

CloudWatch Application Insights를 사용하려면 [AWS Identity and Access Management(IAM) 정책](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)을 생성하여 사용자, 그룹 또는 역할에 연결해야 합니다. 사용자, 그룹 및 역할에 대한 자세한 내용은 [IAM 자격 증명(사용자, 사용자 그룹 및 역할)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html)을 참조하세요. IAM 정책은 사용자 권한을 정의합니다.

**콘솔을 사용해 IAM 정책을 생성하려면**  
IAM 콘솔을 사용하여 IAM 정책을 생성하려면 다음 단계를 수행하세요.

1. [IAM 콘솔](https://console.aws.amazon.com/iam/home)로 이동합니다. 왼쪽 탐색 창에서 **정책**을 선택합니다.

1. 페이지 상단에서 **정책 생성**을 선택합니다.

1. **JSON** 탭을 선택합니다.

1. 다음 JSON 문서를 복사하여 **JSON** 탭에 붙여 넣습니다.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Action": [
                   "applicationinsights:*",
                   "iam:CreateServiceLinkedRole",
                   "iam:ListRoles",
                   "resource-groups:ListGroups"
               ],
               "Effect": "Allow",
               "Resource": "*"
           }
       ]
   }
   ```

------

1. **정책 검토**를 선택합니다.

1. 정책의 **이름**을 입력합니다(예: “AppInsightsPolicy”). 필요한 경우 **설명**을 입력합니다.

1. **정책 생성**을 선택합니다.

1. 왼쪽 탐색 창에서 **사용자 그룹**, **사용자** 또는 **역할**을 선택합니다.

1. 정책을 첨부할 사용자 그룹, 사용자 또는 역할의 이름을 선택합니다.

1. **Add permissions(권한 추가)**를 선택합니다.

1. **기존 정책 직접 연결**을 선택합니다.

1. 방금 만든 정책을 검색하고 정책 이름 왼쪽에 있는 확인란을 선택합니다.

1. **Next: Review(다음: 검토)**를 선택합니다.

1. 올바른 정책이 나열되어 있는지 확인하고 **Add permissions(권한 추가)**를 선택합니다.

1. CloudWatch Application Insights를 사용할 때 방금 생성한 정책과 연결된 사용자로 로그인해야 합니다.

**AWS CLI를 사용하여 IAM 정책을 생성하려면**  
AWS CLI를 사용하여 IAM 정책을 생성하려면 위 JSON 문서를 현재 폴더의 파일로 사용해 명령줄에서 [create-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/create-policy.html) 작업을 실행합니다.

**AWS Tools for Windows PowerShell을 사용하여 IAM 정책을 생성하려면**  
AWS Tools for Windows PowerShell을 사용하여 IAM 정책을 생성하려면 위 JSON 문서를 현재 폴더의 파일로 사용해 [New-IAMPolicy](https://docs.aws.amazon.com/powershell/latest/reference/items/New-IAMPolicy.html) cmdlt를 실행합니다.

# 계정 기반 애플리케이션 온보딩을 위한 IAM 역할 권한
<a name="appinsights-account-based-onboarding-permissions"></a>

계정에 있는 모든 리소스를 온보딩하려는 경우 애플리케이션 인사이트 기능에 전체 액세스하기 위한 [Application Insights 관리 정책](security-iam-awsmanpol-appinsights.md)을 사용하지 않음을 선택하고 Application Insights가 계정의 모든 리소스를 검색할 수 있도록 IAM 역할에 다음 권한을 연결해야 합니다.

```
"ec2:DescribeInstances" 
"ec2:DescribeNatGateways"
"ec2:DescribeVolumes"
"ec2:DescribeVPCs"
"rds:DescribeDBInstances"
"rds:DescribeDBClusters"
"sqs:ListQueues"
"elasticloadbalancing:DescribeLoadBalancers"
"autoscaling:DescribeAutoScalingGroups"
"lambda:ListFunctions"
"dynamodb:ListTables"
"s3:ListAllMyBuckets"
"sns:ListTopics"
"states:ListStateMachines"
"apigateway:GET"
"ecs:ListClusters"
"ecs:DescribeTaskDefinition" 
"ecs:ListServices"
"ecs:ListTasks"
"eks:ListClusters"
"eks:ListNodegroups"
"fsx:DescribeFileSystems"
"route53:ListHealthChecks"
"route53:ListHostedZones"
"route53:ListQueryLoggingConfigs"
"route53resolver:ListFirewallRuleGroups"
"route53resolver:ListFirewallRuleGroupAssociations"
"route53resolver:ListResolverEndpoints"
"route53resolver:ListResolverQueryLogConfigs"
"route53resolver:ListResolverQueryLogConfigAssociations"
"logs:DescribeLogGroups"
"resource-explorer:ListResources"
```

# AWS Management Console을 사용하여 모니터링을 위한 애플리케이션 설정
<a name="appinsights-setting-up"></a>

이 섹션에서는 콘솔, AWS CLI, AWS Tools for Windows PowerShell을 사용하여 CloudWatch Application Insights 애플리케이션을 설정하고, 구성하고, 관리하는 방법을 단계별로 안내합니다.

**Topics**
+ [콘솔 단계](appinsights-setting-up-console.md)
+ [명령줄 단계](appinsights-setting-up-command.md)
+ [이벤트](appinsights-cloudwatch-events.md)
+ [알림](appinsights-problem-notifications.md)

# CloudWatch 콘솔에서 모니터링할 애플리케이션 설정, 구성, 관리
<a name="appinsights-setting-up-console"></a>

이 섹션에서는 CloudWatch 콘솔에서 모니터링할 애플리케이션을 설정하고, 구성하고, 관리하는 방법을 단계별로 안내합니다.

**Topics**
+ [애플리케이션 추가 및 구성](#appinsights-add-configure)
+ [Amazon ECS 및 Amazon EKS 리소스 모니터링을 위한 Application Insights 활성화](#appinsights-container-insights)
+ [애플리케이션 구성 요소에 대한 모니터링 사용 중지](#appinsights-disable-monitoring)
+ [애플리케이션 삭제](#appinsights-delete-app)

## 애플리케이션 추가 및 구성
<a name="appinsights-add-configure"></a>

**CloudWatch 콘솔에서 애플리케이션 추가 및 구성**  
CloudWatch 콘솔에서 CloudWatch Application Insights를 시작하려면 다음 단계를 수행합니다.

1. **시작.** [CloudWatch 콘솔 랜딩 페이지](https://console.aws.amazon.com/cloudwatch)를 엽니다. 왼쪽 탐색 창의 **인사이트(Insights)**에서 **Application Insights**를 선택합니다. 열린 페이지에는 CloudWatch Application Insights로 모니터링되는 애플리케이션 목록과 해당 모니터링 상태가 표시됩니다.

1. **애플리케이션 추가.** 애플리케이션에 대한 모니터링을 설정하려면 **애플리케이션 추가(Add an application)**를 선택합니다. **애플리케이션 추가(Add an application)**를 선택한 경우 **애플리케이션 유형 선택(Choose Application Type)** 메시지가 표시됩니다.
   + **리소스 그룹 기반 애플리케이션**. 이 옵션을 선택하면 해당 계정에서 모니터링할 리소스 그룹을 선택할 수 있습니다. 구성 요소에서 여러 애플리케이션을 사용하려면 리소스 그룹 기반 모니터링을 사용해야 합니다.
   + **계정 기반 애플리케이션**. 이 옵션을 선택하면 해당 계정의 모든 리소스를 모니터링할 수 있습니다. 계정의 모든 리소스를 모니터링하려면 애플리케이션 온보딩 프로세스가 리소스 그룹 기반 옵션보다 빠른 이 옵션을 사용하는 것이 좋습니다.
**참고**  
Application Insights를 사용하여 리소스 그룹 기반 모니터링과 계정 기반 모니터링을 결합할 수 없습니다. 애플리케이션 유형을 변경하려면 모니터링 중인 모든 애플리케이션을 삭제하고 **애플리케이션 유형을 선택**합니다.

   모니터링을 위해 첫 번째 애플리케이션을 추가하면 CloudWatch Application Insights는 계정에 서비스 연결 역할을 생성하여 사용자 대신 Application Insights 권한을 다른 AWS 사용자에게 호출할 수 있는 권한을 부여합니다. Application Insights가 계정에 생성한 서비스 연결 역할에 대한 자세한 내용은 [CloudWatch Application Insights에 서비스 연결 역할 사용](CHAP_using-service-linked-roles-appinsights.md) 섹션을 참조하세요.

1. 

------
#### [ Resource-based application monitoring ]

   1. **애플리케이션 또는 리소스 그룹을 선택합니다. ** **애플리케이션 세부 정보 지정(Specify application details)** 페이지에서 드롭다운 목록의 애플리케이션 리소스가 포함된 AWS 리소스 그룹을 선택합니다. 이러한 리소스로는 프런트 엔드 서버, 로드 밸런서, auto scaling 그룹, 데이터베이스 서버 등을 들 수 있습니다.

      애플리케이션에 대한 리소스 그룹을 생성하지 않은 경우 **새 리소스 그룹 생성(Create new resource group)**을 선택해 생성할 수 있습니다. 리소스 그룹 생성에 대한 자세한 내용은 [https://docs.aws.amazon.com/ARG/latest/userguide/welcome.html](https://docs.aws.amazon.com/ARG/latest/userguide/welcome.html)를 참조하세요.

   1. **문제 인사이트에 대한 알림.** 선택한 애플리케이션에 문제가 감지될 때 이를 확인하고 알림을 받으려면 Amazon SNS 알림 또는 Systems Manager OpsCenter Opsitems를 선택합니다.

      1. **Amazon SNS 알림을 설정합니다(권장).** **기존 주제 선택** 또는 **새 주제 생성 **을 선택합니다.

      1. **AWS Systems Manager OpsCenter와 통합.** **고급 설정**에서 **수정 조치를 위해 Systems Manager OpsCenter OpsItems 생성(Generate Systems Manager OpsCenter OpsItems for remedial actions)** 확인란을 선택합니다. AWS 리소스와 관련된 운영 작업 항목(OpsItem)을 해결하기 위해 수행된 작업을 추적하려면 Amazon SNS 주제 ARN을 제공합니다.

   1. **CloudWatch Events 모니터링**. Amazon EBS, Amazon EC2, AWS CodeDeploy, Amazon ECS, AWS Health API 및 알림, Amazon RDS, Amazon S3, AWS Step Functions로부터 인사이트를 얻기 위해 Application Insights 모니터링을 CloudWatch Events와 통합하려면 확인란을 선택합니다.

   1. **태그(선택 사항)**. CloudWatch Application Insights는 태그 기반 및 CloudFormation 기반 리소스 그룹을 모두 지원합니다(Auto Scaling 그룹 제외). 자세한 내용은 [Tag Editor 작업](https://docs.aws.amazon.com/ARG/latest/userguide/tag-editor.html)을 참조하세요.

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

      애플리케이션에 대한 [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)은 다음 형식으로 생성됩니다.

      ```
      arn:partition:applicationinsights:region:account-id:application/resource-group/resource-group-name
      ```

      예제

      ```
      arn:aws:applicationinsights:us-east-1:123456789012:application/resource-group/my-resource-group
      ```

   1. **탐지된 구성 요소 검토** 페이지의 **모니터링할 구성 요소 검토** 아래에 있는 테이블에는 탐지된 구성 요소 및 탐지된 관련 워크로드가 나열됩니다.
**참고**  
여러 개의 사용자 정의 워크로드를 지원하는 구성 요소의 경우 각 구성 요소에 대해 최대 5개의 워크로드를 모니터링할 수 있습니다. 이러한 워크로드는 구성 요소와 별도로 모니터링됩니다.  
![\[CloudWatch Application Insights 콘솔의 탐지된 구성 요소 섹션: 탐지된 구성 요소 및 관련 워크로드에 대한 개요입니다.\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/appinsights-multiapp-review-component.png)

      **관련 워크로드** 아래에는 워크로드가 목록에 없는 경우 표시될 수 있는 몇 가지 메시지가 있습니다.
      + **워크로드를 탐지할 수 없음** - 워크로드를 탐지하려고 할 때 문제가 발생했습니다. [모니터링을 위한 애플리케이션을 구성하기 위한 사전 요구 사항](appinsights-prereqs.md)을 완료했는지 확인합니다. 워크로드를 추가해야 하는 경우 **구성 요소 편집**을 선택합니다.
      + **워크로드가 탐지되지 않음** - 워크로드가 탐지되지 않았습니다. 워크로드를 연결해야 할 수도 있습니다. 이렇게 하려면 **구성 요소 편집**을 선택합니다.
      + **해당 없음** - 구성 요소는 사용자 지정된 워크로드를 지원하지 않으며 기본 지표, 경보, 로그를 사용하여 모니터링됩니다. 이러한 구성 요소에는 워크로드를 추가할 수 없습니다.

   1. 구성 요소를 편집하려면 구성 요소를 선택한 다음 **구성 요소 편집**을 선택합니다. 구성 요소에서 탐지된 워크로드가 포함된 측면 패널이 열립니다. 이 패널에서는 구성 요소 세부 정보를 편집하고 새 워크로드를 추가할 수 있습니다.  
![\[CloudWatch Application Insights 콘솔의 탐지된 구성 요소 검토 섹션: 관련 워크로드를 편집할 수 있습니다.\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/appinsights-multiapp-edit-component.png)
      + 워크로드 유형이나 이름을 편집하려면 드롭다운 목록을 사용하세요.  
![\[CloudWatch Application Insights 콘솔의 구성 요소 편집 섹션: 워크로드 유형의 드롭다운 목록입니다.\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/appinsights-multiapp-edit-name-type.png)
      + 구성 요소에 워크로드를 추가하려면 **새 워크로드 추가**를 선택합니다.  
![\[CloudWatch Application Insights 콘솔의 구성 요소 편집 섹션: 왼쪽 하단 버튼으로 새 워크로드를 추가합니다.\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/appinsights-multiapp-add-workload.png)
        + **새 워크로드 추가**가 표시되지 않는 경우 여러 워크로드를 지원하지 않는 구성 요소입니다.
        + **관련 워크로드** 제목이 표시되지 않으면 사용자 지정된 워크로드를 지원하지 않는 구성 요소입니다.
      + 워크로드를 제거하려면 모니터링에서 제거하려는 워크로드 옆에 있는 **제거**를 선택합니다.  
![\[CloudWatch Application Insights 콘솔의 구성 요소 편집 섹션: 워크로드를 제거합니다.\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/appinsights-multiapp-remove-workload.png)
      + 전체 구성 요소에 대한 모니터링을 사용하지 않도록 설정하려면 **모니터링** 확인란의 선택을 취소합니다.  
![\[CloudWatch Application Insights 확인란의 구성 요소 편집 섹션을 사용하여 모니터링을 사용하지 않도록 설정합니다.\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/appinsights-multiapp-disable-monitoring.png)
      + 구성 요소 편집을 완료하면 오른쪽 하단에서 **변경 사항 저장**을 선택합니다. 구성 요소의 워크로드 변경 사항은 **관련 워크로드** 아래의 **모니터링을 위한 구성 요소 검토** 테이블에서 확인할 수 있습니다.

   1. **탐지된 구성 요소 검토** 페이지에서 **다음**을 선택합니다.

   1. **구성 요소 세부 정보 지정** 페이지에는 이전 단계에서 관련 워크로드를 사용자 지정할 수 있는 모든 구성 요소가 포함되어 있습니다.
**참고**  
구성 요소 헤더에 선택적** 태그가 있는 경우 해당 구성 요소의 워크로드에 대한 추가 세부 정보는 선택 사항입니다.

      이 페이지에 구성 요소가 표시되지 않으면 이 단계에서 지정할 수 있는 추가 세부 정보가 없는 구성 요소입니다.

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

   1. **검토 및 제출** 페이지에서 모니터링되는 모든 구성 요소 및 워크로드 세부 정보를 검토하세요.

   1. **제출**을 선택합니다.

------
#### [ Account-based application monitoring ]

   1. **애플리케이션 이름.** 계정 기반 애플리케이션의 이름을 입력합니다.

   1. **새로운 리소스에 대한 자동 모니터링**. 기본적으로 Application Insights는 권장 설정을 사용하여 애플리케이션을 온보딩한 후 계정에 추가되는 리소스 구성 요소에 대한 모니터링을 구성합니다. 확인란을 선택 취소하여 애플리케이션을 온보딩한 후 추가된 리소스에 대한 모니터링을 제외할 수 있습니다.

   1. **CloudWatch Events 모니터링**. Amazon EBS, Amazon EC2, AWS CodeDeploy, Amazon ECS, AWS Health API 및 알림, Amazon RDS, Amazon S3, AWS Step Functions로부터 인사이트를 얻기 위해 Application Insights 모니터링을 CloudWatch Events와 통합하려면 확인란을 선택합니다.

   1. **AWS Systems Manager OpsCenter와 통합.** 선택한 애플리케이션에 문제가 감지될 때 이를 확인하고 알림을 받으려면 **수정 조치를 위해 Systems Manager OpsCenter OpsItems 생성(Generate Systems Manager OpsCenter OpsItems for remedial actions)** 확인란을 선택합니다. AWS 리소스와 관련된 운영 작업 항목(OpsItem)을 해결하기 위해 수행된 작업을 추적하려면 SNS 주제 ARN을 제공합니다.

   1. **태그(선택 사항)**. CloudWatch Application Insights는 태그 기반 및 CloudFormation 기반 리소스 그룹을 모두 지원합니다(Auto Scaling 그룹 제외). 자세한 내용은 [Tag Editor 작업](https://docs.aws.amazon.com/ARG/latest/userguide/tag-editor.html)을 참조하세요.

   1. **리소스 검색**. 계정에서 검색된 모든 리소스가 이 목록에 추가됩니다. Application Insights에서 계정의 모든 리소스를 검색할 수 없는 경우 페이지 상단에 오류 메시지가 표시됩니다. 이 메시지에는 [필수 권한을 추가하는 방법에 대한 설명서](appinsights-account-based-onboarding-permissions.md) 링크가 있습니다.

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

      애플리케이션에 대한 [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)은 다음 형식으로 생성됩니다.

      ```
      arn:partition:applicationinsights:region:account-id:application/TBD/application-name
      ```

      예제

      ```
      arn:aws:applicationinsights:us-east-1:123456789012:application/TBD/my-application
      ```

------

1. 애플리케이션 모니터링 구성을 제출하면 **Application summary**(애플리케이션 요약), **Monitored components**(모니터링되는 구성 요소)와 **Unmonitored components**(모니터링되지 않는 구성 요소) 목록을 볼 수 있으며, **Components**(구성 요소) 옆에 있는 탭을 선택하여 **Configuration history**(구성 기록), **Log patterns**(로그 패턴), 적용한 **Tags**(태그)를 볼 수 있는 애플리케이션 세부 정보 페이지로 이동합니다.

   애플리케이션에 대한 통찰력을 보려면 **인사이트 보기(View Insights)**를 선택합니다.

   **편집(Edit)**을 선택해 CloudWatch Events 모니터링 및 AWS Systems Manager OpsCenter 통합에 대한 선택 사항을 업데이트할 수 있습니다.

   **구성 요소(Components)**에서 **작업(Actions)** 메뉴를 선택해 인스턴스 그룹을 생성하거나, 수정하거나, 그룹 해제할 수 있습니다.

   구성 요소 옆에 있는 글머리 기호를 선택하고 **모니터링 관리(Manage monitoring)**를 선택해 애플리케이션 티어, 로그 그룹, 이벤트 로그, 지표, 사용자 지정 경보 등의 구성 요소에 대한 모니터링을 관리할 수 있습니다.

## Amazon ECS 및 Amazon EKS 리소스 모니터링을 위한 Application Insights 활성화
<a name="appinsights-container-insights"></a>

Application Insights를 사용 설정해 Container Insights 콘솔의 컨테이너화된 애플리케이션 및 마이크로서비스를 모니터링할 수 있습니다. Application Insights는 다음 리소스에 대한 모니터링을 지원합니다.
+ Amazon ECS 클러스터
+ Amazon ECS 서비스
+ Amazon ECS 작업
+ Amazon EKS 클러스터

Application Insights가 사용 설정되면 컨테이너화된 애플리케이션 및 마이크로서비스에 대한 권장 지표 및 로그를 제공하고, 잠재적인 문제를 감지하고, CloudWatch Events를 생성하고, 자동 대시보드를 생성합니다.

Container Insights나 Application Insights 콘솔에서 컨테이너화된 리소스에 대해 Application Insights를 사용 설정할 수 있습니다.

**Container Insights 콘솔에서 Application Insights 활성화**  
Container Insights 콘솔의 Container Insights **성능 모니터링(Performance monitoring)** 대시보드에서 **애플리케이션 인사이트 자동 구성(Auto-configure Application Insights)**을 선택합니다. 애플리케이션 인사이트를 활성화하면 감지된 문제에 대한 세부 정보가 표시됩니다.

**Application Insights 콘솔에서 Application Insights 활성화**  
구성 요소 목록에 ECS 클러스터가 나타나면 Application Insights에서 Container Insights를 사용하여 추가 컨테이너 모니터링을 자동으로 활성화합니다.

EKS 클러스터의 경우 Container Insights로 추가 모니터링을 활성화하여 컨테이너 재시작 실패와 같은 진단 정보를 제공하고 문제를 격리 및 해결할 수 있도록 돕습니다. EKS용 Container Insights를 설정하려면 추가 단계가 필요합니다. EKS에서 Container Insights를 설정하는 단계에 대한 자세한 정보는 [Amazon EKS 및 Kubernetes에서 Container Insights 설정](deploy-container-insights-EKS.md) 섹션을 참조하세요.

Container Insights를 사용한 EKS에 대한 추가 모니터링은 EKS를 사용하는 Linux 인스턴스에서 지원됩니다

ECS 및 EKS 클러스터용 Container Insights 지원에 대한 자세한 내용은 [Container Insights](ContainerInsights.md) 섹션을 참조하세요.

## 애플리케이션 구성 요소에 대한 모니터링 사용 중지
<a name="appinsights-disable-monitoring"></a>

애플리케이션 구성 요소에 대한 모니터링을 비활성화하려면 애플리케이션 세부 정보 페이지에서 모니터링을 비활성화하고 싶은 구성 요소를 선택합니다. **작업(Actions)**을 선택한 다음 **모니터링에서 제거(Remove from monitoring)**를 선택합니다.

## 애플리케이션 삭제
<a name="appinsights-delete-app"></a>

애플리케이션을 삭제하려면 CloudWatch 대시보드에 있는 왼쪽 탐색 창의 [**인사이트(Insights)**]에서 [**Application Insights**]를 선택합니다. 삭제하려는 애플리케이션을 선택합니다. **작업(Actions)**에서 **애플리케이션 삭제(Delete application)**를 선택합니다. 그러면 모니터링이 삭제되고 애플리케이션 구성 요소에 대해 저장된 모니터가 모두 삭제됩니다. 애플리케이션 리소스는 삭제되지 않습니다.

# 명령줄을 사용하여 모니터링할 애플리케이션 설정, 구성, 관리
<a name="appinsights-setting-up-command"></a>

이 섹션에서는 AWS CLI 및 AWS Tools for Windows PowerShell을 사용하여 모니터링할 애플리케이션을 설정하고, 구성하고, 관리하는 방법을 단계별로 안내합니다.

**Topics**
+ [애플리케이션 추가 및 관리](#appinsights-config-app-command)
+ [모니터링 관리 및 업데이트](#appinsights-monitoring)
+ [SQL Always On 가용성 그룹에 대한 모니터링 구성](#configure-sql)
+ [MySQL RDS에 대한 모니터링 구성](#configure-mysql-rds)
+ [MySQL EC2에 대한 모니터링 구성](#configure-mysql-ec2)
+ [PostgreSQL RDS에 대한 모니터링 구성](#configure-postgresql-rds)
+ [PostgreSQL EC2에 대한 모니터링 구성](#configure-postgresql-ec2)
+ [Oracle RDS에 대한 모니터링 구성](#configure-oracle-rds)
+ [Oracle EC2에 대한 모니터링 구성](#configure-oracle-ec2)

## 애플리케이션 추가 및 관리
<a name="appinsights-config-app-command"></a>

명령줄을 사용해 Application Insights 애플리케이션에 대한 정보를 얻고 이 애플리케이션을 추가, 관리 및 구성할 수 있습니다.

**Topics**
+ [애플리케이션 추가](#appinsights-add-app)
+ [애플리케이션 설명](#appinsights-describe-app)
+ [애플리케이션의 구성 요소 나열](#appinsights-list-components)
+ [구성 요소 설명](#appinsights-describe-components)
+ [유사한 리소스를 사용자 지정 구성 요소로 그룹화](#appinsights-group-resources-components)
+ [사용자 지정 구성 요소 그룹화 해제](#appinsights-ungroup-resources-components)
+ [애플리케이션 업데이트](#appinsights-update-app)
+ [사용자 지정 구성 요소 업데이트](#appinsights-update-component)

### 애플리케이션 추가
<a name="appinsights-add-app"></a>

**AWS CLI를 사용하여 애플리케이션 추가**  
AWS CLI를 사용하여 `my-resource-group`이라는 리소스 그룹(생성된 OpsItem을 SNS 주제 ARN인 ` arn:aws:sns:us-east-1:123456789012:MyTopic`에 전달할 수 있도록 OpsCenter가 사용 설정된)의 애플리케이션을 추가하려면 다음 명령을 사용합니다.

```
aws application-insights create-application --resource-group-name my-resource-group --ops-center-enabled --ops-item-sns-topic-arn arn:aws:sns:us-east-1:123456789012:MyTopic
```

**AWS Tools for Windows PowerShell을 사용하여 애플리케이션 추가**  
AWS Tools for Windows PowerShell을 사용하여 `my-resource-group`이라는 리소스 그룹(생성된 OpsItem을 SNS 주제 ARN인 `arn:aws:sns:us-east-1:123456789012:MyTopic`에 전달할 수 있도록 OpsCenter가 사용 설정된)의 애플리케이션을 추가하려면 다음 명령을 사용합니다.

```
New-CWAIApplication -ResourceGroupName my-resource-group -OpsCenterEnabled true -OpsItemSNSTopicArn arn:aws:sns:us-east-1:123456789012:MyTopic
```

### 애플리케이션 설명
<a name="appinsights-describe-app"></a>

**AWS CLI를 사용하여 애플리케이션 설명**  
AWS CLI에서 다음 명령을 사용하면 `my-resource-group`이라는 리소스 그룹에 생성된 애플리케이션을 설명할 수 있습니다.

```
aws application-insights describe-application --resource-group-name my-resource-group
```

**AWS Tools for Windows PowerShell을 사용하여 애플리케이션 설명**  
AWS Tools for Windows PowerShell에서 다음 명령을 사용하면 `my-resource-group`이라는 리소스 그룹에 생성된 애플리케이션을 설명할 수 있습니다.

```
Get-CWAIApplication -ResourceGroupName my-resource-group
```

### 애플리케이션의 구성 요소 나열
<a name="appinsights-list-components"></a>

**AWS CLI를 사용하여 애플리케이션의 구성 요소 나열**  
AWS CLI에서 다음 명령을 사용하면 `my-resource-group`이라는 리소스 그룹에 생성된 구성 요소를 나열할 수 있습니다.

```
aws application-insights list-components --resource-group-name my-resource-group
```

**AWS Tools for Windows PowerShell을 사용하여 애플리케이션의 구성 요소 나열**  
AWS Tools for Windows PowerShell에서 다음 명령을 사용하면 `my-resource-group`이라는 리소스 그룹에 생성된 구성 요소를 나열할 수 있습니다.

```
Get-CWAIComponentList -ResourceGroupName my-resource-group
```

### 구성 요소 설명
<a name="appinsights-describe-components"></a>

**AWS CLI를 사용하여 구성 요소 설명**  
다음 AWS CLI 명령을 사용하면 `my-resource-group`이라는 리소스 그룹에 생성된 애플리케이션에 속해 있는 `my-component`라는 구성 요소를 설명할 수 있습니다.

```
aws application-insights describe-component --resource-group-name my-resource-group --component-name my-component
```

**AWS Tools for Windows PowerShell을 사용하여 구성 요소 설명**  
다음 AWS Tools for Windows PowerShell 명령을 사용하면 `my-resource-group`이라는 리소스 그룹에 생성된 애플리케이션에 속해 있는 `my-component`라는 구성 요소를 설명할 수 있습니다.

```
Get-CWAIComponent -ComponentName my-component -ResourceGroupName my-resource-group
```

### 유사한 리소스를 사용자 지정 구성 요소로 그룹화
<a name="appinsights-group-resources-components"></a>

.NET 웹 서버 인스턴스 등 유사한 리소스를 사용자 지정 구성 요소로 그룹화하여 보다 쉽게 온보딩을 수행하고 모니터링 및 통찰력을 향상시킬 수 있습니다. CloudWatch Application Insights는 EC2 인스턴스의 사용자 지정 그룹을 지원합니다.

**AWS CLI를 사용하여 리소스를 사용자 지정 구성 요소로 그룹화하려면**  
AWS CLI를 사용하여 세 개의 인스턴스(`arn:aws:ec2:us-east-1:123456789012:instance/i-11111`, `arn:aws:ec2:us-east-1:123456789012:instance/i-22222`, `arn:aws:ec2:us-east-1:123456789012:instance/i-33333`)를 `my-resource-group`이라는 리소스 그룹에 생성된 애플리케이션의 `my-component`라는 사용자 지정 구성 요소로 함께 그룹화하려면 다음 명령을 사용합니다.

```
aws application-insights create-component --resource-group-name my-resource-group --component-name my-component --resource-list arn:aws:ec2:us-east-1:123456789012:instance/i-11111 arn:aws:ec2:us-east-1:123456789012:instance/i-22222 arn:aws:ec2:us-east-1:123456789012:instance/i-33333
```

**AWS Tools for Windows PowerShell을 사용하여 리소스를 사용자 지정 구성 요소로 그룹화하려면**  
AWS Tools for Windows PowerShell을 사용하여 세 개의 인스턴스(`arn:aws:ec2:us-east-1:123456789012:instance/i-11111`, `arn:aws:ec2:us-east-1:123456789012:instance/i-22222`, `arn:aws:ec2:us-east-1:123456789012:instance/i-33333`)를 `my-resource-group`이라는 리소스 그룹에 생성된 애플리케이션의 `my-component`라는 사용자 지정 구성 요소로 함께 그룹화하려면 다음 명령을 사용합니다.

```
New-CWAIComponent -ResourceGroupName my-resource-group -ComponentName my-component -ResourceList arn:aws:ec2:us-east-1:123456789012:instance/i-11111,arn:aws:ec2:us-east-1:123456789012:instance/i-22222,arn:aws:ec2:us-east-1:123456789012:instance/i-33333 
```

### 사용자 지정 구성 요소 그룹화 해제
<a name="appinsights-ungroup-resources-components"></a>

**AWS CLI를 사용하여 사용자 지정 구성 요소의 그룹화를 해제하려면**  
AWS CLI에서 다음 명령을 사용하면 리소스 그룹 `my-resource-group`에 생성된 애플리케이션의 `my-component`라는 사용자 지정 구성 요소의 그룹화를 해제할 수 있습니다.

```
aws application-insights delete-component --resource-group-name my-resource-group --component-name my-new-component
```

**AWS Tools for Windows PowerShell을 사용하여 사용자 지정 구성 요소의 그룹화를 해제하려면**  
AWS Tools for Windows PowerShell에서 다음 명령을 사용하면 리소스 그룹 `my-resource-group`에 생성된 애플리케이션의 `my-component`라는 사용자 지정 구성 요소의 그룹화를 해제할 수 있습니다.

```
Remove-CWAIComponent -ComponentName my-component -ResourceGroupName my-resource-group
```

### 애플리케이션 업데이트
<a name="appinsights-update-app"></a>

**AWS CLI를 사용하여 애플리케이션 업데이트**  
AWS CLI에서 다음 명령을 사용하면 애플리케이션을 업데이트하여 애플리케이션과 관련하여 감지된 문제의 AWS Systems Manager OpsCenter OpsItem을 생성하고 생성된 OpsItem을 SNS 주제인 `arn:aws:sns:us-east-1:123456789012:MyTopic`에 연결할 수 있습니다.

```
aws application-insights update-application --resource-group-name my-resource-group --ops-center-enabled --ops-item-sns-topic-arn arn:aws:sns:us-east-1:123456789012:MyTopic
```

**AWS Tools for Windows PowerShell을 사용하여 애플리케이션 업데이트**  
AWS Tools for Windows PowerShell에서 다음 명령을 사용하면 애플리케이션을 업데이트하여 애플리케이션과 관련하여 감지된 문제의 AWS SSM OpsCenter OpsItem을 생성하고 생성된 OpsItem을 SNS 주제인 `arn:aws:sns:us-east-1:123456789012:MyTopic` 에 연결할 수 있습니다.

```
Update-CWAIApplication -ResourceGroupName my-resource-group -OpsCenterEnabled true -OpsItemSNSTopicArn arn:aws:sns:us-east-1:123456789012:MyTopic
```

### 사용자 지정 구성 요소 업데이트
<a name="appinsights-update-component"></a>

**AWS CLI를 사용하여 사용자 지정 구성 요소 업데이트**  
AWS CLI에서 다음 명령을 사용하면 `my-component`라는 사용자 지정 구성 요소를 새로운 구성 요소 이름인 `my-new-component` 및 업데이트된 인스턴스 그룹으로 업데이트할 수 있습니다.

```
aws application-insights update-component --resource-group-name my-resource-group --component-name my-component --new-component-name my-new-component --resource-list arn:aws:ec2:us-east-1:123456789012:instance/i-44444 arn:aws:ec2:us-east-1:123456789012:instance/i-55555
```

**AWS Tools for Windows PowerShell을 사용하여 사용자 지정 구성 요소 업데이트**  
AWS Tools for Windows PowerShell에서 다음 명령을 사용하면 `my-component`라는 사용자 지정 구성 요소를 새로운 구성 요소 이름인 `my-new-component` 및 업데이트된 인스턴스 그룹으로 업데이트할 수 있습니다.

```
Update-CWAIComponent -ComponentName my-component -NewComponentName my-new-component -ResourceGroupName my-resource-group -ResourceList arn:aws:ec2:us-east-1:123456789012:instance/i-44444,arn:aws:ec2:us-east-1:123456789012:instance/i-55555
```

## 모니터링 관리 및 업데이트
<a name="appinsights-monitoring"></a>

명령줄을 사용하여 Application Insights 애플리케이션에 대한 모니터링을 관리하고 업데이트할 수 있습니다.

**Topics**
+ [애플리케이션에서 발생하는 문제 나열](#appinsights-list-problems-monitoring)
+ [애플리케이션 문제 설명](#appinsights-describe-app-problem)
+ [문제와 관련된 이상 또는 오류 설명](#appinsights-describe-anomalies)
+ [애플리케이션의 이상 또는 오류 설명](#appinsights-describe-anomalies)
+ [구성 요소의 모니터링 구성 설명](#appinsights-describe-monitoring)
+ [구성 요소의 권장 모니터링 구성 설명](#appinsights-describe-rec-monitoring)
+ [구성 요소의 모니터링 구성 업데이트](#update-monitoring)
+ [Application Insights 모니터링에서 지정된 리소스 그룹 제거](#update-monitoring)

### 애플리케이션에서 발생하는 문제 나열
<a name="appinsights-list-problems-monitoring"></a>

**AWS CLI를 사용하여 애플리케이션 관련 문제 나열**  
AWS CLI에서 다음 명령을 사용하면 `my-resource-group`이라는 리소스 그룹에 생성된 애플리케이션의 Unix Epoch 이후 1,000\$110,000밀리초 사이에 감지된 애플리케이션 관련 문제를 나열할 수 있습니다.

```
aws application-insights list-problems --resource-group-name my-resource-group --start-time 1000 --end-time 10000
```

**AWS Tools for Windows PowerShell을 사용하여 애플리케이션 관련 문제 나열**  
AWS Tools for Windows PowerShell에서 다음 명령을 사용하면 `my-resource-group`이라는 리소스 그룹에 생성된 애플리케이션의 Unix Epoch 이후 1,000\$110,000밀리초 사이에 감지된 애플리케이션 관련 문제를 나열할 수 있습니다.

```
$startDate = "8/6/2019 3:33:00"
$endDate = "8/6/2019 3:34:00"
Get-CWAIProblemList -ResourceGroupName my-resource-group -StartTime $startDate -EndTime $endDate
```

### 애플리케이션 문제 설명
<a name="appinsights-describe-app-problem"></a>

**AWS CLI를 사용하여 애플리케이션 문제 설명**  
AWS CLI에서 다음 명령을 사용하면 문제 ID가 `p-1234567890`인 문제를 설명할 수 있습니다.

```
aws application-insights describe-problem —problem-id p-1234567890
```

**AWS Tools for Windows PowerShell을 사용하여 애플리케이션 문제 설명**  
AWS Tools for Windows PowerShell에서 다음 명령을 사용하면 문제 ID가 `p-1234567890`인 문제를 설명할 수 있습니다.

```
Get-CWAIProblem -ProblemId p-1234567890
```

### 문제와 관련된 이상 또는 오류 설명
<a name="appinsights-describe-anomalies"></a>

**AWS CLI를 사용하여 문제와 연결된 이상 또는 오류 설명**  
AWS CLI에서 다음 명령을 사용하면 문제 ID가 `p-1234567890`인 문제와 연결된 이상 또는 오류를 설명할 수 있습니다.

```
aws application-insights describe-problem-observations --problem-id -1234567890
```

**AWS Tools for Windows PowerShell을 사용하여 문제와 연결된 이상 또는 오류 설명**  
AWS Tools for Windows PowerShell에서 다음 명령을 사용하면 문제 ID가 `p-1234567890`인 문제와 연결된 이상 또는 오류를 설명할 수 있습니다.

```
Get-CWAIProblemObservation -ProblemId p-1234567890
```

### 애플리케이션의 이상 또는 오류 설명
<a name="appinsights-describe-anomalies"></a>

**AWS CLI를 사용하여 애플리케이션의 이상 또는 오류 설명**  
AWS CLI에서 다음 명령을 사용하면 관찰 ID가 `o-1234567890`인 애플리케이션의 이상 또는 오류를 설명할 수 있습니다.

```
aws application-insights describe-observation —observation-id o-1234567890
```

**AWS Tools for Windows PowerShell을 사용하여 애플리케이션의 이상 또는 오류 설명**  
AWS Tools for Windows PowerShell에서 다음 명령을 사용하면 관찰 ID가 `o-1234567890`인 애플리케이션의 이상 또는 오류를 설명할 수 있습니다.

```
Get-CWAIObservation -ObservationId o-1234567890
```

### 구성 요소의 모니터링 구성 설명
<a name="appinsights-describe-monitoring"></a>

**AWS CLI를 사용하여 구성 요소의 모니터링 구성 설명**  
AWS CLI에서 다음 명령을 사용하면 리소스 그룹 `my-resource-group`에 생성된 애플리케이션에 있는 `my-component`라는 구성 요소의 모니터링 구성을 설명할 수 있습니다.

```
aws application-insights describe-component-configuration —resource-group-name my-resource-group —component-name my-component
```

**AWS Tools for Windows PowerShell을 사용하여 구성 요소의 모니터링 구성 설명**  
AWS Tools for Windows PowerShell에서 다음 명령을 사용하면 리소스 그룹 `my-resource-group`에 생성된 애플리케이션에 있는 `my-component`라는 구성 요소의 모니터링 구성을 설명할 수 있습니다.

```
Get-CWAIComponentConfiguration -ComponentName my-component -ResourceGroupName my-resource-group
```

구성 요소 구성에 관한 자세한 내용과 예시 JSON 파일은 [구성 요소 구성 작업](component-config.md) 단원을 참조하세요.

### 구성 요소의 권장 모니터링 구성 설명
<a name="appinsights-describe-rec-monitoring"></a>

**AWS CLI를 사용하여 구성 요소의 권장 모니터링 구성 설명**  
구성 요소가 .NET Worker 애플리케이션의 일부인 경우 AWS CLI에서 다음 명령을 사용하면 리소스 그룹 `my-resource-group`에 생성된 애플리케이션에 있는 `my-component`라는 구성 요소의 권장 모니터링 구성을 설명할 수 있습니다.

```
aws application-insights describe-component-configuration-recommendation --resource-group-name my-resource-group --component-name my-component --tier DOT_NET_WORKER
```

**AWS Tools for Windows PowerShell을 사용하여 구성 요소의 권장 모니터링 구성 설명**  
구성 요소가 .NET Worker 애플리케이션의 일부인 경우 AWS Tools for Windows PowerShell에서 다음 명령을 사용하면 리소스 그룹 `my-resource-group`에 생성된 애플리케이션에 있는 `my-component`라는 구성 요소의 권장 모니터링 구성을 설명할 수 있습니다.

```
Get-CWAIComponentConfigurationRecommendation -ComponentName my-component -ResourceGroupName my-resource-group -Tier DOT_NET_WORKER
```

구성 요소 구성에 관한 자세한 내용과 예시 JSON 파일은 [구성 요소 구성 작업](component-config.md) 단원을 참조하세요.

### 구성 요소의 모니터링 구성 업데이트
<a name="update-monitoring"></a>

**AWS CLI를 사용하여 구성 요소의 모니터링 구성 업데이트**  
AWS CLI에서 다음 명령을 사용하면 `my-resource-group`이라는 리소스 그룹에 생성된 애플리케이션의 `my-component`라는 구성 요소를 업데이트할 수 있습니다. 이 명령은 다음과 같은 작업을 포함합니다.

1. 구성 요소에 대한 모니터링을 활성화합니다.

1. 구성 요소의 티어를 `.NET Worker`로 설정합니다.

1. `configuration.txt`라는 로컬 파일을 읽도록 구성 요소의 JSON 구성을 업데이트합니다.

```
aws application-insights update-component-configuration --resource-group-name my-resource-group --component-name my-component --tier DOT_NET_WORKER --monitor --component-configuration "file://configuration.txt"
```

**AWS Tools for Windows PowerShell을 사용하여 구성 요소의 모니터링 구성 업데이트**  
AWS Tools for Windows PowerShell에서 다음 명령을 사용하면 `my-resource-group`이라는 리소스 그룹에 생성된 애플리케이션의 `my-component`라는 구성 요소를 업데이트할 수 있습니다. 이 명령은 다음과 같은 작업을 포함합니다.

1. 구성 요소에 대한 모니터링을 활성화합니다.

1. 구성 요소의 티어를 `.NET Worker`로 설정합니다.

1. `configuration.txt`라는 로컬 파일을 읽도록 구성 요소의 JSON 구성을 업데이트합니다.

```
[string]$config = Get-Content -Path configuration.txt
Update-CWAIComponentConfiguration -ComponentName my-component -ResourceGroupName my-resource-group -Tier DOT_NET_WORKER -Monitor 1 -ComponentConfiguration $config
```

구성 요소 구성에 관한 자세한 내용과 예시 JSON 파일은 [구성 요소 구성 작업](component-config.md) 단원을 참조하세요.

### Application Insights 모니터링에서 지정된 리소스 그룹 제거
<a name="update-monitoring"></a>

**AWS CLI를 사용하여 Application Insights 모니터링에서 지정된 리소스 그룹 제거**  
AWS CLI에서 다음 명령을 사용하면 `my-resource-group`이라는 리소스 그룹에 생성된 애플리케이션을 모니터링에서 제거할 수 있습니다.

```
aws application-insights delete-application --resource-group-name my-resource-group
```

**AWS Tools for Windows PowerShell을 사용하여 Application Insights 모니터링에서 지정된 리소스 그룹 제거**  
AWS Tools for Windows PowerShell에서 다음 명령을 사용하면 `my-resource-group`이라는 리소스 그룹에 생성된 애플리케이션을 모니터링에서 제거할 수 있습니다.

```
Remove-CWAIApplication -ResourceGroupName my-resource-group
```

## SQL Always On 가용성 그룹에 대한 모니터링 구성
<a name="configure-sql"></a>

1. SQL HA EC2 인스턴스를 사용하여 리소스 그룹에 대한 애플리케이션을 생성합니다.

   ```
   aws application-insights create-application ‐-region <REGION> ‐-resource-group-name  <RESOURCE_GROUP_NAME>
   ```

1. 새 애플리케이션 구성 요소를 생성하여 SQL HA 클러스터를 나타내는 EC2 인스턴스를 정의합니다.

   ```
   aws application-insights create-component ‐-resource-group-name  "<RESOURCE_GROUP_NAME>" ‐-component-name SQL_HA_CLUSTER ‐-resource-list  "arn:aws:ec2:<REGION>:<ACCOUNT_ID>:instance/<CLUSTER_INSTANCE_1_ID>" "arn:aws:ec2:<REGION>:<ACCOUNT_ID>:instance/<CLUSTER_INSTANCE_2_ID>
   ```

1. SQL HA 구성 요소를 구성합니다.

   ```
   aws application-insights  update-component-configuration ‐-resource-group-name "<RESOURCE_GROUP_NAME>" ‐-region <REGION> ‐-component-name "SQL_HA_CLUSTER" ‐-monitor ‐-tier SQL_SERVER_ALWAYSON_AVAILABILITY_GROUP ‐-monitor  ‐-component-configuration '{
     "subComponents" : [ {
       "subComponentType" : "AWS::EC2::Instance",
       "alarmMetrics" : [ {
         "alarmMetricName" : "CPUUtilization",
         "monitor" : true
       }, {
         "alarmMetricName" : "StatusCheckFailed",
         "monitor" : true
       }, {
         "alarmMetricName" : "Processor % Processor Time",
         "monitor" : true
       }, {
         "alarmMetricName" : "Memory % Committed Bytes In Use",
         "monitor" : true
       }, {
         "alarmMetricName" : "Memory Available Mbytes",
         "monitor" : true
       }, {
         "alarmMetricName" : "Paging File % Usage",
         "monitor" : true
       }, {
         "alarmMetricName" : "System Processor Queue Length",
         "monitor" : true
       }, {
         "alarmMetricName" : "Network Interface Bytes Total/sec",
         "monitor" : true
       }, {
         "alarmMetricName" : "PhysicalDisk % Disk Time",
         "monitor" : true
       }, {
         "alarmMetricName" : "SQLServer:Buffer Manager Buffer cache hit ratio",
         "monitor" : true
       }, {
         "alarmMetricName" : "SQLServer:Buffer Manager Page life expectancy",
         "monitor" : true
       }, {
         "alarmMetricName" : "SQLServer:General Statistics Processes blocked",
         "monitor" : true
       }, {
         "alarmMetricName" : "SQLServer:General Statistics User Connections",
         "monitor" : true
       }, {
         "alarmMetricName" : "SQLServer:Locks Number of Deadlocks/sec",
         "monitor" : true
       }, {
         "alarmMetricName" : "SQLServer:SQL Statistics Batch Requests/sec",
         "monitor" : true
       }, {
         "alarmMetricName" : "SQLServer:Database Replica File Bytes Received/sec",
         "monitor" : true
       }, {
         "alarmMetricName" : "SQLServer:Database Replica Log Bytes Received/sec",
         "monitor" : true
       }, {
         "alarmMetricName" : "SQLServer:Database Replica Log remaining for undo",
         "monitor" : true
       }, {
         "alarmMetricName" : "SQLServer:Database Replica Log Send Queue",
         "monitor" : true
       }, {
         "alarmMetricName" : "SQLServer:Database Replica Mirrored Write Transaction/sec",
         "monitor" : true
       }, {
         "alarmMetricName" : "SQLServer:Database Replica Recovery Queue",
         "monitor" : true
       }, {
         "alarmMetricName" : "SQLServer:Database Replica Redo Bytes Remaining",
         "monitor" : true
       }, {
         "alarmMetricName" : "SQLServer:Database Replica Redone Bytes/sec",
         "monitor" : true
       }, {
         "alarmMetricName" : "SQLServer:Database Replica Total Log requiring undo",
         "monitor" : true
       }, {
         "alarmMetricName" : "SQLServer:Database Replica Transaction Delay",
         "monitor" : true
       } ],
       "windowsEvents" : [ {
         "logGroupName" : "WINDOWS_EVENTS-Application-<RESOURCE_GROUP_NAME>",
         "eventName" : "Application",
         "eventLevels" : [ "WARNING", "ERROR", "CRITICAL", "INFORMATION" ],
         "monitor" : true
       }, {
         "logGroupName" : "WINDOWS_EVENTS-System-<RESOURCE_GROUP_NAME>",
         "eventName" : "System",
         "eventLevels" : [ "WARNING", "ERROR", "CRITICAL" ],
         "monitor" : true
       }, {
         "logGroupName" : "WINDOWS_EVENTS-Security-<RESOURCE_GROUP_NAME>",
         "eventName" : "Security",
         "eventLevels" : [ "WARNING", "ERROR", "CRITICAL" ],
         "monitor" : true
       } ],
       "logs" : [ {
         "logGroupName" : "SQL_SERVER_ALWAYSON_AVAILABILITY_GROUP-<RESOURCE_GROUP_NAME>",
         "logPath" : "C:\\Program Files\\Microsoft SQL Server\\MSSQL**.MSSQLSERVER\\MSSQL\\Log\\ERRORLOG",
         "logType" : "SQL_SERVER",
         "monitor" : true,
         "encoding" : "utf-8"
       } ]
     }, {
       "subComponentType" : "AWS::EC2::Volume",
       "alarmMetrics" : [ {
         "alarmMetricName" : "VolumeReadBytes",
         "monitor" : true
       }, {
       "alarmMetricName" : "VolumeWriteBytes",
         "monitor" : true
       }, {
       "alarmMetricName" : "VolumeReadOps",
         "monitor" : true
       }, {
       "alarmMetricName" : "VolumeWriteOps",
         "monitor" : true
       }, {
       "alarmMetricName" : "VolumeQueueLength",
         "monitor" : true
       }, {
       "alarmMetricName" : "VolumeThroughputPercentage",
         "monitor" : true
       }, {
       "alarmMetricName" : "BurstBalance",
         "monitor" : true
       } ]
     } ]
   }'
   ```

**참고**  
Application Insights는 장애 조치와 같은 클러스터 활동을 감지하기 위해 애플리케이션 이벤트 로그(정보 수준)를 수집해야 합니다.

## MySQL RDS에 대한 모니터링 구성
<a name="configure-mysql-rds"></a>

1. RDS MySQL 데이터베이스 인스턴스를 사용하여 리소스 그룹에 대한 애플리케이션을 생성합니다.

   ```
   aws application-insights create-application ‐-region <REGION> ‐-resource-group-name  <RESOURCE_GROUP_NAME>
   ```

1. 오류 로그는 기본적으로 활성화됩니다. 느린 쿼리 로그는 데이터 파라미터 그룹을 사용하여 활성화할 수 있습니다. 자세한 내용은 [MySQL 느린 쿼리 및 일반 로그 액세스](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.Concepts.MySQL.html#USER_LogAccess.MySQL.Generallog)를 참조하세요.
   + `set slow_query_log = 1`
   + `set log_output = FILE`

1. 모니터링할 로그를 CloudWatch Logs로 내보냅니다. 자세한 내용은 [CloudWatch Logs에 MySQL Logs 게시](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.Concepts.MySQL.html#USER_LogAccess.MySQLDB.PublishtoCloudWatchLogs)를 참조하세요.

1. MySQL RDS 구성 요소를 구성합니다.

   ```
   aws application-insights  update-component-configuration ‐-resource-group-name "<RESOURCE_GROUP_NAME>" ‐-region <REGION> ‐-component-name "<DB_COMPONENT_NAME>" ‐-monitor ‐-tier DEFAULT ‐-monitor  ‐-component-configuration "{\"alarmMetrics\":[{\"alarmMetricName\":\"CPUUtilization\",\"monitor\":true}],\"logs\":[{\"logType\":\"MYSQL\",\"monitor\":true},{\"logType\": \"MYSQL_SLOW_QUERY\",\"monitor\":false}]}"
   ```

## MySQL EC2에 대한 모니터링 구성
<a name="configure-mysql-ec2"></a>

1. SQL HA EC2 인스턴스를 사용하여 리소스 그룹에 대한 애플리케이션을 생성합니다.

   ```
   aws application-insights create-application ‐-region <REGION> ‐-resource-group-name  <RESOURCE_GROUP_NAME>
   ```

1. 오류 로그는 기본적으로 활성화됩니다. 느린 쿼리 로그는 데이터 파라미터 그룹을 사용하여 활성화할 수 있습니다. 자세한 내용은 [MySQL 느린 쿼리 및 일반 로그 액세스](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.Concepts.MySQL.html#USER_LogAccess.MySQL.Generallog)를 참조하세요.
   + `set slow_query_log = 1`
   + `set log_output = FILE`

1. MySQL EC2 구성 요소를 구성합니다.

   ```
   aws application-insights  update-component-configuration ‐-resource-group-name "<RESOURCE_GROUP_NAME>" ‐-region <REGION> ‐-component-name "<DB_COMPONENT_NAME>" ‐-monitor ‐-tier MYSQL ‐-monitor  ‐-component-configuration "{\"alarmMetrics\":[{\"alarmMetricName\":\"CPUUtilization\",\"monitor\":true}],\"logs\":[{\"logGroupName\":\"<UNIQUE_LOG_GROUP_NAME>\",\"logPath\":\"C:\\\\ProgramData\\\\MySQL\\\\MySQL Server **\\\\Data\\\\<FILE_NAME>.err\",\"logType\":\"MYSQL\",\"monitor\":true,\"encoding\":\"utf-8\"}]}"
   ```

## PostgreSQL RDS에 대한 모니터링 구성
<a name="configure-postgresql-rds"></a>

1. PostgreSQL RDS 데이터베이스 인스턴스를 사용하여 리소스 그룹의 애플리케이션을 생성합니다.

   ```
   aws application-insights create-application ‐-region <REGION> ‐-resource-group-name  <RESOURCE_GROUP_NAME>
   ```

1. CloudWatch에 PostgreSQL 로그를 게시하는 기능은 기본적으로 사용 설정되어 있지 않습니다. 모니터링을 사용 설정하려면 RDS 콘솔을 열고 모니터링할 데이터베이스를 선택합니다. 오른쪽 상단 모서리에서 **수정(Modify)**을 선택하고 **PostgreSQL** 로그로 레이블이 지정된 확인란을 선택합니다. [**계속(Continue)**]을 선택하여 이 설정을 저장합니다.

1. PostgreSQL 로그를 CloudWatch로 내보냅니다.

1. PostgreSQL RDS 구성 요소를 구성합니다.

   ```
   aws application-insights update-component-configuration --region <REGION> --resource-group-name <RESOURCE_GROUP_NAME> --component-name <DB_COMPONENT_NAME> --monitor --tier DEFAULT --component-configuration 
   "{
      \"alarmMetrics\":[
         {
            \"alarmMetricName\": \"CPUUtilization\",
            \"monitor\": true
         }
      ],
      \"logs\":[
         {
            \"logType\": \"POSTGRESQL\",
            \"monitor\": true
         }
      ]
   }"
   ```

## PostgreSQL EC2에 대한 모니터링 구성
<a name="configure-postgresql-ec2"></a>

1. PostgreSQL EC2 인스턴스를 사용하여 리소스 그룹의 애플리케이션을 생성합니다.

   ```
   aws application-insights create-application ‐-region <REGION> ‐-resource-group-name  <RESOURCE_GROUP_NAME>
   ```

1. PostgreSQL EC2 구성 요소를 구성합니다.

   ```
   aws application-insights update-component-configuration ‐-region <REGION> ‐-resource-group-name <RESOURCE_GROUP_NAME> ‐-component-name <DB_COMPONENT_NAME> ‐-monitor ‐-tier POSTGRESQL ‐-component-configuration 
   "{
      \"alarmMetrics\":[
         {
            \"alarmMetricName\":\"CPUUtilization\",
            \"monitor\":true
         }
      ],
      \"logs\":[
         {
            \"logGroupName\":\"<UNIQUE_LOG_GROUP_NAME>\",
            \"logPath\":\"/var/lib/pgsql/data/log/\",
            \"logType\":\"POSTGRESQL\",
            \"monitor\":true,
            \"encoding\":\"utf-8\"
         }
      ]
   }"
   ```

## Oracle RDS에 대한 모니터링 구성
<a name="configure-oracle-rds"></a>

1. Oracle RDS 데이터베이스 인스턴스를 사용하여 리소스 그룹의 애플리케이션을 생성합니다.

   ```
   aws application-insights create-application ‐-region <REGION> ‐-resource-group-name  <RESOURCE_GROUP_NAME>
   ```

1. CloudWatch에 Oracle 로그를 게시하는 기능은 기본적으로 사용 설정되어 있지 않습니다. 모니터링을 사용 설정하려면 RDS 콘솔을 열고 모니터링할 데이터베이스를 선택합니다. 오른쪽 상단 모서리에서 **수정(Modify)**을 선택하고 **알림(Alert)** 로그 및 **리스너(Listener)** 로그로 레이블이 지정된 확인란을 선택합니다. [**계속(Continue)**]을 선택하여 이 설정을 저장합니다.

1. Oracle 로그를 CloudWatch로 내보냅니다.

1. Oracle RDS 구성 요소를 구성합니다.

   ```
   aws application-insights update-component-configuration --region <REGION> --resource-group-name <RESOURCE_GROUP_NAME> --component-name <DB_COMPONENT_NAME> --monitor --tier DEFAULT --component-configuration 
   "{
      \"alarmMetrics\":[
         {
            \"alarmMetricName\": \"CPUUtilization\",
            \"monitor\": true
         }
      ],
      \"logs\":[
         {
            \"logType\": \"ORACLE_ALERT\",
            \"monitor\": true
         },
         {
            \"logType\": \"ORACLE_LISTENER\",
            \"monitor\": true
         }
      ]
   }"
   ```

## Oracle EC2에 대한 모니터링 구성
<a name="configure-oracle-ec2"></a>

1. Oracle EC2 인스턴스를 사용하여 리소스 그룹의 애플리케이션을 생성합니다.

   ```
   aws application-insights create-application ‐-region <REGION> ‐-resource-group-name  <RESOURCE_GROUP_NAME>
   ```

1. Oracle EC2 구성 요소를 구성합니다.

   ```
   aws application-insights update-component-configuration ‐-region <REGION> ‐-resource-group-name <RESOURCE_GROUP_NAME> ‐-component-name <DB_COMPONENT_NAME> ‐-monitor ‐-tier ORACLE ‐-component-configuration 
   "{
      \"alarmMetrics\":[
         {
            \"alarmMetricName\":\"CPUUtilization\",
            \"monitor\":true
         }
      ],
      \"logs\":[
         {
            \"logGroupName\":\"<UNIQUE_LOG_GROUP_NAME>\",
            \"logPath\":\"/opt/oracle/diag/rdbms/*/*/trace\",
            \"logType\":\"ORACLE_ALERT\",
            \"monitor\":true,
         },
         {
            \"logGroupName\":\"<UNIQUE_LOG_GROUP_NAME>\",
            \"logPath\":\"/opt/oracle/diag/tnslsnr/$HOSTNAME/listener/trace/\",
            \"logType\":\"ORACLE_ALERT\",
            \"monitor\":true,
         }
      ]
   }"
   ```

# 감지된 문제에 대한 Application Insights CloudWatch Events
<a name="appinsights-cloudwatch-events"></a>

CloudWatch Application Insights에 추가된 각 애플리케이션의 경우 다음 이벤트에 대해 CloudWatch 이벤트가 최대한 게시됩니다.
+ **문제 생성.** CloudWatch Application Insights가 새로운 문제를 감지할 때 발생합니다.
  + 세부 정보 유형: ** "Application Insights 문제 감지"**
  + 세부 정보:
    + `problemId`: 감지된 문제 ID
    + `region`: 문제가 생성된 AWS 리전
    + `resourceGroupName`: 문제가 감지된 등록된 애플리케이션의 리소스 그룹
    + `status`: 문제의 상태 가능한 상태 및 정의는 다음과 같습니다.
      + `In progress`: 새로운 문제가 확인되었습니다. 이 문제는 여전히 관찰을 받고 있습니다.
      + `Recovering`: 문제가 안정화되고 있습니다. 문제가 이 상태일 때 수동으로 문제를 해결할 수 있습니다.
      + `Resolved`: 문제가 해결되었습니다. 이 문제에 대한 새로운 관찰은 없습니다.
      + `Recurring`: 문제가 지난 24시간 내에 해결되었습니다. 추가 관찰 결과 다시 열렸습니다.
    + `severity`: 문제의 심각도
    + `problemUrl`: 문제의 콘솔 URL
+ **문제 업데이트.** 새로운 관찰로 문제가 업데이트되거나 기존의 관찰이 업데이트되어 문제가 업데이트될 때 발생합니다. 업데이트에는 문제의 해결 또는 종료가 포함됩니다.
  + 세부 정보 유형: **"Application Insights 문제 업데이트"**
  + 세부 정보:
    + `problemId`: 생성된 문제 ID
    + `region`: 문제가 생성된 AWS 리전
    + `resourceGroupName`: 문제가 감지된 등록된 애플리케이션의 리소스 그룹
    + `status`: 문제의 상태
    + `severity`: 문제의 심각도
    + `problemUrl`: 문제의 콘솔 URL

# 감지된 문제에 대한 알림 수신
<a name="appinsights-problem-notifications"></a>

Amazon SNS 알림, Systems Manager OpsCenter 또는 CloudWatch Events를 사용하여 애플리케이션에서 감지된 문제에 대한 알림을 받을 수 있습니다.

**감지된 문제에 대한 CloudWatch Application Insights Amazon SNS 알림**  
AWS Management Console 또는 AWS CLI를 사용하여 Amazon SNS 알림을 구성할 수 있습니다. AWS Management Console을 사용하여 알림을 설정하려면 다음 예제와 같이 필요한 Amazon SNS 권한이 있어야 합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "sns:ListTopics",
          "sns:Subscribe",
          "sns:CreateTopic"
        ],    
        "Resource": [
          "*" 
        ]
      }
    ]    
}
```

------

Amazon SNS 알림을 설정한 후 문제가 발생하거나 해결되면 이메일 알림을 받게 됩니다. 기존 문제에 새로운 관찰이 추가될 경우에도 알림이 수신됩니다.

다음 예제는 이메일 알림의 콘텐츠를 보여줍니다.

```
    You are receiving this email because Problem "p-1234567" has been CREATED by Amazon CloudWatch Application Insights
    
    Problem Details: 
    Problem URL: https:////console.aws.amazon.com/cloudwatch/home?region=us-east-1#settings:AppInsightsSettings/problemDetails?problemId=p-1234567
    Problem Summary: Title of the problem
    Severity: HIGH
    Insights: Something specific is broken
    Status : RESOLVED
    AffectedResource: arn:aws:ec2:us-east-1:555555555555:host/testResource
    Region: us-east-1
    RecurringCount: 0
    StartTime: 2019-03-23T10:42:57.777Z
    LastUpdatedTime: 2019-03-23T21:49:37.777Z
    LastRecurrenceTime: 
    StopTime: 2019-03-23T21:49:37.777Z
    
    Recent Issues
    - TelemetryArn:alarm1
      StartTime: 2024-08-15T22:12:46.007Z
      StopTime:
    - TelemetryArn:log-group1
      StartTime: 2024-08-15T22:12:46.007Z
      StopTime: 2024-08-15T22:12:46.007Z
```

**Systems Manager를 사용하여 문제 알림을 수신하는 방법**  
**AWS Systems Manager를 통한 작업.** CloudWatch Application Insights는 Systems Manager OpsCenter와의 기본 통합 기능을 제공합니다. 애플리케이션에 이 통합을 사용하도록 선택하면 애플리케이션에서 감지된 모든 문제에 대한 OpsItem이 OpsCenter 콘솔에 생성됩니다. OpsCenter 콘솔에서, CloudWatch Application Insights에서 감지한 문제에 대한 요약된 정보를 보고 Systems Manager Automation 실행서를 선택하여 수정 작업을 수행하거나 애플리케이션에서 리소스 문제를 일으키는 Windows 프로세스를 추가로 식별할 수 있습니다.

**CloudWatch Events를 사용하여 문제 알림을 수신하는 방법**  
CloudWatch 콘솔에서 왼쪽 탐색 창의 [**이벤트(Events)**] 아래에서 [**규칙(Rules)**]을 선택합니다. **규칙** 페이지에서 **규칙 생성**을 선택합니다. [**서비스 이름(Service Name)**] 드롭다운 목록에서 [**Amazon CloudWatch Application Insights**]를 선택하고 [**이벤트 유형(Event Type)**]을 선택합니다. 그런 다음 **Add target(대상 추가)**을 선택하고 대상 및 파라미터(예: **SNS 주제** 또는 **Lambda 함수**)를 선택합니다.

# Application Insights의 교차 계정 관찰성
<a name="appinsights-cross-account"></a>

CloudWatch Application Insights 교차 계정 관찰성을 사용하면 단일 지역 내의 여러 AWS 계정에 걸쳐 있는 애플리케이션을 모니터하고 문제를 해결할 수 있습니다.

Amazon CloudWatch Observability Access Manager를 사용하여 하나 이상의 AWS 계정을 모니터링 계정으로 설정할 수 있습니다. 모니터링 계정에 싱크를 생성하여 소스 계정의 데이터를 볼 수 있는 기능을 모니터링 계정에 제공합니다. 싱크를 사용하여 소스 계정에서 모니터링 계정으로의 링크를 만듭니다. 자세한 내용은 [CloudWatch 크로스 계정 관측성](CloudWatch-Unified-Cross-Account.md) 섹션을 참조하세요.

**필수 리소스**  
CloudWatch Application Insights 교차 계정 관찰성의 적절한 작동을 위해 CloudWatch Observability Access Manager를 통해 다음 원격 측정 유형이 공유되는지 확인하세요.
+ CloudWatch Application Insights의 애플리케이션
+ Amazon CloudWatch의 지표
+ Amazon CloudWatch Logs의 로그 그룹
+ [AWS X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html)의 추적

# 구성 요소 구성 작업
<a name="component-config"></a>

구성 요소 구성은 구성 요소의 구성 설정을 설명하는 JSON 형식의 텍스트 파일입니다. 이 단원에서는 템플릿 조각 예 및 구성 요소 구성 예를 제공하고 구성 요소 구성 섹션을 설명합니다.

**Topics**
+ [템플릿 조각](component-config-json.md)
+ [Sections](component-config-sections.md)
+ [관련 서비스의 구성 예](component-configuration-examples.md)

# 구성 요소 구성 템플릿 조각
<a name="component-config-json"></a>

다음 예는 JSON 형식의 템플릿 조각을 보여줍니다.

```
{
  "alarmMetrics" : [
    list of alarm metrics
  ],
  "logs" : [
    list of logs
  ],
  "processes" : [
   list of processes
  ],
  "windowsEvents" : [
    list of windows events channels configurations
  ],
  "alarms" : [
    list of CloudWatch alarms
  ],
  "jmxPrometheusExporter": {
    JMX Prometheus Exporter configuration
  },
  "hanaPrometheusExporter": {
      SAP HANA Prometheus Exporter configuration
  },
  "haClusterPrometheusExporter": {
      HA Cluster Prometheus Exporter configuration
  },
  "netWeaverPrometheusExporter": {
      SAP NetWeaver Prometheus Exporter configuration
  },
  "subComponents" : [
    {
      "subComponentType" : "AWS::EC2::Instance" ...
      component nested instances configuration
    },
    {
      "subComponentType" : "AWS::EC2::Volume" ...
      component nested volumes configuration
    }
  ]
}
```

# 구성 요소 구성 섹션
<a name="component-config-sections"></a>

구성 요소 구성에는 여러 주요 섹션이 포함되어 있습니다. 구성 요소 구성의 섹션은 임의의 순서로 나열될 수 있습니다.
+ **alarmMetrics(선택 사항)**

  구성 요소에 대해 모니터링할 [지표](#component-config-metric) 목록. alarmMetrics 섹션은 모든 구성 요소 유형에 포함될 수 있습니다.
+ **로그(선택 사항)**

  구성 요소에 대해 모니터링할 [로그](#component-configuration-log) 목록. 로그 섹션은 EC2 인스턴스에만 있습니다.
+ **프로세스(선택 사항)**

  구성 요소에 대해 모니터링하기 위한 [프로세스](#component-configuration-process) 목록입니다. 프로세스 섹션은 EC2 인스턴스에만 있습니다.
+ **subComponents(선택 사항)**

  구성 요소의 중첩된 인스턴스 및 볼륨 subComponent 구성입니다. ELB, ASG, EC2 인스턴스, 사용자 지정 그룹화 EC2 인스턴스와 같은 유형의 구성 요소에는 중첩된 인스턴스 및 subComponents 섹션이 있을 수 있습니다.
+ **경보(선택 사항)**

  구성 요소에 대해 모니터링할 [경보](#component-configuration-alarms) 목록입니다. 경보 섹션은 모든 구성 요소 유형에 포함될 수 있습니다.
+ **windowsEvents(선택 사항)**

  구성 요소에 대해 모니터링할 [Windows 이벤트](#windows-events) 목록입니다. EC2 인스턴스의 Windows에만 `windowsEvents` 섹션이 있습니다.
+ **JMXPrometheusExporter(선택 사항)**

  JMXPrometheus Exporter 구성입니다.
+ **hanaPrometheusExporter(선택 사항)**

  SAP HANA Prometheus Exporter 구성.
+ **haClusterPrometheusExporter(선택 사항)**

  HA Cluster Prometheus Exporter 구성.
+ **netWeaverPrometheusExporter(선택 사항) **

  SAP NetWeaver Prometheus Exporter 구성.
+ **sapAsePrometheusExporter(선택 사항)**

  SAP ASE Prometheus Exporter 구성입니다.

다음 예는 JSON 형식의 **subComponents 섹션 조각**에 대한 구문을 보여 줍니다.

```
[
  {
    "subComponentType" : "AWS::EC2::Instance",
    "alarmMetrics" : [
      list of alarm metrics
    ],
    "logs" : [
      list of logs
    ],
    "processes": [
      list of processes
    ],
    "windowsEvents" : [
      list of windows events channels configurations
    ]
  },
  {
    "subComponentType" : "AWS::EC2::Volume",
    "alarmMetrics" : [
      list of alarm metrics
    ]
  }
]
```

## 구성 요소 구성 섹션 속성
<a name="component-config-properties"></a>

이 단원에서는 각 구성 요소 구성 섹션의 속성을 설명합니다.

**Topics**
+ [지표](#component-config-metric)
+ [Log](#component-configuration-log)
+ [프로세스](#component-configuration-process)
+ [JMX Prometheus Exporter](#component-configuration-prometheus)
+ [HANA Prometheus Exporter](#component-configuration-hana-prometheus)
+ [HA Cluster Prometheus Exporter](#component-configuration-ha-cluster-prometheus)
+ [NetWeaver Prometheus Exporter](#component-configuration-netweaver-prometheus)
+ [SAP ASE Prometheus Exporter](#component-configuration-sap-ase-prometheus)
+ [Windows 이벤트](#windows-events)
+ [경보](#component-configuration-alarms)

### 지표
<a name="component-config-metric"></a>

구성 요소에 대해 모니터링할 지표를 정의합니다.

**JSON** 

```
{
  "alarmMetricName" : "monitoredMetricName",
  "monitor" : true/false
}
```

**속성**
+ **alarmMetricName(필수 사항)**

  구성 요소에 대해 모니터링할 지표의 이름. Application Insights에서 지원하는 지표에 대해서는 [Amazon CloudWatch Application Insights에서 지원하는 로그 및 지표](appinsights-logs-and-metrics.md) 단원을 참조하세요.
+ **monitor(선택 사항)**

  지표를 모니터링할지 여부를 나타내는 부울. 기본값은 `true`입니다.

### Log
<a name="component-configuration-log"></a>

구성 요소에 대해 모니터링할 로그를 정의합니다.

**JSON** 

```
{
  "logGroupName" : "logGroupName",
  "logPath" : "logPath",
  "logType" : "logType",
  "encoding" : "encodingType",
  "monitor" : true/false
}
```

**속성**
+ **logGroupName(필수 사항)**

  모니터링된 로그에 연결할 CloudWatch 로그 그룹 이름. 로그 그룹 이름 제약 조건에 대해서는 [CreateLogGroup](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateLogGroup.html)을 참조하세요.
+ **logPath(EC2 인스턴스 구성 요소에 필요, AWS Lambda 같은 CloudWatch 에이전트를 사용하지 않는 구성 요소에 불필요)**

  모니터링할 로그의 경로. 로그 경로는 절대 Windows 시스템 파일 경로여야 합니다. 자세한 내용은 [CloudWatch 에이전트 구성 파일: 로그 섹션](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-Configuration-File-Details.html#CloudWatch-Agent-Configuration-File-Logssection)을 참조하세요.
+ **logType(필수 사항)**

  로그 유형은 Application Insights가 로그를 분석하는 로그 패턴을 결정합니다. 로그 유형은 다음 중에서 선택됩니다.
  + `SQL_SERVER`
  + `MYSQL`
  + `MYSQL_SLOW_QUERY`
  + `POSTGRESQL`
  + `ORACLE_ALERT`
  + `ORACLE_LISTENER`
  + `IIS`
  + `APPLICATION`
  + `WINDOWS_EVENTS`
  + `WINDOWS_EVENTS_ACTIVE_DIRECTORY`
  + `WINDOWS_EVENTS_DNS`
  + `WINDOWS_EVENTS_IIS`
  + `WINDOWS_EVENTS_SHAREPOINT`
  + `SQL_SERVER_ALWAYSON_AVAILABILITY_GROUP`
  + `SQL_SERVER_FAILOVER_CLUSTER_INSTANCE`
  + `DEFAULT`
  + `CUSTOM`
  + `STEP_FUNCTION`
  + `API_GATEWAY_ACCESS`
  + `API_GATEWAY_EXECUTION`
  + `SAP_HANA_LOGS`
  + `SAP_HANA_TRACE`
  + `SAP_HANA_HIGH_AVAILABILITY`
  + `SAP_NETWEAVER_DEV_TRACE_LOGS`
  + `PACEMAKER_HIGH_AVAILABILITY`
+ **encoding(선택 사항)**

  모니터링할 로그의 인코딩 유형. 지정된 인코딩은 [CloudWatch 에이전트 지원 인코딩](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AgentReference.html) 목록에 포함되어야 합니다. 제공되지 않은 경우 CloudWatch Application Insights에서는 다음을 제외한 유형 utf-8의 기본 인코딩을 사용합니다.
  +  `SQL_SERVER`: utf-16 인코딩
  +  `IIS`: ascii 인코딩
+ **monitor(선택 사항)**

  로그를 모니터링할지 여부를 나타내는 부울. 기본값은 `true`입니다.

### 프로세스
<a name="component-configuration-process"></a>

구성 요소에 대해 모니터링하기 위한 프로세스를 정의합니다.

**JSON** 

```
{
  "processName" : "monitoredProcessName",
  "alarmMetrics" : [
      list of alarm metrics
  ] 
}
```

**속성**
+ **processName(필수)**

  구성 요소에 대해 모니터링하기 위한 프로세스의 이름. 프로세스 이름에는 다음과 같은 프로세스 스템(예: `sqlservr` 또는 `sqlservr.exe`)이 포함되어서는 안 됩니다.
+ **alarmMetrics(필수)**

  이 프로세스를 모니터링하기 위한 [지표](#component-config-metric) 목록입니다. CloudWatch Application Insights에서 지원하는 프로세스 지표를 보려면 [Amazon Elastic Compute Cloud(EC2)](appinsights-metrics-ec2.md)의 내용을 참조하세요.

### JMX Prometheus Exporter
<a name="component-configuration-prometheus"></a>

JMX Prometheus Exporter 설정을 정의합니다.

**JSON** 

```
"JMXPrometheusExporter": {
  "jmxURL" : "JMX URL",
  "hostPort" : "The host and port",
  "prometheusPort" : "Target port to emit Prometheus metrics"
}
```

**속성**
+ **jmxURL(선택 사항)**

  연결할 전체 JMX URL입니다.
+ **hostPort(선택 사항)**

  원격 JMX를 통해 연결할 호스트 및 포트입니다. `jmxURL` 및 `hostPort` 중 하나만 지정할 수 있습니다.
+ **prometheusPort(선택 사항)**

  Prometheus 지표를 보낼 대상 포트입니다. 지정하지 않으면 기본 포트인 9404가 사용됩니다.

### HANA Prometheus Exporter
<a name="component-configuration-hana-prometheus"></a>

HANA Prometheus Exporter 설정을 정의합니다.

**JSON** 

```
"hanaPrometheusExporter": {
    "hanaSid": "SAP HANA  SID",
    "hanaPort": "HANA database port",
    "hanaSecretName": "HANA secret name",
    "prometheusPort": "Target port to emit Prometheus metrics"
}
```

**속성**
+ **hanaSid**

  SAP HANA 시스템의 3글자 SAP 시스템 ID(SID).
+ **hanaPort**

  Exporter가 HANA 지표를 쿼리할 HANA 데이터베이스 포트.
+ **hanaSecretName**

  HANA 모니터링 사용자 자격 증명을 저장하는 AWS Secrets Manager 보안 암호. HANA Prometheus Exporter는 이러한 자격 증명을 사용하여 데이터베이스에 연결하고 HANA 지표를 쿼리합니다.
+ **prometheusPort(선택 사항)**

  Prometheus에서 지표를 보낼 대상 포트. 지정하지 않으면 기본 포트인 9668이 사용됩니다.

### HA Cluster Prometheus Exporter
<a name="component-configuration-ha-cluster-prometheus"></a>

HA Prometheus Exporter 설정을 정의합니다.

**JSON** 

```
"haClusterPrometheusExporter": {
    "prometheusPort": "Target port to emit Prometheus metrics"
}
```

**속성**
+ **prometheusPort(선택 사항)**

  Prometheus에서 지표를 보낼 대상 포트. 지정하지 않으면 기본 포트인 9664가 사용됩니다.

### NetWeaver Prometheus Exporter
<a name="component-configuration-netweaver-prometheus"></a>

NetWeaver Prometheus Exporter 설정을 정의합니다.

**JSON** 

```
"netWeaverPrometheusExporter": {
    "sapSid": "SAP NetWeaver  SID",
    "instanceNumbers": [ "Array of instance Numbers of SAP NetWeaver system "],
"prometheusPort": "Target port to emit Prometheus metrics"
}
```

**속성**
+ **sapSid**

  SAP NetWeaver 시스템의 3글자 SAP 시스템 ID(SID).
+ **instanceNumbers**

  SAP NetWeaver 시스템의 인스턴스 번호 배열.

  **예: **`"instanceNumbers": [ "00", "01"]`
+ **prometheusPort(선택 사항)**

  Prometheus 지표를 전송할 대상 포트입니다. 지정하지 않으면 기본 포트인 `9680`가 사용됩니다.

### SAP ASE Prometheus Exporter
<a name="component-configuration-sap-ase-prometheus"></a>

SAP ASE Prometheus Exporter 설정을 정의합니다.

**JSON** 

```
"sapASEPrometheusExporter": {
    "sapAseSid": "SAP ASE SID",
    "sapAsePort": "SAP ASE database port",
    "sapAseSecretName": "SAP ASE secret name",
    "prometheusPort": "Target port to emit Prometheus metrics",
    "agreeToEnableASEMonitoring": true
}
```

**속성**
+ **sapAseSid**

  SAP ASE 시스템의 3글자 SAP 시스템 ID(SID).
+ **sapAsePort**

  Exporter가 ASE 지표를 쿼리할 SAP ASE 데이터베이스 포트.
+ **sapAseSecretName**

  ASE 모니터링 사용자 자격 증명을 저장하는 AWS Secrets Manager 보안 암호. SAP ASE Prometheus Exporter는 이러한 자격 증명을 사용하여 데이터베이스에 연결하고 ASE 지표를 쿼리합니다.
+ **prometheusPort(선택 사항)**

  Prometheus에서 지표를 보낼 대상 포트. 지정하지 않으면 기본 포트인 9399가 사용됩니다. 기본 포트를 사용하는 다른 ASE DB가 있는 경우 9499를 사용합니다.

### Windows 이벤트
<a name="windows-events"></a>

기록할 Windows 이벤트를 정의합니다.

**JSON** 

```
{
  "logGroupName" : "logGroupName",
  "eventName" : "eventName",
  "eventLevels" : ["ERROR","WARNING","CRITICAL","INFORMATION","VERBOSE"],
  "monitor" : true/false
}
```

**속성**
+ **logGroupName(필수 사항)**

  모니터링된 로그에 연결할 CloudWatch 로그 그룹 이름. 로그 그룹 이름 제약 조건에 대해서는 [CreateLogGroup](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateLogGroup.html)을 참조하세요.
+ **eventName(필수)**

  기록할 Windows 이벤트 유형입니다. 이것은 Windows 이벤트 로그 채널 이름과 동일합니다. 예를 들면 System, Security, CustomEventName 등이 있습니다. 이 필드는 기록할 Windows 이벤트 유형마다 있어야 합니다.
+ **eventLevels(필수)**

  기록할 이벤트 수준을 지정합니다. 기록할 각 수준을 지정해야 합니다. 가능한 값은 `INFORMATION`, `WARNING`, `ERROR`, `CRITICAL` 및 `VERBOSE`입니다. 이 필드는 기록할 Windows 이벤트 유형마다 있어야 합니다.
+ **monitor(선택 사항)**

  로그를 모니터링할지 여부를 나타내는 부울. 기본값은 `true`입니다.

### 경보
<a name="component-configuration-alarms"></a>

구성 요소에 대해 모니터링할 CloudWatch 경보를 정의합니다.

**JSON** 

```
{
  "alarmName" : "monitoredAlarmName",
  "severity" : HIGH/MEDIUM/LOW
}
```

**속성**
+ **alarmName(필수)**

  구성 요소에 대해 모니터링할 CloudWatch 경보의 이름입니다.
+ **severity(선택 사항)**

  경보가 울릴 때의 중단 정도를 나타냅니다.

# 구성 요소 구성 예제
<a name="component-configuration-examples"></a>

다음 예는 관련 서비스에 대한 구성 요소 구성을 JSON 형식으로 보여줍니다.

**Topics**
+ [Amazon DynamoDB 테이블](component-configuration-examples-dynamo.md)
+ [Amazon EC2 Auto Scaling(ASG)](component-configuration-examples-asg.md)
+ [Amazon EKS 클러스터](component-configuration-examples-eks-cluster.md)
+ [Amazon Elastic Compute Cloud(EC2) 인스턴스](component-configuration-examples-ec2.md)
+ [Amazon Elastic Container Service(Amazon ECS)](component-configuration-examples-ecs.md)
+ [Amazon ECS 서비스](component-configuration-examples-ecs-service.md)
+ [Amazon ECS 작업](component-configuration-examples-ecs-task.md)
+ [Amazon Elastic File System(Amazon EFS)](component-configuration-examples-efs.md)
+ [Amazon FSx](component-configuration-examples-fsx.md)
+ [Amazon Relational Database Service(RDS) Aurora MySQL](component-configuration-examples-rds-aurora.md)
+ [Amazon Relational Database Service(RDS) 인스턴스](component-configuration-examples-rds.md)
+ [Amazon Route 53 상태 확인](component-configuration-examples-health-check.md)
+ [Amazon Route 53 호스팅 영역](component-configuration-examples-hosted-zone.md)
+ [Amazon Route 53 Resolver 엔드포인트](component-configuration-examples-resolver-endpoint.md)
+ [Amazon Route 53 Resolver 쿼리 로깅 구성](component-configuration-examples-resolver-query-logging.md)
+ [Amazon S3 버킷](component-configuration-examples-s3.md)
+ [Amazon Simple Queue Service(SQS)](component-configuration-examples-sqs.md)
+ [Amazon SNS 주제](component-configuration-examples-sns.md)
+ [Amazon Virtual Private Cloud(Amazon VPC)](component-configuration-examples-vpc.md)
+ [Amazon VPC Network Address Translation(NAT) 게이트웨이](component-configuration-examples-nat-gateway.md)
+ [API Gateway REST API 스테이지](component-configuration-examples-api-gateway.md)
+ [Application Elastic Load Balancing](component-configuration-examples-application-elb.md)
+ [AWS Lambda 함수](component-configuration-examples-lambda.md)
+ [AWS Network Firewall 규칙 그룹](component-configuration-examples-firewall-rule-group.md)
+ [AWS Network Firewall 규칙 그룹 연결](component-configuration-examples-firewall-rule-group-assoc.md)
+ [AWS Step Functions](component-configuration-examples-step-functions.md)
+ [고객이 그룹화한 Amazon EC2 인스턴스](component-configuration-examples-grouped-ec2.md)
+ [Elastic Load Balancing](component-configuration-examples-elb.md)
+ [Java](component-configuration-examples-java.md)
+ [Amazon EC2의 Kubernetes](component-configuration-examples-kubernetes-ec2.md)
+ [RDS MariaDB 및 RDS MySQL](component-configuration-examples-mysql.md)
+ [RDS Oracle](component-configuration-examples-oracle.md)
+ [RDS PostgreSQL](component-configuration-examples-rds-postgre-sql.md)
+ [Amazon EC2에 대한 SAP ASE](component-configuration-examples-sap-ase.md)
+ [Amazon EC2에 대한 SAP ASE 고가용성](component-configuration-examples-sap-ase-ha.md)
+ [Amazon EC2에 대한 SAP HANA](component-configuration-examples-hana.md)
+ [Amazon EC2에 대한 SAP HANA 고가용성](component-configuration-examples-hana-ha.md)
+ [Amazon EC2의 SAP NetWeaver](component-configuration-examples-netweaver.md)
+ [Amazon EC2에 대한 SAP NetWeaver High Availability](component-configuration-examples-netweaver-ha.md)
+ [SQL Always On 가용성 그룹](component-configuration-examples-sql.md)
+ [SQL 장애 조치 클러스터 인스턴스](component-configuration-examples-sql-failover-cluster.md)

# Amazon DynamoDB 테이블
<a name="component-configuration-examples-dynamo"></a>

다음 예는 Amazon DynamoDB 테이블을 위한 JSON 형식의 구성 요소 구성을 보여줍니다.

```
{
  "alarmMetrics": [
    {
      "alarmMetricName": "SystemErrors",
      "monitor": false
    },
    {
      "alarmMetricName": "UserErrors",
      "monitor": false
    },
    {
      "alarmMetricName": "ConsumedReadCapacityUnits",
      "monitor": false
    },
    {
      "alarmMetricName": "ConsumedWriteCapacityUnits",
      "monitor": false
    },
    {
      "alarmMetricName": "ReadThrottleEvents",
      "monitor": false
    },
    {
      "alarmMetricName": "WriteThrottleEvents",
      "monitor": false
    },
    {
      "alarmMetricName": "ConditionalCheckFailedRequests",
      "monitor": false
    },
    {
      "alarmMetricName": "TransactionConflict",
      "monitor": false
    }
  ],
  "logs": []
}
```

# Amazon EC2 Auto Scaling(ASG)
<a name="component-configuration-examples-asg"></a>

다음 예는 Amazon EC2 Auto Scaling(ASG)을 위한 JSON 형식의 구성 요소 구성을 보여줍니다.

```
{
    "alarmMetrics" : [
      {
        "alarmMetricName" : "CPUCreditBalance"
      }, {
        "alarmMetricName" : "EBSIOBalance%"
      }
    ],
    "subComponents" : [
      {
        "subComponentType" : "AWS::EC2::Instance",
        "alarmMetrics" : [
          {
            "alarmMetricName" : "CPUUtilization"
          }, {
            "alarmMetricName" : "StatusCheckFailed"
          }
        ],
        "logs" : [
          {
            "logGroupName" : "my_log_group",
            "logPath" : "C:\\LogFolder\\*",
            "logType" : "APPLICATION"
          }
        ],
        "processes" : [
          {
            "processName" : "my_process",
            "alarmMetrics" : [
              {
                  "alarmMetricName" : "procstat cpu_usage",
                  "monitor" : true
              }, {
                  "alarmMetricName" : "procstat memory_rss",
                  "monitor" : true
              }
          ]
      }
  ],
        "windowsEvents" : [
          {
            "logGroupName" : "my_log_group_2",
            "eventName" : "Application",
            "eventLevels" : [ "ERROR", "WARNING", "CRITICAL" ]
          }
        ]
      }, {
        "subComponentType" : "AWS::EC2::Volume",
        "alarmMetrics" : [
          {
            "alarmMetricName" : "VolumeQueueLength"
          }, {
            "alarmMetricName" : "BurstBalance"
          }
        ]
      }
    ],
    "alarms" : [
      {
        "alarmName" : "my_asg_alarm",
        "severity" : "LOW"
      }
    ]
  }
```

# Amazon EKS 클러스터
<a name="component-configuration-examples-eks-cluster"></a>

다음 예는 Amazon EKS 클러스터를 위한 JSON 형식의 구성 요소 구성을 보여줍니다.

```
{
    "alarmMetrics":[
       {
          "alarmMetricName": "cluster_failed_node_count",
          "monitor":true
       },
       {
          "alarmMetricName": "node_cpu_reserved_capacity",
          "monitor":true
       },
       {
          "alarmMetricName": "node_cpu_utilization",
          "monitor":true
       },
       {
          "alarmMetricName": "node_filesystem_utilization",
          "monitor":true
       },
       {
          "alarmMetricName": "node_memory_reserved_capacity",
          "monitor":true
       },
       {
          "alarmMetricName": "node_memory_utilization",
          "monitor":true
       },
       {
          "alarmMetricName": "node_network_total_bytes",
          "monitor":true
       },
       {
          "alarmMetricName": "pod_cpu_reserved_capacity",
          "monitor":true
       },
       {
          "alarmMetricName": "pod_cpu_utilization",
          "monitor":true
       },
       {
          "alarmMetricName": "pod_cpu_utilization_over_pod_limit",
          "monitor":true
       },
       {
          "alarmMetricName": "pod_memory_reserved_capacity",
          "monitor":true
       },
       {
          "alarmMetricName": "pod_memory_utilization",
          "monitor":true
       },
       {
          "alarmMetricName": "pod_memory_utilization_over_pod_limit",
          "monitor":true
       },
       {
          "alarmMetricName": "pod_network_rx_bytes",
          "monitor":true
       },
       {
          "alarmMetricName": "pod_network_tx_bytes",
          "monitor":true
       }
    ],
    "logs":[
       {
          "logGroupName": "/aws/containerinsights/kubernetes/application",
          "logType":"APPLICATION",
          "monitor":true,
          "encoding":"utf-8"
       }
    ],
    "subComponents":[
       {
          "subComponentType":"AWS::EC2::Instance",
          "alarmMetrics":[
             {
                "alarmMetricName":"CPUUtilization",
                "monitor":true
             },
             {
                "alarmMetricName":"StatusCheckFailed",
                "monitor":true
             },
             {
                "alarmMetricName":"disk_used_percent",
                "monitor":true
             },
             {
                "alarmMetricName":"mem_used_percent",
                "monitor":true
             }
          ],
          "logs":[
             {
                "logGroupName":"APPLICATION-KubernetesClusterOnEC2-IAD",
                "logPath":"",
                "logType":"APPLICATION",
                "monitor":true,
                "encoding":"utf-8"
             }
          ],
          "processes" : [
            {
                "processName" : "my_process",
                "alarmMetrics" : [
                    {
                        "alarmMetricName" : "procstat cpu_usage",
                        "monitor" : true
                    }, {
                        "alarmMetricName" : "procstat memory_rss",
                        "monitor" : true
                    }
                ]
            }
        ],
          "windowsEvents":[
             {
                "logGroupName":"my_log_group_2",
                "eventName":"Application",
                "eventLevels":[
                   "ERROR",
                   "WARNING",
                   "CRITICAL"
                ],
                "monitor":true
             }
          ]
       },
       {
          "subComponentType":"AWS::AutoScaling::AutoScalingGroup",
          "alarmMetrics":[
             {
                "alarmMetricName":"CPUCreditBalance",
                "monitor":true
             },
             {
                "alarmMetricName":"EBSIOBalance%",
                "monitor":true
             }
          ]
       },
       {
          "subComponentType":"AWS::EC2::Volume",
          "alarmMetrics":[
             {
                "alarmMetricName":"VolumeReadBytes",
                "monitor":true
             },
             {
                "alarmMetricName":"VolumeWriteBytes",
                "monitor":true
             },
             {
                "alarmMetricName":"VolumeReadOps",
                "monitor":true
             },
             {
                "alarmMetricName":"VolumeWriteOps",
                "monitor":true
             },
             {
                "alarmMetricName":"VolumeQueueLength",
                "monitor":true
             },
             {
                "alarmMetricName":"BurstBalance",
                "monitor":true
             }
          ]
       }
    ]
 }
```

**참고**  
`AWS::EC2::Instance`, `AWS::EC2::Volume`, `AWS::AutoScaling::AutoScalingGroup`의 `subComponents` 섹션은 EC2 시작 유형에서 실행되는 Amazon EKS 클러스터에만 적용됩니다.
`subComponents`에 있는 `AWS::EC2::Instance`의 `windowsEvents` 섹션은 Amazon EC2 인스턴스에서 실행되는 Windows에만 적용됩니다.

# Amazon Elastic Compute Cloud(EC2) 인스턴스
<a name="component-configuration-examples-ec2"></a>

다음 예는 Amazon EC2 인스턴스를 위한 JSON 형식의 구성 요소 구성을 보여줍니다.

**중요**  
Amazon EC2 인스턴스가 `stopped` 상태가 되면 모니터링에서 제거됩니다. `running` 상태로 돌아갈 때 CloudWatch 애플리케이션 인사이트 콘솔의 **애플리케이션 세부 정보** 페이지의 **모니터링되지 않는 구성 요소** 목록에 추가됩니다. 애플리케이션에 대해 새 리소스의 자동 모니터링이 활성화된 경우 인스턴스가 다음 **모니터링되는 구성 요소** 목록에 추가됩니다 그러나 로그와 지표는 작업 로드에 대한 기본값으로 설정됩니다. 이전 로그 및 지표 구성은 저장되지 않습니다.

```
{
    "alarmMetrics" : [
      {
        "alarmMetricName" : "CPUUtilization",
        "monitor" : true
      }, {
        "alarmMetricName" : "StatusCheckFailed"
      }
    ],
    "logs" : [
      {
        "logGroupName" : "my_log_group",
        "logPath" : "C:\\LogFolder\\*",
        "logType" : "APPLICATION",
        "monitor" : true
      },
      {
        "logGroupName" : "my_log_group_2",
        "logPath" : "C:\\LogFolder2\\*",
        "logType" : "IIS",
        "encoding" : "utf-8"
      }
    ],
    "processes" : [
        {
            "processName" : "my_process",
            "alarmMetrics" : [
                {
                    "alarmMetricName" : "procstat cpu_usage",
                    "monitor" : true
                }, {
                    "alarmMetricName" : "procstat memory_rss",
                    "monitor" : true
                }
            ]
        }
    ],
    "windowsEvents" : [
      {
        "logGroupName" : "my_log_group_3",
        "eventName" : "Application",
        "eventLevels" : [ "ERROR", "WARNING", "CRITICAL" ],
        "monitor" : true
      }, {
        "logGroupName" : "my_log_group_4",
        "eventName" : "System",
        "eventLevels" : [ "ERROR", "WARNING", "CRITICAL" ],
        "monitor" : true
    }],
     "alarms" : [
      {
        "alarmName" : "my_instance_alarm_1",
        "severity" : "HIGH"
      },
      {
        "alarmName" : "my_instance_alarm_2",
        "severity" : "LOW"
      }
    ],
     "subComponents" : [
     {
       "subComponentType" : "AWS::EC2::Volume",
       "alarmMetrics" : [
       {
         "alarmMetricName" : "VolumeQueueLength",
         "monitor" : "true"
       },
       {
         "alarmMetricName" : "VolumeThroughputPercentage",
         "monitor" : "true"
       },
       {
         "alarmMetricName" : "BurstBalance",
         "monitor" : "true"
       }]
    }]
  }
```

# Amazon Elastic Container Service(Amazon ECS)
<a name="component-configuration-examples-ecs"></a>

다음 예는 Amazon Elastic Container Service(Amazon ECS)를 위한 JSON 형식의 구성 요소 구성을 보여줍니다.

```
{
    "alarmMetrics":[
       {
          "alarmMetricName":"CpuUtilized",
          "monitor":true
       },
       {
          "alarmMetricName":"MemoryUtilized",
          "monitor":true
       },
       {
          "alarmMetricName":"NetworkRxBytes",
          "monitor":true
       },
       {
          "alarmMetricName":"NetworkTxBytes",
          "monitor":true
       },
       {
          "alarmMetricName":"RunningTaskCount",
          "monitor":true
       },
       {
          "alarmMetricName":"PendingTaskCount",
          "monitor":true
       },
       {
          "alarmMetricName":"StorageReadBytes",
          "monitor":true
       },
       {
          "alarmMetricName":"StorageWriteBytes",
          "monitor":true
       }
    ],
    "logs":[
       {
          "logGroupName":"/ecs/my-task-definition",
          "logType":"APPLICATION",
          "monitor":true
       }
    ],
    "subComponents":[
       {
          "subComponentType":"AWS::ElasticLoadBalancing::LoadBalancer",
          "alarmMetrics":[
             {
                "alarmMetricName":"HTTPCode_Backend_4XX",
                "monitor":true
             },
             {
                "alarmMetricName":"HTTPCode_Backend_5XX",
                "monitor":true
             },
             {
                "alarmMetricName":"Latency",
                "monitor":true
             },
             {
                "alarmMetricName":"SurgeQueueLength",
                "monitor":true
             },
             {
                "alarmMetricName":"UnHealthyHostCount",
                "monitor":true
             }
          ]
       },
       {
          "subComponentType":"AWS::ElasticLoadBalancingV2::LoadBalancer",
          "alarmMetrics":[
             {
                "alarmMetricName":"HTTPCode_Target_4XX_Count",
                "monitor":true
             },
             {
                "alarmMetricName":"HTTPCode_Target_5XX_Count",
                "monitor":true
             },
             {
                "alarmMetricName":"TargetResponseTime",
                "monitor":true
             },
             {
                "alarmMetricName":"UnHealthyHostCount",
                "monitor":true
             }
          ]
       },
       {
          "subComponentType":"AWS::EC2::Instance",
          "alarmMetrics":[
             {
                "alarmMetricName":"CPUUtilization",
                "monitor":true
             },
             {
                "alarmMetricName":"StatusCheckFailed",
                "monitor":true
             },
             {
                "alarmMetricName":"disk_used_percent",
                "monitor":true
             },
             {
                "alarmMetricName":"mem_used_percent",
                "monitor":true
             }
          ],
          "logs":[
             {
                "logGroupName":"my_log_group",
                "logPath":"/mylog/path",
                "logType":"APPLICATION",
                "monitor":true
             }
          ],
          "processes" : [
             {
                "processName" : "my_process",
                "alarmMetrics" : [
                    {
                        "alarmMetricName" : "procstat cpu_usage",
                        "monitor" : true
                    }, {
                        "alarmMetricName" : "procstat memory_rss",
                        "monitor" : true
                    }
                 ]
             }
          ],
          "windowsEvents":[
             {
                "logGroupName":"my_log_group_2",
                "eventName":"Application",
                "eventLevels":[
                   "ERROR",
                   "WARNING",
                   "CRITICAL"
                ],
                "monitor":true
             }
          ]
       },
       {
          "subComponentType":"AWS::EC2::Volume",
          "alarmMetrics":[
             {
                "alarmMetricName":"VolumeQueueLength",
                "monitor":"true"
             },
             {
                "alarmMetricName":"VolumeThroughputPercentage",
                "monitor":"true"
             },
             {
                "alarmMetricName":"BurstBalance",
                "monitor":"true"
             }
          ]
       }
    ]
 }
```

**참고**  
`AWS::EC2::Instance` 및 `AWS::EC2::Volume`의 `subComponents` 섹션은 ECS 서비스 또는 ECS 태스크가 EC2 시작 유형에서 실행되는 Amazon ECS 클러스터에만 적용됩니다.
`subComponents`에 있는 `AWS::EC2::Instance`의 `windowsEvents` 섹션은 Amazon EC2 인스턴스에서 실행되는 Windows에만 적용됩니다.

# Amazon ECS 서비스
<a name="component-configuration-examples-ecs-service"></a>

다음 예는 Amazon ECS 서비스를 위한 JSON 형식의 구성 요소 구성을 보여줍니다.

```
{
    "alarmMetrics":[
       {
          "alarmMetricName":"CPUUtilization",
          "monitor":true
       },
       {
          "alarmMetricName":"MemoryUtilization",
          "monitor":true
       },
       {
          "alarmMetricName":"CpuUtilized",
          "monitor":true
       },
       {
          "alarmMetricName":"MemoryUtilized",
          "monitor":true
       },
       {
          "alarmMetricName":"NetworkRxBytes",
          "monitor":true
       },
       {
          "alarmMetricName":"NetworkTxBytes",
          "monitor":true
       },
       {
          "alarmMetricName":"RunningTaskCount",
          "monitor":true
       },
       {
          "alarmMetricName":"PendingTaskCount",
          "monitor":true
       },
       {
          "alarmMetricName":"StorageReadBytes",
          "monitor":true
       },
       {
          "alarmMetricName":"StorageWriteBytes",
          "monitor":true
       }
    ],
    "logs":[
       {
          "logGroupName":"/ecs/my-task-definition",
          "logType":"APPLICATION",
          "monitor":true
       }
    ],
    "subComponents":[
       {
          "subComponentType":"AWS::ElasticLoadBalancing::LoadBalancer",
          "alarmMetrics":[
             {
                "alarmMetricName":"HTTPCode_Backend_4XX",
                "monitor":true
             },
             {
                "alarmMetricName":"HTTPCode_Backend_5XX",
                "monitor":true
             },
             {
                "alarmMetricName":"Latency",
                "monitor":true
             },
             {
                "alarmMetricName":"SurgeQueueLength",
                "monitor":true
             },
             {
                "alarmMetricName":"UnHealthyHostCount",
                "monitor":true
             }
          ]
       },
       {
          "subComponentType":"AWS::ElasticLoadBalancingV2::LoadBalancer",
          "alarmMetrics":[
             {
                "alarmMetricName":"HTTPCode_Target_4XX_Count",
                "monitor":true
             },
             {
                "alarmMetricName":"HTTPCode_Target_5XX_Count",
                "monitor":true
             },
             {
                "alarmMetricName":"TargetResponseTime",
                "monitor":true
             },
             {
                "alarmMetricName":"UnHealthyHostCount",
                "monitor":true
             }
          ]
       },
       {
          "subComponentType":"AWS::EC2::Instance",
          "alarmMetrics":[
             {
                "alarmMetricName":"CPUUtilization",
                "monitor":true
             },
             {
                "alarmMetricName":"StatusCheckFailed",
                "monitor":true
             },
             {
                "alarmMetricName":"disk_used_percent",
                "monitor":true
             },
             {
                "alarmMetricName":"mem_used_percent",
                "monitor":true
             }
          ],
          "logs":[
             {
                "logGroupName":"my_log_group",
                "logPath":"/mylog/path",
                "logType":"APPLICATION",
                "monitor":true
             }
          ],
          "processes" : [
             {
                "processName" : "my_process",
                "alarmMetrics" : [
                {
                    "alarmMetricName" : "procstat cpu_usage",
                    "monitor" : true
                }, {
                    "alarmMetricName" : "procstat memory_rss",
                    "monitor" : true
                }
            ]
        }
    ],
          "windowsEvents":[
             {
                "logGroupName":"my_log_group_2",
                "eventName":"Application",
                "eventLevels":[
                   "ERROR",
                   "WARNING",
                   "CRITICAL"
                ],
                "monitor":true
             }
          ]
       },
       {
          "subComponentType":"AWS::EC2::Volume",
          "alarmMetrics":[
             {
                "alarmMetricName":"VolumeQueueLength",
                "monitor":"true"
             },
             {
                "alarmMetricName":"VolumeThroughputPercentage",
                "monitor":"true"
             },
             {
                "alarmMetricName":"BurstBalance",
                "monitor":"true"
             }
          ]
       }
    ]
 }
```

**참고**  
`AWS::EC2::Instance` 및 `AWS::EC2::Volume`의 `subComponents` 섹션은 EC2 시작 유형에서 실행되는 Amazon ECS에만 적용됩니다.
`subComponents`에 있는 `AWS::EC2::Instance`의 `windowsEvents` 섹션은 Amazon EC2 인스턴스에서 실행되는 Windows에만 적용됩니다.

# Amazon ECS 작업
<a name="component-configuration-examples-ecs-task"></a>

다음 예는 Amazon ECS 태스크를 위한 JSON 형식의 구성 요소 구성을 보여줍니다.

```
{
    "logs":[
       {
          "logGroupName":"/ecs/my-task-definition",
          "logType":"APPLICATION",
          "monitor":true
       }
    ],
    "processes" : [
        {
            "processName" : "my_process",
            "alarmMetrics" : [
                {
                    "alarmMetricName" : "procstat cpu_usage",
                    "monitor" : true
                }, {
                    "alarmMetricName" : "procstat memory_rss",
                    "monitor" : true
                }
            ]
        }
    ]
 }
```

# Amazon Elastic File System(Amazon EFS)
<a name="component-configuration-examples-efs"></a>

다음 예는 Amazon FSx를 위한 JSON 형식의 구성 요소 구성을 보여줍니다.

```
{
   "alarmMetrics": [
     {
       "alarmMetricName": "BurstCreditBalance",
       "monitor": true
     },
     {
       "alarmMetricName": "PercentIOLimit",
       "monitor": true
     },
     {
       "alarmMetricName": "PermittedThroughput",
       "monitor": true
     },
     {
       "alarmMetricName": "MeteredIOBytes",
       "monitor": true
     },
     {
       "alarmMetricName": "TotalIOBytes",
       "monitor": true
     },
     {
       "alarmMetricName": "DataWriteIOBytes",
       "monitor": true
     },
     {
       "alarmMetricName": "DataReadIOBytes",
       "monitor": true
     },
     {
       "alarmMetricName": "MetadataIOBytes",
       "monitor": true
     },
     {
       "alarmMetricName": "ClientConnections",
       "monitor": true
     },
     {
       "alarmMetricName": "TimeSinceLastSync",
       "monitor": true
     },
     {
       "alarmMetricName": "Throughput",
       "monitor": true
     },
     {
       "alarmMetricName": "PercentageOfPermittedThroughputUtilization",
       "monitor": true
     },
     {
       "alarmMetricName": "ThroughputIOPS",
       "monitor": true
     },
     {
       "alarmMetricName": "PercentThroughputDataReadIOBytes",
       "monitor": true
     },
     {
       "alarmMetricName": "PercentThroughputDataWriteIOBytes",
       "monitor": true
     },
     {
       "alarmMetricName": "PercentageOfIOPSDataReadIOBytes",
       "monitor": true
     },
     {
       "alarmMetricName": "PercentageOfIOPSDataWriteIOBytes",
       "monitor": true
     },
     {
       "alarmMetricName": "AverageDataReadIOBytesSize",
       "monitor": true
     },
     {
       "alarmMetricName": "AverageDataWriteIOBytesSize",
       "monitor": true
     }
   ],
   "logs": [
    {
    "logGroupName": "/aws/efs/utils",
    "logType": "EFS_MOUNT_STATUS",
    "monitor": true,
    }
   ]
 }
```

# Amazon FSx
<a name="component-configuration-examples-fsx"></a>

다음 예는 Amazon FSx를 위한 JSON 형식의 구성 요소 구성을 보여줍니다.

```
{
  "alarmMetrics": [
    {
      "alarmMetricName": "DataReadBytes",
      "monitor": true
    },
    {
      "alarmMetricName": "DataWriteBytes",
      "monitor": true
    },
    {
      "alarmMetricName": "DataReadOperations",
      "monitor": true
    },
    {
      "alarmMetricName": "DataWriteOperations",
      "monitor": true
    },
    {
      "alarmMetricName": "MetadataOperations",
      "monitor": true
    },
    {
      "alarmMetricName": "FreeStorageCapacity",
      "monitor": true
    }
  ]
}
```

# Amazon Relational Database Service(RDS) Aurora MySQL
<a name="component-configuration-examples-rds-aurora"></a>

다음 예는 Amazon RDS Aurora MySQL을 위한 JSON 형식의 구성 요소 구성을 보여줍니다.

```
{
  "alarmMetrics": [
    {
      "alarmMetricName": "CPUUtilization",
      "monitor": true
    },
    {
      "alarmMetricName": "CommitLatency",
      "monitor": true
    }
  ],
  "logs": [
    {
      "logType": "MYSQL",
      "monitor": true,
    },
    {
      "logType": "MYSQL_SLOW_QUERY",
      "monitor": false
    }
  ]
}
```

# Amazon Relational Database Service(RDS) 인스턴스
<a name="component-configuration-examples-rds"></a>

다음 예는 Amazon RDS 인스턴스를 위한 JSON 형식의 구성 요소 구성을 보여줍니다.

```
{
  "alarmMetrics" : [
    {
      "alarmMetricName" : "BurstBalance",
      "monitor" : true
    }, {
      "alarmMetricName" : "WriteThroughput",
      "monitor" : false
    }
  ],

  "alarms" : [
    {
      "alarmName" : "my_rds_instance_alarm",
      "severity" : "MEDIUM"
    }
  ]
}
```

# Amazon Route 53 상태 확인
<a name="component-configuration-examples-health-check"></a>

다음 예에서는 Amazon Route 53 상태 확인을 위한 JSON 형식의 구성 요소 구성을 보여줍니다.

```
{
  "alarmMetrics": [
    {
      "alarmMetricName": "ChildHealthCheckHealthyCount",
      "monitor": true
    },
    {
      "alarmMetricName": "ConnectionTime",
      "monitor": true
    },
    {
      "alarmMetricName": "HealthCheckPercentageHealthy",
      "monitor": true
    },
    {
      "alarmMetricName": "HealthCheckStatus",
      "monitor": true
    },
    {
      "alarmMetricName": "SSLHandshakeTime",
      "monitor": true
    },
    {
      "alarmMetricName": "TimeToFirstByte",
      "monitor": true
    }
  ]  
}
```

# Amazon Route 53 호스팅 영역
<a name="component-configuration-examples-hosted-zone"></a>

다음 예에서는 Amazon Route 53 호스팅 영역에 대한 JSON 형식의 구성 요소 구성을 보여줍니다.

```
{
  "alarmMetrics": [
    {
      "alarmMetricName": "DNSQueries",
      "monitor": true
    },
    {
      "alarmMetricName": "DNSSECInternalFailure",
      "monitor": true
    },
    {
      "alarmMetricName": "DNSSECKeySigningKeysNeedingAction",
      "monitor": true
    },
    {
      "alarmMetricName": "DNSSECKeySigningKeyMaxNeedingActionAge",
      "monitor": true
    },
    {
      "alarmMetricName": "DNSSECKeySigningKeyAge",
      "monitor": true
    }
  ],
  "logs": [
    {
      "logGroupName":"/hosted-zone/logs",
      "logType": "ROUTE53_DNS_PUBLIC_QUERY_LOGS",
      "monitor": true
    }
  ]
}
```

# Amazon Route 53 Resolver 엔드포인트
<a name="component-configuration-examples-resolver-endpoint"></a>

다음 예에서는 Amazon Route 53 Resolver 엔드포인트에 대한 JSON 형식의 구성 요소 구성을 보여줍니다.

```
{
  "alarmMetrics": [
    {
      "alarmMetricName": "EndpointHealthyENICount",
      "monitor": true
    },
    {
      "alarmMetricName": "EndpointUnHealthyENICount",
      "monitor": true
    },
    {
      "alarmMetricName": "InboundQueryVolume",
      "monitor": true
    },
    {
      "alarmMetricName": "OutboundQueryVolume",
      "monitor": true
    },
    {
      "alarmMetricName": "OutboundQueryAggregateVolume",
      "monitor": true
    }
  ]  
}
```

# Amazon Route 53 Resolver 쿼리 로깅 구성
<a name="component-configuration-examples-resolver-query-logging"></a>

다음 예에서는 Amazon Route 53 Resolver 쿼리 로깅 구성을 위한 JSON 형식의 구성 요소 구성을 보여줍니다.

```
{
  "logs": [
    {
      "logGroupName": "/resolver-query-log-config/logs",
      "logType": "ROUTE53_RESOLVER_QUERY_LOGS",
      "monitor": true
    }
  ]  
}
```

# Amazon S3 버킷
<a name="component-configuration-examples-s3"></a>

다음 예는 Amazon S3 버킷을 위한 JSON 형식의 구성 요소 구성을 보여줍니다.

```
{
    "alarmMetrics" : [
        {
            "alarmMetricName" : "ReplicationLatency",
            "monitor" : true
        }, {
            "alarmMetricName" : "5xxErrors",
            "monitor" : true
        }, {
            "alarmMetricName" : "BytesDownloaded"
            "monitor" : true
        }
    ]
}
```

# Amazon Simple Queue Service(SQS)
<a name="component-configuration-examples-sqs"></a>

다음 예는 Amazon Simple Queue Service를 위한 JSON 형식의 구성 요소 구성을 보여줍니다.

```
{
  "alarmMetrics" : [
    {
      "alarmMetricName" : "ApproximateAgeOfOldestMessage"
    }, {
      "alarmMetricName" : "NumberOfEmptyReceives"
    }
  ],
  "alarms" : [
    {
      "alarmName" : "my_sqs_alarm",
      "severity" : "MEDIUM"
    }
  ]
}
```

# Amazon SNS 주제
<a name="component-configuration-examples-sns"></a>

다음 예는 Amazon SNS 주제를 위한 JSON 형식의 구성 요소 구성을 보여줍니다.

```
{
  "alarmMetrics": [
    {
      "alarmMetricName": "NumberOfNotificationsFailed",
      "monitor": true
    },
    {
      "alarmMetricName": "NumberOfNotificationsFilteredOut-InvalidAttributes",
      "monitor": true
    },
    {
      "alarmMetricName": "NumberOfNotificationsFilteredOut-NoMessageAttributes",
      "monitor": true
    },
    {
      "alarmMetricName": "NumberOfNotificationsFailedToRedriveToDlq",
      "monitor": true
    }
  ]
}
```

# Amazon Virtual Private Cloud(Amazon VPC)
<a name="component-configuration-examples-vpc"></a>

다음 예에서는 Amazon VPC에 대한 JSON 형식의 구성 요소 구성을 보여줍니다.

```
{
  "alarmMetrics": [
    {
      "alarmMetricName": "NetworkAddressUsage",
      "monitor": true
    },
    {
      "alarmMetricName": "NetworkAddressUsagePeered",
      "monitor": true
    },
    {
      "alarmMetricName": "VPCFirewallQueryVolume",
      "monitor": true
    }
  ]
}
```

# Amazon VPC Network Address Translation(NAT) 게이트웨이
<a name="component-configuration-examples-nat-gateway"></a>

다음 예에서는 NAT 게이트웨이에 대한 JSON 형식의 구성 요소 구성을 보여줍니다.

```
{
  "alarmMetrics": [
    {
      "alarmMetricName": "ErrorPortAllocation",
      "monitor": true
    },
    {
      "alarmMetricName": "IdleTimeoutCount",
      "monitor": true
    }
  ]
}
```

# API Gateway REST API 스테이지
<a name="component-configuration-examples-api-gateway"></a>

다음 예는 API Gateway REST API 스테이지를 위한 JSON 형식의 구성 요소 구성을 보여줍니다.

```
{ 
     "alarmMetrics" : [ 
         {
             "alarmMetricName" : "4XXError",   
             "monitor" : true
         }, 
         {
             "alarmMetricName" : "5XXError",   
             "monitor" : true
         } 
     ],
    "logs" : [
        { 
            "logType" : "API_GATEWAY_EXECUTION",   
            "monitor" : true  
        },
        { 
            "logType" : "API_GATEWAY_ACCESS",   
            "monitor" : true  
        }
    ]
}
```

# Application Elastic Load Balancing
<a name="component-configuration-examples-application-elb"></a>

다음 예는 Application Elastic Load Balancing을 위한 JSON 형식의 구성 요소 구성을 보여줍니다.

```
{
  "alarmMetrics": [
    {
      "alarmMetricName": "ActiveConnectionCount",
    }, {
      "alarmMetricName": "TargetResponseTime"
    }
  ],  
  "subComponents": [
    {
      "subComponentType": "AWS::EC2::Instance",
      "alarmMetrics": [
        {
          "alarmMetricName": "CPUUtilization",
        }, {
          "alarmMetricName": "StatusCheckFailed"
        }
      ],
      "logs": [
        {
          "logGroupName": "my_log_group",
          "logPath": "C:\\LogFolder\\*",
          "logType": "APPLICATION",
        }
      ],
      "windowsEvents": [
        {
          "logGroupName": "my_log_group_2",
          "eventName": "Application",
          "eventLevels": [ "ERROR", "WARNING", "CRITICAL" ]
        }
      ]
    }, {
      "subComponentType": "AWS::EC2::Volume",
      "alarmMetrics": [
        {
          "alarmMetricName": "VolumeQueueLength",
        }, {
          "alarmMetricName": "BurstBalance"
        }
      ]
    }
  ],

  "alarms": [
    {
      "alarmName": "my_alb_alarm",
      "severity": "LOW"
    }
  ]
}
```

# AWS Lambda 함수
<a name="component-configuration-examples-lambda"></a>

다음 예는 AWS Lambda 함수를 위한 JSON 형식의 구성 요소 구성을 보여줍니다.

```
{
  "alarmMetrics": [
    {
      "alarmMetricName": "Errors",
      "monitor": true
    },
    {
      "alarmMetricName": "Throttles",
      "monitor": true
    },
    {
      "alarmMetricName": "IteratorAge",
      "monitor": true
    },
    {
      "alarmMetricName": "Duration",
      "monitor": true
    }
  ],
  "logs": [
    {
      "logType": "DEFAULT",
      "monitor": true
    }
  ]
}
```

# AWS Network Firewall 규칙 그룹
<a name="component-configuration-examples-firewall-rule-group"></a>

다음 예에서는 AWS Network Firewall 규칙 그룹에 대한 JSON 형식의 구성 요소 구성을 보여줍니다.

```
{
  "alarmMetrics": [
    {
      "alarmMetricName": "FirewallRuleGroupQueryVolume",
      "monitor": true
    }
  ]
}
```

# AWS Network Firewall 규칙 그룹 연결
<a name="component-configuration-examples-firewall-rule-group-assoc"></a>

다음 예에서는 AWS Network Firewall 규칙 그룹 연결에 대한 JSON 형식의 구성 요소 구성을 보여줍니다.

```
{
  "alarmMetrics": [
    {
      "alarmMetricName": "FirewallRuleGroupQueryVolume",
      "monitor": true
    }
  ]
}
```

# AWS Step Functions
<a name="component-configuration-examples-step-functions"></a>

다음 예는 AWS Step Functions를 위한 JSON 형식의 구성 요소 구성을 보여줍니다.

```
{
  "alarmMetrics": [
    {
      "alarmMetricName": "ExecutionsFailed",
      "monitor": true
    },
    {
      "alarmMetricName": "LambdaFunctionsFailed",
      "monitor": true
    },
    {
      "alarmMetricName": "ProvisionedRefillRate",
      "monitor": true
    }
  ],
  "logs": [
    {
     "logGroupName": "/aws/states/HelloWorld-Logs",
      "logType": "STEP_FUNCTION",
      "monitor": true,
    }
  ]
}
```

# 고객이 그룹화한 Amazon EC2 인스턴스
<a name="component-configuration-examples-grouped-ec2"></a>

다음 예는 고객이 그룹화한 Amazon EC2 인스턴스를 위한 JSON 형식의 구성 요소 구성을 보여줍니다.

```
{
    "subComponents": [
      {
        "subComponentType": "AWS::EC2::Instance",
        "alarmMetrics": [
          {
            "alarmMetricName": "CPUUtilization",
          }, 
          {
            "alarmMetricName": "StatusCheckFailed"
          }
        ],
        "logs": [
          {
            "logGroupName": "my_log_group",
            "logPath": "C:\\LogFolder\\*",
            "logType": "APPLICATION",
          }
        ],
        "processes": [
            {
                "processName": "my_process",
                "alarmMetrics": [
                    {
                        "alarmMetricName": "procstat cpu_usage",
                        "monitor": true
                    }, {
                        "alarmMetricName": "procstat memory_rss",
                        "monitor": true
                    }
                ]
            }
        ],
        "windowsEvents": [
          {
            "logGroupName": "my_log_group_2",
            "eventName": "Application",
            "eventLevels": [ "ERROR", "WARNING", "CRITICAL" ]
          }
        ]
      }, {
        "subComponentType": "AWS::EC2::Volume",
        "alarmMetrics": [
          {
            "alarmMetricName": "VolumeQueueLength",
          }, {
            "alarmMetricName": "BurstBalance"
          }
        ]
      }
    ],
    "alarms": [
      {
        "alarmName": "my_alarm",
        "severity": "MEDIUM"
      }
    ]
  }
```

# Elastic Load Balancing
<a name="component-configuration-examples-elb"></a>

다음 예는 Elastic Load Balancing을 위한 JSON 형식의 구성 요소 구성을 보여줍니다.

```
{
    "alarmMetrics": [
      {
        "alarmMetricName": "EstimatedALBActiveConnectionCount"
      }, {
        "alarmMetricName": "HTTPCode_Backend_5XX"
      }
    ],
    "subComponents": [
      {
        "subComponentType": "AWS::EC2::Instance",
        "alarmMetrics": [
          {
            "alarmMetricName": "CPUUtilization"
          }, {
            "alarmMetricName": "StatusCheckFailed"
          }
        ],
        "logs": [
          {
            "logGroupName": "my_log_group",
            "logPath": "C:\\LogFolder\\*",
            "logType": "APPLICATION"
          }
        ],
        "processes": [
          {
            "processName": "my_process",
            "alarmMetrics": [
                {
                  "alarmMetricName": "procstat cpu_usage",
                  "monitor": true
                }, {
                  "alarmMetricName": "procstat memory_rss",
                  "monitor": true
                }
              ]
          }
        ],
        "windowsEvents": [
          {
            "logGroupName": "my_log_group_2",
            "eventName": "Application",
            "eventLevels": [ "ERROR", "WARNING", "CRITICAL" ],
            "monitor": true
          }
        ]
      }, {
        "subComponentType": "AWS::EC2::Volume",
        "alarmMetrics": [
          {
            "alarmMetricName": "VolumeQueueLength"
          }, {
            "alarmMetricName": "BurstBalance"
          }
        ]
      }
    ],
  
    "alarms": [
      {
        "alarmName": "my_elb_alarm",
        "severity": "HIGH"
      }
    ]
  }
```

# Java
<a name="component-configuration-examples-java"></a>

다음 예는 Java를 위한 JSON 형식의 구성 요소 구성을 보여줍니다.

```
{
  "alarmMetrics": [ {
    "alarmMetricName": "java_lang_threading_threadcount",
    "monitor": true
  },
  {
    "alarmMetricName": "java_lang_memory_heapmemoryusage_used",
    "monitor": true
  },
  {
    "alarmMetricName": "java_lang_memory_heapmemoryusage_committed",
    "monitor": true
  }],
  "logs": [ ],
  "JMXPrometheusExporter": {
      "hostPort": "8686",
      "prometheusPort": "9404"
  }
}
```

**참고**  
Application Insights는 Prometheus JMX Exporter에 대한 인증 구성을 지원하지 않습니다. 인증 설정 방법에 대한 자세한 내용은 [Prometheus JMX Exporter 구성 예](https://github.com/prometheus/jmx_exporter#configuration)를 참조하세요.

# Amazon EC2의 Kubernetes
<a name="component-configuration-examples-kubernetes-ec2"></a>

다음 예는 Amazon EC2의 Kubernetes를 위한 JSON 형식의 구성 요소 구성을 보여줍니다.

```
{
    "alarmMetrics":[
       {
          "alarmMetricName":"cluster_failed_node_count",
          "monitor":true
       },
       {
          "alarmMetricName":"node_cpu_reserved_capacity",
          "monitor":true
       },
       {
          "alarmMetricName":"node_cpu_utilization",
          "monitor":true
       },
       {
          "alarmMetricName":"node_filesystem_utilization",
          "monitor":true
       },
       {
          "alarmMetricName":"node_memory_reserved_capacity",
          "monitor":true
       },
       {
          "alarmMetricName":"node_memory_utilization",
          "monitor":true
       },
       {
          "alarmMetricName":"node_network_total_bytes",
          "monitor":true
       },
       {
          "alarmMetricName":"pod_cpu_reserved_capacity",
          "monitor":true
       },
       {
          "alarmMetricName":"pod_cpu_utilization",
          "monitor":true
       },
       {
          "alarmMetricName":"pod_cpu_utilization_over_pod_limit",
          "monitor":true
       },
       {
          "alarmMetricName":"pod_memory_reserved_capacity",
          "monitor":true
       },
       {
          "alarmMetricName":"pod_memory_utilization",
          "monitor":true
       },
       {
          "alarmMetricName":"pod_memory_utilization_over_pod_limit",
          "monitor":true
       },
       {
          "alarmMetricName":"pod_network_rx_bytes",
          "monitor":true
       },
       {
          "alarmMetricName":"pod_network_tx_bytes",
          "monitor":true
       }
    ],
    "logs":[
       {
          "logGroupName":"/aws/containerinsights/kubernetes/application",
          "logType":"APPLICATION",
          "monitor":true,
          "encoding":"utf-8"
       }
    ],
    "subComponents":[
       {
          "subComponentType":"AWS::EC2::Instance",
          "alarmMetrics":[
             {
                "alarmMetricName":"CPUUtilization",
                "monitor":true
             },
             {
                "alarmMetricName":"StatusCheckFailed",
                "monitor":true
             },
             {
                "alarmMetricName":"disk_used_percent",
                "monitor":true
             },
             {
                "alarmMetricName":"mem_used_percent",
                "monitor":true
             }
          ],
          "logs":[
             {
                "logGroupName":"APPLICATION-KubernetesClusterOnEC2-IAD",
                "logPath":"",
                "logType":"APPLICATION",
                "monitor":true,
                "encoding":"utf-8"
             }
          ],
          "processes" : [
            {
                "processName" : "my_process",
                "alarmMetrics" : [
                    {
                        "alarmMetricName" : "procstat cpu_usage",
                        "monitor" : true
                    }, {
                        "alarmMetricName" : "procstat memory_rss",
                        "monitor" : true
                    }
                ]
            }
        ]
       },
       {
          "subComponentType":"AWS::EC2::Volume",
          "alarmMetrics":[
             {
                "alarmMetricName":"VolumeReadBytes",
                "monitor":true
             },
             {
                "alarmMetricName":"VolumeWriteBytes",
                "monitor":true
             },
             {
                "alarmMetricName":"VolumeReadOps",
                "monitor":true
             },
             {
                "alarmMetricName":"VolumeWriteOps",
                "monitor":true
             },
             {
                "alarmMetricName":"VolumeQueueLength",
                "monitor":true
             },
             {
                "alarmMetricName":"BurstBalance",
                "monitor":true
             }
          ]
       }
    ]
 }
```

# RDS MariaDB 및 RDS MySQL
<a name="component-configuration-examples-mysql"></a>

다음 예에서는 RDS MariaDB 및 RDS MySQL을 위한 JSON 형식의 구성 요소 구성을 보여줍니다.

```
{
  "alarmMetrics": [
    {
      "alarmMetricName": "CPUUtilization",
      "monitor": true
    }
  ],
  "logs": [
    {
      "logType": "MYSQL",
      "monitor": true,
    },
    {
      "logType": "MYSQL_SLOW_QUERY",
      "monitor": false
    }
  ]
}
```

# RDS Oracle
<a name="component-configuration-examples-oracle"></a>

다음 예는 RDS Oracle을 위한 JSON 형식의 구성 요소 구성을 보여줍니다.

```
{
  "alarmMetrics": [
    {
      "alarmMetricName": "CPUUtilization",
      "monitor": true
    }
  ],
  "logs": [
    {
      "logType": "ORACLE_ALERT",
      "monitor": true,
    },
    {
      "logType": "ORACLE_LISTENER",
      "monitor": false
    }
  ]
}
```

# RDS PostgreSQL
<a name="component-configuration-examples-rds-postgre-sql"></a>

다음 예는 RDS PostgreSQL을 위한 JSON 형식의 구성 요소 구성을 보여줍니다.

```
{
  "alarmMetrics": [
    {
      "alarmMetricName": "CPUUtilization",
      "monitor": true
    }
  ],
  "logs": [
    {
      "logType": "POSTGRESQL",
      "monitor": true
    }
  ]
}
```

# Amazon EC2에 대한 SAP ASE
<a name="component-configuration-examples-sap-ase"></a>

다음 예는 Amazon EC2에 대한 SAP ASE를 위한 JSON 형식의 구성 요소 구성을 보여줍니다.

```
{
  "subComponents": [
    {
      "subComponentType": "AWS::EC2::Instance",
      "alarmMetrics": [
        {
          "alarmMetricName": "asedb_database_availability",
          "monitor": true
        },
        {
          "alarmMetricName": "asedb_trunc_log_on_chkpt_enabled",
          "monitor": true
        },
        {
          "alarmMetricName": "asedb_last_db_backup_age_in_days",
          "monitor": true
        },
        {
          "alarmMetricName": "asedb_last_transaction_log_backup_age_in_hours",
          "monitor": true
        },
        {
          "alarmMetricName": "asedb_suspected_database",
          "monitor": true
        },
        {
          "alarmMetricName": "asedb_db_space_usage_percent",
          "monitor": true
        },
        {
          "alarmMetricName": "asedb_db_log_space_usage_percent",
          "monitor": true
        },
        {
          "alarmMetricName": "asedb_locked_login",
          "monitor": true
        },
        {
          "alarmMetricName": "asedb_data_cache_hit_ratio",
          "monitor": true
        }
      ],
      "logs": [
        {
          "logGroupName": "SAP_ASE_SERVER_LOGS-my-resource-group",
          "logPath": "/sybase/SY2/ASE-*/install/SY2.log",
          "logType": "SAP_ASE_SERVER_LOGS",
          "monitor": true,
          "encoding": "utf-8"
        },
        {
          "logGroupName": "SAP_ASE_BACKUP_SERVER_LOGS-my-resource-group",
          "logPath": "/sybase/SY2/ASE-*/install/SY2_BS.log",
          "logType": "SAP_ASE_BACKUP_SERVER_LOGS",
          "monitor": true,
          "encoding": "utf-8"
        }
  ],
  "sapAsePrometheusExporter": {
    "sapAseSid": "ASE",
    "sapAsePort": "4901",
    "sapAseSecretName": "ASE_DB_CREDS",
    "prometheusPort": "9399",
    "agreeToEnableASEMonitoring": true
}
```

# Amazon EC2에 대한 SAP ASE 고가용성
<a name="component-configuration-examples-sap-ase-ha"></a>

다음 예는 Amazon EC2에 대한 SAP ASE 고가용성을 위한 JSON 형식의 구성 요소 구성을 보여줍니다.

```
{
  "subComponents": [
    {
      "subComponentType": "AWS::EC2::Instance",
      "alarmMetrics": [
        {
          "alarmMetricName": "asedb_database_availability",
          "monitor": true
        },
        {
          "alarmMetricName": "asedb_trunc_log_on_chkpt_enabled",
          "monitor": true
        },
        {
          "alarmMetricName": "asedb_last_db_backup_age_in_days",
          "monitor": true
        },
        {
          "alarmMetricName": "asedb_last_transaction_log_backup_age_in_hours",
          "monitor": true
        },
        {
          "alarmMetricName": "asedb_suspected_database",
          "monitor": true
        },
        {
          "alarmMetricName": "asedb_db_space_usage_percent",
          "monitor": true
        },
        {
          "alarmMetricName": "asedb_ha_replication_state",
          "monitor": true
        },
        {
          "alarmMetricName": "asedb_ha_replication_mode",
          "monitor": true
        },
        {
          "alarmMetricName": "asedb_ha_replication_latency_in_minutes",
          "monitor": true
        }
      ],
      "logs": [
        {
          "logGroupName": "SAP_ASE_SERVER_LOGS-my-resource-group",
          "logPath": "/sybase/SY2/ASE-*/install/SY2.log",
          "logType": "SAP_ASE_SERVER_LOGS",
          "monitor": true,
          "encoding": "utf-8"
        },
        {
          "logGroupName": "SAP_ASE_BACKUP_SERVER_LOGS-my-resource-group",
          "logPath": "/sybase/SY2/ASE-*/install/SY2_BS.log",
          "logType": "SAP_ASE_BACKUP_SERVER_LOGS",
          "monitor": true,
          "encoding": "utf-8"
        },
        {
          "logGroupName": "SAP_ASE_REP_SERVER_LOGS-my-resource-group",
          "logPath": "/sybase/SY2/DM/repservername/repservername.log",
          "logType": "SAP_ASE_REP_SERVER_LOGS",
          "monitor": true,
          "encoding": "utf-8"
        },
        {
          "logGroupName": "SAP_ASE_RMA_AGENT_LOGS-my-resource-group",
          "logPath": "/sybase/SY2/DM/RMA-*/instances/AgentContainer/logs/",
          "logType": "SAP_ASE_RMA_AGENT_LOGS",
          "monitor": true,
          "encoding": "utf-8"
        },
        {
          "logGroupName": "SAP_ASE_FAULT_MANAGER_LOGS-my-resource-group",
          "logPath": "/opt/sap/FaultManager/dev_sybdbfm",
          "logType": "SAP_ASE_FAULT_MANAGER_LOGS",
          "monitor": true,
          "encoding": "utf-8"
        }
  ],
  "sapAsePrometheusExporter": {
    "sapAseSid": "ASE",
    "sapAsePort": "4901",
    "sapAseSecretName": "ASE_DB_CREDS",
    "prometheusPort": "9399",
    "agreeToEnableASEMonitoring": true
}
```

# Amazon EC2에 대한 SAP HANA
<a name="component-configuration-examples-hana"></a>

다음 예는 Amazon EC2에 대한 SAP HANA를 위한 JSON 형식의 구성 요소 구성을 보여줍니다.

```
{
  "subComponents": [
    {
      "subComponentType": "AWS::EC2::Instance",
      "alarmMetrics": [
        {
          "alarmMetricName": "hanadb_server_startup_time_variations_seconds",
          "monitor": true
        },
        {
          "alarmMetricName": "hanadb_level_5_alerts_count",
          "monitor": true
        },
        {
          "alarmMetricName": "hanadb_level_4_alerts_count",
          "monitor": true
        },
        {
          "alarmMetricName": "hanadb_out_of_memory_events_count",
          "monitor": true
        },
        {
          "alarmMetricName": "hanadb_max_trigger_read_ratio_percent",
          "monitor": true
        },
        {
          "alarmMetricName": "hanadb_table_allocation_limit_used_percent",
          "monitor": true
        },
        {
          "alarmMetricName": "hanadb_cpu_usage_percent",
          "monitor": true
        },
        {
          "alarmMetricName": "hanadb_plan_cache_hit_ratio_percent",
          "monitor": true
        },
        {
          "alarmMetricName": "hanadb_last_data_backup_age_days",
          "monitor": true
        }
      ],
      "logs": [
        {
          "logGroupName": "SAP_HANA_TRACE-my-resourge-group",
          "logPath": "/usr/sap/HDB/HDB00/*/trace/*.trc",
          "logType": "SAP_HANA_TRACE",
          "monitor": true,
          "encoding": "utf-8"
        },
        {
          "logGroupName": "SAP_HANA_LOGS-my-resource-group",
          "logPath": "/usr/sap/HDB/HDB00/*/trace/*.log",
          "logType": "SAP_HANA_LOGS",
          "monitor": true,
          "encoding": "utf-8"
        }
      ]
    }
  ],
  "hanaPrometheusExporter": {
    "hanaSid": "HDB",
    "hanaPort": "30013",
    "hanaSecretName": "HANA_DB_CREDS",
    "prometheusPort": "9668"
  }
}
```

# Amazon EC2에 대한 SAP HANA 고가용성
<a name="component-configuration-examples-hana-ha"></a>

다음 예는 Amazon EC2에 대한 SAP HANA 고가용성을 위한 JSON 형식의 구성 요소 구성을 보여줍니다.

```
{
  "subComponents": [
    {
      "subComponentType": "AWS::EC2::Instance",
      "alarmMetrics": [
        {
          "alarmMetricName": "hanadb_server_startup_time_variations_seconds",
          "monitor": true
        },
        {
          "alarmMetricName": "hanadb_level_5_alerts_count",
          "monitor": true
        },
        {
          "alarmMetricName": "hanadb_level_4_alerts_count",
          "monitor": true
        },
        {
          "alarmMetricName": "hanadb_out_of_memory_events_count",
          "monitor": true
        },
        {
          "alarmMetricName": "ha_cluster_pacemaker_stonith_enabled",
          "monitor": true
        }
      ],
      "logs": [
        {
          "logGroupName": "SAP_HANA_TRACE-my-resourge-group",
          "logPath": "/usr/sap/HDB/HDB00/*/trace/*.trc",
          "logType": "SAP_HANA_TRACE",
          "monitor": true,
          "encoding": "utf-8"
        },
        {
          "logGroupName": "SAP_HANA_HIGH_AVAILABILITY-my-resource-group",
          "logPath": "/var/log/pacemaker/pacemaker.log",
          "logType": "SAP_HANA_HIGH_AVAILABILITY",
          "monitor": true,
          "encoding": "utf-8"
        }
      ]
    }
  ],
  "hanaPrometheusExporter": {
    "hanaSid": "HDB",
    "hanaPort": "30013",
    "hanaSecretName": "HANA_DB_CREDS",
    "prometheusPort": "9668"
  },
  "haClusterPrometheusExporter": {
    "prometheusPort": "9664"
  }
}
```

# Amazon EC2의 SAP NetWeaver
<a name="component-configuration-examples-netweaver"></a>

다음 예제에서는 Amazon EC2에 대한 SAP NetWeaver를 위한 JSON 형식의 구성 요소 구성을 보여줍니다.

```
{
  "subComponents": [
    {
      "subComponentType": "AWS::EC2::Instance",
      "alarmMetrics": [
        {
          "alarmMetricName": "CPUUtilization",
          "monitor": true
        },
        {
          "alarmMetricName": "StatusCheckFailed",
          "monitor": true
        },
        {
          "alarmMetricName": "disk_used_percent",
          "monitor": true
        },
        {
          "alarmMetricName": "mem_used_percent",
          "monitor": true
        },
        {
          "alarmMetricName": "sap_alerts_ResponseTime",
          "monitor": true
        },
        {
          "alarmMetricName": "sap_alerts_ResponseTimeDialog",
          "monitor": true
        },
        {
          "alarmMetricName": "sap_alerts_ResponseTimeDialogRFC",
          "monitor": true
        },
        {
          "alarmMetricName": "sap_alerts_DBRequestTime",
          "monitor": true
        },
        {
          "alarmMetricName": "sap_alerts_LongRunners",
          "monitor": true
        },
        {
          "alarmMetricName": "sap_alerts_AbortedJobs",
          "monitor": true
        },
        {
          "alarmMetricName": "sap_alerts_BasisSystem",
          "monitor": true
        },
        {
          "alarmMetricName": "sap_alerts_Database",
          "monitor": true
        },
        {
          "alarmMetricName": "sap_alerts_Security",
          "monitor": true
        },
        {
          "alarmMetricName": "sap_alerts_System",
          "monitor": true
        },
        {
          "alarmMetricName": "sap_alerts_QueueTime",
          "monitor": true
        },
        {
          "alarmMetricName": "sap_alerts_Availability",
          "monitor": true
        },
        {
          "alarmMetricName": "sap_start_service_processes",
          "monitor": true
        },
        {
          "alarmMetricName": "sap_dispatcher_queue_now",
          "monitor": true
        },
        {
          "alarmMetricName": "sap_dispatcher_queue_max",
          "monitor": true
        },
        {
          "alarmMetricName": "sap_enqueue_server_locks_max",
          "monitor": true
        },
        {
          "alarmMetricName": "sap_enqueue_server_locks_now",
          "monitor": true
        },
        {
          "alarmMetricName": "sap_enqueue_server_locks_state",
          "monitor": true
        },
        {
          "alarmMetricName": "sap_enqueue_server_replication_state",
          "monitor": true
        }
      ],
      "logs": [
        {
          "logGroupName": "SAP_NETWEAVER_DEV_TRACE_LOGS-NetWeaver-ML4",
          "logPath": "/usr/sap/ML4/*/work/dev_w*",
          "logType": "SAP_NETWEAVER_DEV_TRACE_LOGS",
          "monitor": true,
          "encoding": "utf-8"
        }
      ]
    }
  ],
  "netWeaverPrometheusExporter": {
    "sapSid": "ML4",
    "instanceNumbers": [
      "00",
      "11"
    ],
    "prometheusPort": "9680"
  }
}
```

# Amazon EC2에 대한 SAP NetWeaver High Availability
<a name="component-configuration-examples-netweaver-ha"></a>

다음 예제에서는 Amazon EC2에 대한 SAP NetWeaver High Availability을 위한 JSON 형식의 구성 요소 구성을 보여줍니다.

```
{
  "subComponents": [
    {
      "subComponentType": "AWS::EC2::Instance",
      "alarmMetrics": [
        {
          "alarmMetricName": "ha_cluster_corosync_ring_errors",
          "monitor": true
        },
        {
          "alarmMetricName": "ha_cluster_pacemaker_fail_count",
          "monitor": true
        },
        {
          "alarmMetricName": "sap_HA_check_failover_config_state",
          "monitor": true
        },
        {
          "alarmMetricName": "sap_HA_get_failover_config_HAActive",
          "monitor": true
        },
        {
          "alarmMetricName": "sap_alerts_AbortedJobs",
          "monitor": true
        },
        {
          "alarmMetricName": "sap_alerts_Availability",
          "monitor": true
        },
        {
          "alarmMetricName": "sap_alerts_BasisSystem",
          "monitor": true
        },
        {
          "alarmMetricName": "sap_alerts_DBRequestTime",
          "monitor": true
        },
        {
          "alarmMetricName": "sap_alerts_Database",
          "monitor": true
        },
        {
          "alarmMetricName": "sap_alerts_FrontendResponseTime",
          "monitor": true
        },
        {
          "alarmMetricName": "sap_alerts_LongRunners",
          "monitor": true
        },
        {
          "alarmMetricName": "sap_alerts_QueueTime",
          "monitor": true
        },
        {
          "alarmMetricName": "sap_alerts_ResponseTime",
          "monitor": true
        },
        {
          "alarmMetricName": "sap_alerts_ResponseTimeDialog",
          "monitor": true
        },
        {
          "alarmMetricName": "sap_alerts_ResponseTimeDialogRFC",
          "monitor": true
        },
        {
          "alarmMetricName": "sap_alerts_Security",
          "monitor": true
        },
        {
          "alarmMetricName": "sap_alerts_Shortdumps",
          "monitor": true
        },
        {
          "alarmMetricName": "sap_alerts_SqlError",
          "monitor": true
        },
        {
          "alarmMetricName": "sap_alerts_System",
          "monitor": true
        },
        {
          "alarmMetricName": "sap_enqueue_server_replication_state",
          "monitor": true
        },
        {
          "alarmMetricName": "sap_start_service_processes",
          "monitor": true
        }
      ],
      "logs": [
        {
          "logGroupName": "SAP_NETWEAVER_DEV_TRACE_LOGS-NetWeaver-PR1",
          "logPath": "/usr/sap/<SID>/D*/work/dev_w*",
          "logType": "SAP_NETWEAVER_DEV_TRACE_LOGS",
          "monitor": true,
          "encoding": "utf-8"
        }
      ]
    }
  ],
  "haClusterPrometheusExporter": {
    "prometheusPort": "9664"
  },
  "netWeaverPrometheusExporter": {
    "sapSid": "PR1",
    "instanceNumbers": [
      "11",
      "12"
    ],
    "prometheusPort": "9680"
  }
}
```

# SQL Always On 가용성 그룹
<a name="component-configuration-examples-sql"></a>

다음 예는 SQL Always On 가용성 그룹을 위한 JSON 형식의 구성 요소 구성을 보여줍니다.

```
{
  "subComponents" : [ {
    "subComponentType" : "AWS::EC2::Instance",
    "alarmMetrics" : [ {
      "alarmMetricName" : "CPUUtilization",
      "monitor" : true
    }, {
      "alarmMetricName" : "StatusCheckFailed",
      "monitor" : true
    }, {
      "alarmMetricName" : "Processor % Processor Time",
      "monitor" : true
    }, {
      "alarmMetricName" : "Memory % Committed Bytes In Use",
      "monitor" : true
    }, {
      "alarmMetricName" : "Memory Available Mbytes",
      "monitor" : true
    }, {
      "alarmMetricName" : "Paging File % Usage",
      "monitor" : true
    }, {
      "alarmMetricName" : "System Processor Queue Length",
      "monitor" : true
    }, {
      "alarmMetricName" : "Network Interface Bytes Total/sec",
      "monitor" : true
    }, {
      "alarmMetricName" : "PhysicalDisk % Disk Time",
      "monitor" : true
    }, {
      "alarmMetricName" : "SQLServer:Buffer Manager Buffer cache hit ratio",
      "monitor" : true
    }, {
      "alarmMetricName" : "SQLServer:Buffer Manager Page life expectancy",
      "monitor" : true
    }, {
      "alarmMetricName" : "SQLServer:General Statistics Processes blocked",
      "monitor" : true
    }, {
      "alarmMetricName" : "SQLServer:General Statistics User Connections",
      "monitor" : true
    }, {
      "alarmMetricName" : "SQLServer:Locks Number of Deadlocks/sec",
      "monitor" : true
    }, {
      "alarmMetricName" : "SQLServer:SQL Statistics Batch Requests/sec",
      "monitor" : true
    }, {
      "alarmMetricName" : "SQLServer:Database Replica File Bytes Received/sec",
      "monitor" : true
    }, {
      "alarmMetricName" : "SQLServer:Database Replica Log Bytes Received/sec",
      "monitor" : true
    }, {
      "alarmMetricName" : "SQLServer:Database Replica Log remaining for undo",
      "monitor" : true
    }, {
      "alarmMetricName" : "SQLServer:Database Replica Log Send Queue",
      "monitor" : true
    }, {
      "alarmMetricName" : "SQLServer:Database Replica Mirrored Write Transaction/sec",
      "monitor" : true
    }, {
      "alarmMetricName" : "SQLServer:Database Replica Recovery Queue",
      "monitor" : true
    }, {
      "alarmMetricName" : "SQLServer:Database Replica Redo Bytes Remaining",
      "monitor" : true
    }, {
      "alarmMetricName" : "SQLServer:Database Replica Redone Bytes/sec",
      "monitor" : true
    }, {
      "alarmMetricName" : "SQLServer:Database Replica Total Log requiring undo",
      "monitor" : true
    }, {
      "alarmMetricName" : "SQLServer:Database Replica Transaction Delay",
      "monitor" : true
    } ],
    "windowsEvents" : [ {
      "logGroupName" : "WINDOWS_EVENTS-Application-<RESOURCE_GROUP_NAME>",
      "eventName" : "Application",
      "eventLevels" : [ "WARNING", "ERROR", "CRITICAL", "INFORMATION" ],
      "monitor" : true
    }, {
      "logGroupName" : "WINDOWS_EVENTS-System-<RESOURCE_GROUP_NAME>",
      "eventName" : "System",
      "eventLevels" : [ "WARNING", "ERROR", "CRITICAL" ],
      "monitor" : true
    }, {
      "logGroupName" : "WINDOWS_EVENTS-Security-<RESOURCE_GROUP_NAME>",
      "eventName" : "Security",
      "eventLevels" : [ "WARNING", "ERROR", "CRITICAL" ],
      "monitor" : true
    } ],
    "logs" : [ {
      "logGroupName" : "SQL_SERVER_ALWAYSON_AVAILABILITY_GROUP-<RESOURCE_GROUP_NAME>",
      "logPath" : "C:\\Program Files\\Microsoft SQL Server\\MSSQL**.MSSQLSERVER\\MSSQL\\Log\\ERRORLOG",
      "logType" : "SQL_SERVER",
      "monitor" : true,
      "encoding" : "utf-8"
    } ]
  }, {
    "subComponentType" : "AWS::EC2::Volume",
    "alarmMetrics" : [ {
      "alarmMetricName" : "VolumeReadBytes",
      "monitor" : true
    }, {
    "alarmMetricName" : "VolumeWriteBytes",
      "monitor" : true
    }, {
    "alarmMetricName" : "VolumeReadOps",
      "monitor" : true
    }, {
    "alarmMetricName" : "VolumeWriteOps",
      "monitor" : true
    }, {
    "alarmMetricName" : "VolumeQueueLength",
      "monitor" : true
    }, {
    "alarmMetricName" : "VolumeThroughputPercentage",
      "monitor" : true
    }, {
    "alarmMetricName" : "BurstBalance",
      "monitor" : true
    } ]
  } ]
}
```

# SQL 장애 조치 클러스터 인스턴스
<a name="component-configuration-examples-sql-failover-cluster"></a>

다음 예는 SQL 장애 조치 클러스터 인스턴스를 위한 JSON 형식의 구성 요소 구성을 보여줍니다.

```
{
  "subComponents" : [ {
    "subComponentType" : "AWS::EC2::Instance",
    "alarmMetrics" : [ {
      "alarmMetricName" : "CPUUtilization",
      "monitor" : true
    }, {
      "alarmMetricName" : "StatusCheckFailed",
      "monitor" : true
    }, {
      "alarmMetricName" : "Processor % Processor Time",
      "monitor" : true
    }, {
      "alarmMetricName" : "Memory % Committed Bytes In Use",
      "monitor" : true
    }, {
      "alarmMetricName" : "Memory Available Mbytes",
      "monitor" : true
    }, {
      "alarmMetricName" : "Paging File % Usage",
      "monitor" : true
    }, {
      "alarmMetricName" : "System Processor Queue Length",
      "monitor" : true
    }, {
      "alarmMetricName" : "Network Interface Bytes Total/sec",
      "monitor" : true
    }, {
      "alarmMetricName" : "PhysicalDisk % Disk Time",
      "monitor" : true
    }, {
      "alarmMetricName" : "Bytes Received/sec",
      "monitor" : true
    }, {
      "alarmMetricName" : "Normal Messages Queue Length/sec",
      "monitor" : true
    }, {
      "alarmMetricName" : "Urgent Message Queue Length/se",
      "monitor" : true
    }, {
      "alarmMetricName" : "Reconnect Count",
      "monitor" : true
    }, {
      "alarmMetricName" : "Unacknowledged Message Queue Length/sec",
      "monitor" : true
    }, {
      "alarmMetricName" : "Messages Outstanding",
      "monitor" : true
    }, {
      "alarmMetricName" : "Messages Sent/sec",
      "monitor" : true
    }, {
      "alarmMetricName" : "Database Update Messages/sec",
      "monitor" : true
    }, {
      "alarmMetricName" : "Update Messages/sec",
      "monitor" : true
    }, {
      "alarmMetricName" : "Flushes/sec",
      "monitor" : true
    }, {
      "alarmMetricName" : "Crypto Checkpoints Saved/sec",
      "monitor" : true
    }, {
      "alarmMetricName" : "Crypto Checkpoints Restored/sec",
      "monitor" : true
    }, {
      "alarmMetricName" : "Registry Checkpoints Restored/sec",
      "monitor" : true
    }, {
      "alarmMetricName" : "Registry Checkpoints Saved/sec",
      "monitor" : true
    }, {
      "alarmMetricName" : "Cluster API Calls/sec",
      "monitor" : true
    }, {
      "alarmMetricName" : "Resource API Calls/sec",
      "monitor" : true
    }, {
      "alarmMetricName" : "Cluster Handles/sec",
      "monitor" : true
    }, {
      "alarmMetricName" : "Resource Handles/sec",
      "monitor" : true
    } ],
    "windowsEvents" : [ {
      "logGroupName" : "WINDOWS_EVENTS-Application-<RESOURCE_GROUP_NAME>",
      "eventName" : "Application",
      "eventLevels" : [ "WARNING", "ERROR", "CRITICAL"],
      "monitor" : true
    }, {
      "logGroupName" : "WINDOWS_EVENTS-System-<RESOURCE_GROUP_NAME>",
      "eventName" : "System",
      "eventLevels" : [ "WARNING", "ERROR", "CRITICAL", "INFORMATION" ],
      "monitor" : true
    }, {
      "logGroupName" : "WINDOWS_EVENTS-Security-<RESOURCE_GROUP_NAME>",
      "eventName" : "Security",
      "eventLevels" : [ "WARNING", "ERROR", "CRITICAL" ],
      "monitor" : true
    } ],
    "logs" : [ {
      "logGroupName" : "SQL_SERVER_FAILOVER_CLUSTER_INSTANCE-<RESOURCE_GROUP_NAME>",
      "logPath" : "\\\\amznfsxjmzbykwn.mydomain.aws\\SQLDB\\MSSQL**.MSSQLSERVER\\MSSQL\\Log\\ERRORLOG",
      "logType" : "SQL_SERVER",
      "monitor" : true,
      "encoding" : "utf-8"
    } ]
  }, {
    "subComponentType" : "AWS::EC2::Volume",
    "alarmMetrics" : [ {
      "alarmMetricName" : "VolumeReadBytes",
      "monitor" : true
    }, {
    "alarmMetricName" : "VolumeWriteBytes",
      "monitor" : true
    }, {
    "alarmMetricName" : "VolumeReadOps",
      "monitor" : true
    }, {
    "alarmMetricName" : "VolumeWriteOps",
      "monitor" : true
    }, {
    "alarmMetricName" : "VolumeQueueLength",
      "monitor" : true
    }, {
    "alarmMetricName" : "VolumeThroughputPercentage",
      "monitor" : true
    }, {
    "alarmMetricName" : "BurstBalance",
      "monitor" : true
    } ]
  } ]
}
```

# CloudFormation 템플릿을 사용하여 CloudWatch Application Insights 모니터링 생성 및 구성
<a name="appinsights-cloudformation"></a>

AWS CloudFormation 템플릿에서 직접 애플리케이션, 데이터베이스 및 웹 서버로 주요 지표 및 원격 측정을 포함한 Application Insights 모니터링을 추가할 수 있습니다.

이 단원에서는 Application Insights 모니터링을 생성하고 구성하는 데 도움이 되는 JSON 형식 및 YAML 형식의 샘플 CloudFormation 템플릿을 제공합니다.

Application Insights 리소스 및 속성 참조에 대해 살펴보려면 *CloudFormation 사용 설명서*의 [ApplicationInsights 리소스 유형 참조](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ApplicationInsights.html) 단원을 참조하세요.

**Topics**
+ [CloudFormation 스택 전체에 대한 Application Insights 애플리케이션 생성](#appinsights-cloudformation-apply-to-stack)
+ [세부 설정을 사용하여 Application Insights 애플리케이션 생성](#appinsights-cloudformation-apply-detailed)
+ [`CUSTOM` 모드 구성 요소 구성으로 Application Insights 애플리케이션 생성](#appinsights-cloudformation-custom)
+ [`DEFAULT` 모드 구성 요소 구성으로 Application Insights 애플리케이션 생성](#appinsights-cloudformation-default)
+ [`DEFAULT_WITH_OVERWRITE` 모드 구성 요소 구성으로 Application Insights 애플리케이션 생성](#appinsights-cloudformation-default-with-overwrite)

## CloudFormation 스택 전체에 대한 Application Insights 애플리케이션 생성
<a name="appinsights-cloudformation-apply-to-stack"></a>

다음 템플릿을 적용하려면 AWS 리소스를 생성하고 이러한 리소스를 모니터링할 Application Insights 애플리케이션을 생성할 리소스 그룹을 하나 이상 생성해야 합니다. 자세한 내용은 [AWS Resource Groups 시작하기](https://docs.aws.amazon.com/ARG/latest/userguide/gettingstarted.html) 단원을 참조하세요.

다음 템플릿의 처음 두 부분에서는 리소스 및 리소스 그룹을 지정합니다. 템플릿의 마지막 부분에서는 리소스 그룹의 Application Insights 애플리케이션을 생성하지만 애플리케이션을 구성하거나 모니터링을 적용하지는 않습니다. 자세한 내용은 *Amazon CloudWatch Application Insights API 참조*의 [CreateApplication](https://docs.aws.amazon.com/cloudwatch/latest/APIReference/API_CreateApplication.html) 명령 세부 정보를 참조하세요.

**JSON 형식의 템플릿**

```
{
    "AWSTemplateFormatVersion": "2010-09-09",
    "Description": "Test Resource Group stack",
    "Resources": {
        "EC2Instance": {
            "Type": "AWS::EC2::Instance",
            "Properties": {
                "ImageId" : "ami-abcd1234efgh5678i",
                "SecurityGroupIds" : ["sg-abcd1234"]
            }
        },
        ...
        "ResourceGroup": {
            "Type": "AWS::ResourceGroups::Group",
            "Properties": {
                "Name": "my_resource_group"
            }
        },
        "AppInsightsApp": {
            "Type": "AWS::ApplicationInsights::Application",
            "Properties": {
                "ResourceGroupName": "my_resource_group"
            },
            "DependsOn" : "ResourceGroup"
        }
    }
}
```

**YAML 형식의 템플릿**

```
---
AWSTemplateFormatVersion: '2010-09-09'
Description: Test Resource Group stack
Resources:
  EC2Instance:
    Type: AWS::EC2::Instance
    Properties:
      ImageId: ami-abcd1234efgh5678i
      SecurityGroupIds:
      - sg-abcd1234
  ...
  ResourceGroup:
    Type: AWS::ResourceGroups::Group
    Properties:
      Name: my_resource_group
  AppInsightsApp:
    Type: AWS::ApplicationInsights::Application
    Properties:
      ResourceGroupName: my_resource_group
    DependsOn: ResourceGroup
```

다음 템플릿 섹션에서는 Application Insights 애플리케이션에 기본 모니터링 구성을 적용합니다. 자세한 내용은 *Amazon CloudWatch Application Insights API 참조*의 [CreateApplication](https://docs.aws.amazon.com/cloudwatch/latest/APIReference/API_CreateApplication.html) 명령 세부 정보를 참조하세요.

`AutoConfigurationEnabled`를 `true`로 설정하면 애플리케이션의 모든 구성 요소가 `DEFAULT` 애플리케이션 티어에 대한 권장 모니터링 설정으로 구성됩니다. 이러한 설정 및 티어에 대한 자세한 내용은 *Amazon CloudWatch Application Insights API 참조*의 [DescribeComponentConfigurationRecommendation](https://docs.aws.amazon.com/cloudwatch/latest/APIReference/API_DescribeComponentConfigurationRecommendation.html) 및 [UpdateComponentConfiguration](https://docs.aws.amazon.com/cloudwatch/latest/APIReference/API_UpdateComponentConfiguration.html)을 참조하세요.

**JSON 형식의 템플릿**

```
{
    "AWSTemplateFormatVersion": "2010-09-09",
    "Description": "Test Application Insights Application stack",
    "Resources": {
        "AppInsightsApp": {
            "Type": "AWS::ApplicationInsights::Application",
            "Properties": {
                "ResourceGroupName": "my_resource_group",
                "AutoConfigurationEnabled": true
            }
        }
    }
}
```

**YAML 형식의 템플릿**

```
---
AWSTemplateFormatVersion: '2010-09-09'
Description: Test Application Insights Application stack
Resources:
  AppInsightsApp:
    Type: AWS::ApplicationInsights::Application
    Properties:
      ResourceGroupName: my_resource_group
      AutoConfigurationEnabled: true
```

## 세부 설정을 사용하여 Application Insights 애플리케이션 생성
<a name="appinsights-cloudformation-apply-detailed"></a>

아래에 나와 있는 템플릿은 다음 작업을 수행합니다.
+ CloudWatch Events 알림 및 OpsCenter가 활성화된 상태로 Application Insights 애플리케이션을 생성합니다. 자세한 내용은 *Amazon CloudWatch Application Insights API 참조*의 [CreateApplication](https://docs.aws.amazon.com/cloudwatch/latest/APIReference/API_CreateApplication.html) 명령 세부 정보를 참조하세요.
+ 두 개의 태그를 사용하여 애플리케이션에 태그를 지정합니다. 그 중 하나는 태그 값이 없습니다. 자세한 내용은 *Amazon CloudWatch Application Insights API 참조*의 [TagResource](https://docs.aws.amazon.com/cloudwatch/latest/APIReference/API_TagResource.html)를 참조하세요.
+ 두 개의 사용자 지정 인스턴스 그룹 구성 요소를 생성합니다. 자세한 내용은 *Amazon CloudWatch Application Insights API 참조*의 [CreateComponent](https://docs.aws.amazon.com/cloudwatch/latest/APIReference/API_CreateComponent.html)를 참조하세요.
+ 두 개의 로그 패턴 세트를 생성합니다. 자세한 내용은 *Amazon CloudWatch Application Insights API 참조*의 [CreateLogPattern](https://docs.aws.amazon.com/cloudwatch/latest/APIReference/API_CreateLogPattern.html)을 참조하세요.
+ `AutoConfigurationEnabled`를 `true`로 설정합니다. 이렇게 하면 `DEFAULT` 계층에 대한 권장 모니터링 설정을 사용하여 애플리케이션의 모든 구성 요소가 구성됩니다. 자세한 내용은 *Amazon CloudWatch Application Insights API 참조*의 [DescribeComponentConfigurationRecommendation](https://docs.aws.amazon.com/cloudwatch/latest/APIReference/API_DescribeComponentConfigurationRecommendation.html)을 참조하세요.

**JSON 형식의 템플릿 **

```
{
    "Type": "AWS::ApplicationInsights::Application",
    "Properties": {
        "ResourceGroupName": "my_resource_group",
        "CWEMonitorEnabled": true,
        "OpsCenterEnabled": true,
        "OpsItemSNSTopicArn": "arn:aws:sns:us-east-1:123456789012:my_topic",
        "AutoConfigurationEnabled": true,
        "Tags": [
            {
                "Key": "key1",
                "Value": "value1"
            },
            {
                "Key": "key2",
                "Value": ""
            }
        ],
        "CustomComponents": [
            {
                "ComponentName": "test_component_1",
                "ResourceList": [
                    "arn:aws:ec2:us-east-1:123456789012:instance/i-abcd1234efgh5678i"
                ]
            },
            {
                "ComponentName": "test_component_2",
                "ResourceList": [
                    "arn:aws:ec2:us-east-1:123456789012:instance/i-abcd1234efgh5678i",
                    "arn:aws:ec2:us-east-1:123456789012:instance/i-abcd1234efgh5678i"
                ]
            }
        ],
        "LogPatternSets": [
            {
                "PatternSetName": "pattern_set_1",
                "LogPatterns": [
                    {
                        "PatternName": "deadlock_pattern",
                        "Pattern": ".*\\sDeadlocked\\sSchedulers(([^\\w].*)|($))",
                        "Rank": 1
                    }
                ]    
            },
            {
                "PatternSetName": "pattern_set_2",
                "LogPatterns": [
                    {
                        "PatternName": "error_pattern",
                        "Pattern": ".*[\\s\\[]ERROR[\\s\\]].*",
                        "Rank": 1
                    },
                    {
                        "PatternName": "warning_pattern",
                        "Pattern": ".*[\\s\\[]WARN(ING)?[\\s\\]].*",
                        "Rank": 10
                    }
                ]
            }
        ]
    }
}
```

**YAML 형식의 템플릿**

```
---
Type: AWS::ApplicationInsights::Application
Properties:
  ResourceGroupName: my_resource_group
  CWEMonitorEnabled: true
  OpsCenterEnabled: true
  OpsItemSNSTopicArn: arn:aws:sns:us-east-1:123456789012:my_topic
  AutoConfigurationEnabled: true
  Tags:
  - Key: key1
    Value: value1
  - Key: key2
    Value: ''
  CustomComponents:
  - ComponentName: test_component_1
    ResourceList:
    - arn:aws:ec2:us-east-1:123456789012:instance/i-abcd1234efgh5678i
  - ComponentName: test_component_2
    ResourceList:
    - arn:aws:ec2:us-east-1:123456789012:instance/i-abcd1234efgh5678i
    - arn:aws:ec2:us-east-1:123456789012:instance/i-abcd1234efgh5678i
  LogPatternSets:
  - PatternSetName: pattern_set_1
    LogPatterns:
    - PatternName: deadlock_pattern
      Pattern: ".*\\sDeadlocked\\sSchedulers(([^\\w].*)|($))"
      Rank: 1
  - PatternSetName: pattern_set_2
    LogPatterns:
    - PatternName: error_pattern
      Pattern: ".*[\\s\\[]ERROR[\\s\\]].*"
      Rank: 1
    - PatternName: warning_pattern
      Pattern: ".*[\\s\\[]WARN(ING)?[\\s\\]].*"
      Rank: 10
```

## `CUSTOM` 모드 구성 요소 구성으로 Application Insights 애플리케이션 생성
<a name="appinsights-cloudformation-custom"></a>

아래에 나와 있는 템플릿은 다음 작업을 수행합니다.
+ Application Insights 애플리케이션을 생성합니다. 자세한 내용은 *Amazon CloudWatch Application Insights API 참조*의 [CreateApplication](https://docs.aws.amazon.com/cloudwatch/latest/APIReference/API_CreateApplication.html)을 참조하세요.
+ 구성 요소 `my_component`에 대해 `ComponentConfigurationMode`를 `CUSTOM`으로 설정합니다. 이렇게 하면 이 구성 요소가 `CustomComponentConfiguration`에 지정된 구성으로 구성됩니다. 자세한 내용은 *Amazon CloudWatch Application Insights API 참조*의 [UpdateComponentConfiguration](https://docs.aws.amazon.com/cloudwatch/latest/APIReference/API_UpdateComponentConfiguration.html)을 참조하세요.

**JSON 형식의 템플릿**

```
{
    "Type": "AWS::ApplicationInsights::Application",
    "Properties": {
        "ResourceGroupName": "my_resource_group,
        "ComponentMonitoringSettings": [
            {
                "ComponentARN": "my_component",
                "Tier": "SQL_SERVER",
                "ComponentConfigurationMode": "CUSTOM",
                "CustomComponentConfiguration": {
                    "ConfigurationDetails": {
                        "AlarmMetrics": [
                            {
                                "AlarmMetricName": "StatusCheckFailed"
                            },
                            ...
                        ],
                        "Logs": [
                            {       
                                "LogGroupName": "my_log_group_1",
                                "LogPath": "C:\\LogFolder_1\\*",
                                "LogType": "DOT_NET_CORE",
                                "Encoding": "utf-8",
                                "PatternSet": "my_pattern_set_1"
                            },      
                            ...     
                        ],      
                        "WindowsEvents": [
                            {       
                                "LogGroupName": "my_windows_event_log_group_1",
                                "EventName": "Application",
                                "EventLevels": [
                                    "ERROR",
                                    "WARNING",
                                    ...     
                                ],       
                                "Encoding": "utf-8",
                                "PatternSet": "my_pattern_set_2"
                            },      
                            ...     
                        ],
                        "Alarms": [
                            {
                                "AlarmName": "my_alarm_name",
                                "Severity": "HIGH"
                            },
                            ...
                        ]
                    },
                    "SubComponentTypeConfigurations": [
                        {
                            "SubComponentType": "EC2_INSTANCE",
                            "SubComponentConfigurationDetails": {
                                "AlarmMetrics": [
                                    {
                                        "AlarmMetricName": "DiskReadOps"
                                    },
                                    ...
                                ],
                                "Logs": [
                                    {
                                        "LogGroupName": "my_log_group_2",
                                        "LogPath": "C:\\LogFolder_2\\*",
                                        "LogType": "IIS",
                                        "Encoding": "utf-8",
                                        "PatternSet": "my_pattern_set_3"
                                    },
                                    ...
                                ],
                                "processes" : [
                                    {
                                        "processName" : "my_process",
                                        "alarmMetrics" : [
                                    {
                                        "alarmMetricName" : "procstat cpu_usage",
                                        "monitor" : true
                                    }, {
                                        "alarmMetricName" : "procstat memory_rss",
                                        "monitor" : true
                                    }
                                ]
                            }
                        ],
                                "WindowsEvents": [
                                    {
                                        "LogGroupName": "my_windows_event_log_group_2",
                                        "EventName": "Application",
                                        "EventLevels": [
                                            "ERROR",
                                            "WARNING",
                                            ...
                                        ],
                                        "Encoding": "utf-8",
                                        "PatternSet": "my_pattern_set_4"
                                    },
                                    ...
                                ]
                            }
                        }   
                    ]
                }
            }
        ]
    }
}
```

**YAML 형식의 템플릿**

```
---
Type: AWS::ApplicationInsights::Application
Properties:
  ResourceGroupName: my_resource_group
  ComponentMonitoringSettings:
  - ComponentARN: my_component
    Tier: SQL_SERVER
    ComponentConfigurationMode: CUSTOM
    CustomComponentConfiguration:
      ConfigurationDetails:
        AlarmMetrics:
        - AlarmMetricName: StatusCheckFailed
        ...
        Logs:
        - LogGroupName: my_log_group_1
          LogPath: C:\LogFolder_1\*
          LogType: DOT_NET_CORE
          Encoding: utf-8
          PatternSet: my_pattern_set_1
        ...
        WindowsEvents:
        - LogGroupName: my_windows_event_log_group_1
          EventName: Application
          EventLevels:
          - ERROR
          - WARNING
          ...
          Encoding: utf-8
          PatternSet: my_pattern_set_2
        ...
        Alarms:
        - AlarmName: my_alarm_name
          Severity: HIGH
        ...
      SubComponentTypeConfigurations:
      - SubComponentType: EC2_INSTANCE
        SubComponentConfigurationDetails:
          AlarmMetrics:
          - AlarmMetricName: DiskReadOps
          ...
          Logs:
          - LogGroupName: my_log_group_2
            LogPath: C:\LogFolder_2\*
            LogType: IIS
            Encoding: utf-8
            PatternSet: my_pattern_set_3
          ...
          Processes:
          - ProcessName: my_process
            AlarmMetrics:
            - AlarmMetricName: procstat cpu_usage
              ...
            ...
          WindowsEvents:
          - LogGroupName: my_windows_event_log_group_2
            EventName: Application
            EventLevels:
            - ERROR
            - WARNING
            ...
            Encoding: utf-8
            PatternSet: my_pattern_set_4
          ...
```

## `DEFAULT` 모드 구성 요소 구성으로 Application Insights 애플리케이션 생성
<a name="appinsights-cloudformation-default"></a>

아래에 나와 있는 템플릿은 다음 작업을 수행합니다.
+ Application Insights 애플리케이션을 생성합니다. 자세한 내용은 *Amazon CloudWatch Application Insights API 참조*의 [CreateApplication](https://docs.aws.amazon.com/cloudwatch/latest/APIReference/API_CreateApplication.html)을 참조하세요.
+ 구성 요소 `my_component`에 대해 `ComponentConfigurationMode`를 `DEFAULT`로 설정하고 `Tier`를 `SQL_SERVER`로 설정합니다. 이렇게 하면 `SQL_Server` 계층에 대해 Application Insights에서 권장하는 구성 설정으로 이 구성 요소가 구성됩니다. 자세한 내용은 *Amazon CloudWatch Application Insights API 참조*의 [DescribeComponentConfiguration](https://docs.aws.amazon.com/cloudwatch/latest/APIReference/API_DescribeComponentConfiguration.html) 및 [UpdateComponentConfiguration](https://docs.aws.amazon.com/cloudwatch/latest/APIReference/API_UpdateComponentConfiguration.html)을 참조하세요.

**JSON 형식의 템플릿**

```
{
    "Type": "AWS::ApplicationInsights::Application",
    "Properties": {
        "ResourceGroupName": "my_resource_group",
        "ComponentMonitoringSettings": [
            {
                "ComponentARN": "my_component",
                "Tier": "SQL_SERVER",
                "ComponentConfigurationMode": "DEFAULT"
            }
        ]
    }
}
```

**YAML 형식의 템플릿**

```
---
Type: AWS::ApplicationInsights::Application
Properties:
  ResourceGroupName: my_resource_group
  ComponentMonitoringSettings:
  - ComponentARN: my_component
    Tier: SQL_SERVER
    ComponentConfigurationMode: DEFAULT
```

## `DEFAULT_WITH_OVERWRITE` 모드 구성 요소 구성으로 Application Insights 애플리케이션 생성
<a name="appinsights-cloudformation-default-with-overwrite"></a>

아래에 나와 있는 템플릿은 다음 작업을 수행합니다.
+ Application Insights 애플리케이션을 생성합니다. 자세한 내용은 *Amazon CloudWatch Application Insights API 참조*의 [CreateApplication](https://docs.aws.amazon.com/cloudwatch/latest/APIReference/API_CreateApplication.html)을 참조하세요.
+ 구성 요소 `my_component`에 대해 `ComponentConfigurationMode`를 `DEFAULT_WITH_OVERWRITE`로 설정하고 `tier`를 `DOT_NET_CORE`로 설정합니다. 이렇게 하면 `DOT_NET_CORE` 계층에 대해 Application Insights에서 권장하는 구성 설정으로 이 구성 요소가 구성됩니다. 덮어쓴 구성 설정은 `DefaultOverwriteComponentConfiguration`에서 지정됩니다.
  + 구성 요소 수준에서 `AlarmMetrics` 설정을 덮어씁니다.
  + 하위 구성 요소 수준에서 `EC2_Instance` 유형 하위 구성 요소에 대해 `Logs` 설정을 덮어씁니다.

  자세한 내용은*Amazon CloudWatch Application Insights API 참조*의 [UpdateComponentConfiguration](https://docs.aws.amazon.com/cloudwatch/latest/APIReference/API_UpdateComponentConfiguration.html)을 참조하세요.

**JSON 형식의 템플릿**

```
{
    "Type": "AWS::ApplicationInsights::Application",
    "Properties": {
        "ResourceGroupName": "my_resource_group",
        "ComponentMonitoringSettings": [
            {
                "ComponentName": "my_component",
                "Tier": "DOT_NET_CORE",
                "ComponentConfigurationMode": "DEFAULT_WITH_OVERWRITE",
                "DefaultOverwriteComponentConfiguration": {
                    "ConfigurationDetails": {
                        "AlarmMetrics": [
                            {
                                "AlarmMetricName": "StatusCheckFailed"
                            }
                        ]
                    },
                    "SubComponentTypeConfigurations": [
                        {
                            "SubComponentType": "EC2_INSTANCE",
                            "SubComponentConfigurationDetails": {
                                "Logs": [
                                    {
                                        "LogGroupName": "my_log_group",
                                        "LogPath": "C:\\LogFolder\\*",
                                        "LogType": "IIS",
                                        "Encoding": "utf-8",
                                        "PatternSet": "my_pattern_set"
                                    }
                                ]
                            }
                        }   
                    ] 
                } 
            }
        ]
    }
}
```

**YAML 형식의 템플릿**

```
---
Type: AWS::ApplicationInsights::Application
Properties:
  ResourceGroupName: my_resource_group
  ComponentMonitoringSettings:
  - ComponentName: my_component
    Tier: DOT_NET_CORE
    ComponentConfigurationMode: DEFAULT_WITH_OVERWRITE
    DefaultOverwriteComponentConfiguration:
      ConfigurationDetails:
        AlarmMetrics:
        - AlarmMetricName: StatusCheckFailed
      SubComponentTypeConfigurations:
      - SubComponentType: EC2_INSTANCE
        SubComponentConfigurationDetails:
          Logs:
          - LogGroupName: my_log_group
            LogPath: C:\LogFolder\*
            LogType: IIS
            Encoding: utf-8
            PatternSet: my_pattern_set
```

# 자습서: SAP ASE의 모니터링 설정
<a name="appinsights-tutorial-sap-ase"></a>

이 자습서에서는 SAP ASE 데이터베이스에 대한 모니터링을 설정하도록 CloudWatch Application Insights를 구성하는 방법을 보여줍니다. CloudWatch Application Insights 자동 대시보드를 사용하여 문제 세부 정보를 시각화하고, 문제 해결을 가속화하고, SAP ASE 데이터베이스의 평균 해결 시간(MTTR)을 단축할 수 있습니다.

**Topics**
+ [지원 환경](#appinsights-tutorial-sap-ase-supported-environments)
+ [지원되는 운영 체제](#appinsights-tutorial-sap-ase-supported-os)
+ [특성](#appinsights-tutorial-sap-ase-features)
+ [사전 조건](#appinsights-tutorial-sap-ase-prerequisites)
+ [모니터링 설정](#appinsights-tutorial-sap-ase-set-up)
+ [모니터링 관리](#appinsights-tutorial-sap-ase-manage)
+ [경보 임곗값 구성](#appinsights-tutorial-sap-hana-configure-alarm-threshold)
+ [Application Insights에서 감지한 SAP ASE 문제 확인 및 해결](#appinsights-tutorial-sap-ase-troubleshooting-problems)
+ [Application Insights 문제 해결](#appinsights-tutorial-sap-ase-troubleshooting-health-dashboard)

## 지원 환경
<a name="appinsights-tutorial-sap-ase-supported-environments"></a>

CloudWatch Application Insights는 다음 시스템 및 패턴에 대한 AWS 리소스 배포를 지원합니다. SAP ASE 데이터베이스 소프트웨어 및 지원되는 SAP 애플리케이션 소프트웨어를 제공 및 설치합니다.
+ **단일 Amazon EC2 인스턴스의 SAP ASE 데이터베이스 1개 이상** - 단일 노드 확장 아키텍처의 SAP ASE입니다.
+ **크로스 AZ SAP ASE 데이터베이스 고가용성 설정** - SUSE/RHEL 클러스터링을 사용한 2개의 가용 영역에 구성된 고가용성 SAP ASE입니다.

**참고**  
CloudWatch Application Insights는 단일 SAP 시스템 ID(SID) ASE HA 환경만 지원합니다. 여러 ASE HA SID가 연결된 경우, 첫 번째로 감지된 SID에 대해서만 모니터링이 설정됩니다.

## 지원되는 운영 체제
<a name="appinsights-tutorial-sap-ase-supported-os"></a>

SAP ASE용 CloudWatch Application Insights는 다음 운영 체제에 대한 x86-64 아키텍처를 지원합니다.
+ SuSE Linux 12 SP4
+ SuSE Linux 12 SP5
+ SuSE Linux 15
+ SuSE Linux 15 SP1
+ SuSE Linux 15 SP2
+ SuSE Linux 15 SP3
+ SuSE Linux 15 SP4
+ SAP용 SuSE Linux 15 SP1
+ SAP용 SuSE Linux 15 SP2
+ SAP용 SuSE Linux 15 SP3
+ SAP용 SuSE Linux 15 SP4
+ SAP용 SuSE Linux 12 SP4
+ SAP용 SuSE Linux 12 SP5
+ RedHat Linux 7.6
+ RedHat Linux 7.7
+ RedHat Linux 7.9
+ RedHat Linux 8.1
+ RedHat Linux 8.4
+ RedHat Linux 8.6

## 특성
<a name="appinsights-tutorial-sap-ase-features"></a>

SAP ASE용 CloudWatch Application Insights는 다음과 같은 기능을 제공합니다.
+ SAP ASE 워크로드 자동 감지 
+ 정적 임곗값을 기반으로 한 SAP ASE 경보 자동 생성
+ 이상 탐지를 기반으로 한 SAP ASE 경보 자동 생성 
+ SAP ASE 로그 패턴 자동 인식 
+ SAP ASE 상태 대시보드
+ SAP ASE 문제 대시보드

## 사전 조건
<a name="appinsights-tutorial-sap-ase-prerequisites"></a>

CloudWatch Application Insights로 SAP ASE 데이터베이스를 구성하려면 다음 사전 조건을 수행해야 합니다.
+ **SAP ASE 구성 매개변수** - ASE DB에서 구성 매개변수(`"enable monitoring"`, `"sql text pipe max messages"`, `"sql text pipe active"`)를 활성화해야 합니다. 이를 통해 CloudWatch Application Insights는 DB에 대한 전체 모니터링 기능을 제공할 수 있습니다. ASE 데이터베이스에서 이러한 설정이 활성화되지 않은 경우 Application Insights는 모니터링을 허용하는 데 필요한 지표를 자동으로 수집할 수 있도록 합니다.
+ **SAP ASE 데이터베이스 사용자** - Application Insights 온보딩 중에 제공된 데이터베이스 사용자는 다음에 대한 액세스 권한이 있어야 합니다.
  + 마스터 데이터베이스 및 사용자(테넌트) 데이터베이스의 시스템 테이블
  + 모니터링 테이블
+ **SAPHostCtrl** – Amazon EC2 인스턴스에서 SAPHostCtrl을 설치하고 설정합니다.
+ **Amazon CloudWatch 에이전트** - Amazon EC2 인스턴스에서 기존 CloudWatch 에이전트를 실행하고 있지 않은지 확인합니다. CloudWatch 에이전트트를 설치한 경우 병합 충돌을 방지하려면 Application Insights에서 사용 중인 리소스 구성을 기존 CloudWatch 에이전트 구성 파일에서 제거하세요. 자세한 내용은 [수동으로 CloudWatch 에이전트 구성 파일 생성 또는 편집](CloudWatch-Agent-Configuration-File-Details.md) 섹션을 참조하세요.
+ **AWS Systems Manager 활성화** - 인스턴스에 SSM Agent를 설치하고 SSM에 대해 인스턴스를 활성화합니다. SSM Agent를 설치하는 방법에 대한 자세한 내용은 *AWS Systems Manager 사용 설명서*에서 [SSM Agent 작업](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent.html)을 참조하세요.
+ **Amazon EC2 인스턴스 역할** - 데이터베이스를 구성하려면 다음 Amazon EC2 인스턴스 역할을 연결해야 합니다.
  + Systems Manager를 사용 설정하려면 `AmazonSSMManagedInstanceCore` 역할을 연결해야 합니다. 자세한 내용은 [AWS Systems Manager 자격 증명 기반 정책 예제](https://docs.aws.amazon.com/systems-manager/latest/userguide/auth-and-access-control-iam-identity-based-access-control.html)를 참조하세요.
  + CloudWatch를 통해 내보낼 인스턴스 지표 및 로그를 사용 설정하려면 `CloudWatchAgentServerPolicy`를 연결해야 합니다. 자세한 내용은 [Amazon CloudWatch 에이전트와 함께 사용하기 위한 IAM 역할 및 사용자 생성](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/create-iam-roles-for-cloudwatch-agent.html)을 참조하세요.
  + AWS Secrets Manager에 저장된 암호를 읽으려면 다음 IAM 인라인 정책을 Amazon EC2 인스턴스 역할에 연결해야 합니다. 인라인 정책에 대한 자세한 내용은 *AWS Identity and Access Management 사용 설명서*에서 [인라인 정책 ](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html)을 참조하세요.

------
#### [ JSON ]

****  

    ```
    {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
                "Sid": "VisualEditor0",
                "Effect": "Allow",
                "Action": [
                    "secretsmanager:GetSecretValue"
                ],
                "Resource": "arn:aws:secretsmanager:*:*:secret:ApplicationInsights-*"
            }
        ]
    }
    ```

------
+ **AWS Resource Groups** – CloudWatch Application Insights에 애플리케이션을 온보딩하려면 애플리케이션 스택이 사용하는 연결된 모든 AWS 리소스를 포함하는 리소스 그룹을 생성해야 합니다. 여기에는 SAP ASE 데이터베이스를 실행하는 Amazon EC2 인스턴스와 Amazon EBS 볼륨이 포함됩니다. 계정당 데이터베이스가 여러 개인 경우, 각 SAP ASE 데이터베이스 시스템에 대한 AWS 리소스를 포함하는 하나의 리소스 그룹을 생성하는 것이 좋습니다.
+ **IAM 권한** - 관리자가 아닌 사용자의 경우:
  +  서비스 연결 역할을 생성하고 이를 사용자 자격 증명에 연결할 수 있도록 Application Insights를 허용하는 AWS Identity and Access Management (IAM) 정책을 생성해야 합니다. 정책 연결 단계에 대해서는 [CloudWatch Application Insights에 대한 IAM 정책](appinsights-iam.md) 섹션을 참조하세요.
  + 사용자가 데이터베이스 사용자 자격 증명을 저장하려면 AWS Secrets Manager에 보안 암호를 생성할 수 있는 권한이 있어야 합니다. 자세한 내용은 [예: 보안 암호 생성 권한](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access_examples.html#auth-and-access_examples_create)을 참조하세요.

------
#### [ JSON ]

****  

    ```
    {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "secretsmanager:CreateSecret"
          ],
          "Resource": "arn:aws:secretsmanager:*:*:secret:ApplicationInsights-*"
        }
      ]
    }
    ```

------
+ **서비스 연결 역할** - Application Insights는 AWS Identity and Access Management(IAM) 서비스 연결 역할을 사용합니다. 서비스 연결 역할은 Application Insights 관리 콘솔에서 첫 번째 Application Insights 애플리케이션을 생성할 때 생성됩니다. 자세한 내용은 [CloudWatch Application Insights에 서비스 연결 역할 사용](CHAP_using-service-linked-roles-appinsights.md) 섹션을 참조하세요.

## SAP ASE 데이터베이스에 대한 모니터링 설정
<a name="appinsights-tutorial-sap-ase-set-up"></a>

SAP ASE 데이터베이스에 대한 모니터링을 설정하려면 다음 단계를 수행하세요

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

1. 왼쪽 탐색 창의 **인사이트(Insights)**에서 **Application Insights**를 선택합니다.

1. **Application Insights** 페이지에는 Application Insights를 사용하여 모니터링되는 애플리케이션 목록과 각 애플리케이션의 모니터링 상태가 표시됩니다. 오른쪽 상단 모서리에서 **애플리케이션 추가(Add an application)**를 선택합니다.

1. **애플리케이션 세부 정보 지정** 페이지에서 **리소스 그룹**의 드롭다운 목록에 있는 SAP ASE 데이터베이스 리소스를 포함하는 AWS 리소스 그룹을 선택합니다. 애플리케이션에 대한 리소스 그룹을 생성하지 않은 경우 **리소스 그룹(Resource group)** 드롭다운에서 **새 리소스 그룹 생성(Create new resource group)**을 선택해 생성할 수 있습니다. 리소스 그룹 생성에 대한 자세한 내용은 [https://docs.aws.amazon.com/ARG/latest/userguide/resource-groups.html](https://docs.aws.amazon.com/ARG/latest/userguide/resource-groups.html)를 참조하세요.

1. Amazon EBS, Amazon EC2, AWS CodeDeploy, Amazon ECS, AWS Health API 및 알림, Amazon RDS, Amazon S3, AWS Step Functions로부터 인사이트를 얻기 위해 Application Insights 모니터링을 CloudWatch Events와 통합하려면 **CloudWatch Events 모니터링(Monitor CloudWatch Events)**에서 확인란을 선택합니다.

1. 선택한 애플리케이션에 문제가 감지될 때 이를 확인하고 알림을 받으려면 **Integrate with AWS Systems Manager OpsCenter**(AWS Systems Manager OpsCenter와 통합)에서 **Generate OpsCenter OpsItems for remedial actions**(수정 조치를 위해 OpsCenter OpsItems 생성) 옆의 확인란을 선택합니다. AWS 리소스와 관련된 운영 작업 항목(OpsItem)을 해결하기 위해 수행된 작업을 추적하려면 SNS 주제 ARN을 제공합니다.

1. 태그를 입력하면(선택 사항) 리소스를 식별하고 구성하는 데 도움이 됩니다. CloudWatch Application Insights는 태그 기반 및 CloudFormation 스택 기반 리소스 그룹을 모두 지원합니다(Application Auto Scaling 그룹 제외). 자세한 내용은 *AWS Resource Groups 및 태그 사용 설명서*에서 [Tag Editor](https://docs.aws.amazon.com/ARG/latest/userguide/tag-editor.html)를 참조하세요.

1. **다음(Next)**을 선택해 모니터링을 계속 설정합니다.

1. **탐지된 구성 요소 검토** 페이지에는 CloudWatch 애플리케이션 인사이트에서 자동으로 탐지된 모니터링되는 구성 요소와 해당 워크로드가 나열됩니다.
**참고**  
탐지된 SAP ASE 고가용성 워크로드가 포함된 구성 요소는 구성 요소에서 하나의 워크로드만 지원합니다. 탐지된 SAP ASE 단일 노드 워크로드가 포함된 구성 요소는 여러 워크로드를 지원하지만 워크로드를 추가하거나 제거할 수는 없습니다. 자동으로 탐지된 모든 워크로드가 모니터링됩니다.

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

1. **구성 요소 세부 정보 지정** 페이지에서 SAP ASE 데이터베이스의 사용자 이름과 암호를 입력합니다.

1. 애플리케이션 모니터링 구성을 검토하고 **제출**을 선택합니다.

1. **애플리케이션 요약**, **모니터링되는 구성 요소 및 워크로드**와 **모니터링되지 않는 구성 요소 및 워크로드** 목록을 확인할 수 있는 애플리케이션 세부 정보 페이지가 열립니다. 구성 요소 또는 워크로드 옆에 있는 라디오 버튼을 선택하면 **구성 기록**, **로그 패턴**, 사용자가 생성한 모든 **태그**를 확인할 수 있습니다. 구성을 제출하면 계정에서 SAP ASE 시스템에 대한 모든 지표 및 경보를 배포하며 최대 2시간이 걸릴 수 있습니다.

## SAP ASE 데이터베이스 모니터링 관리
<a name="appinsights-tutorial-sap-ase-manage"></a>

다음 단계를 수행해 SAP ASE 데이터베이스에 대한 사용자 자격 증명, 지표 및 로그 경로를 관리할 수 있습니다.

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

1. 왼쪽 탐색 창의 **인사이트(Insights)**에서 **Application Insights**를 선택합니다.

1. **Application Insights** 페이지에는 Application Insights를 사용하여 모니터링되는 애플리케이션 목록과 각 애플리케이션의 모니터링 상태가 표시됩니다.

1. **모니터링되는 구성 요소(Monitored components)**에서 구성 요소 이름 옆에 있는 라디오 버튼을 선택합니다. 다음으로 **모니터링 관리(Manage monitoring)**를 선택합니다.

1. **EC2 인스턴스 그룹 로그(EC2 instance group logs)**에서 기존 로그 경로, 로그 패턴 세트 및 로그 그룹 이름을 업데이트할 수 있습니다. 또한 **애플리케이션 로그(Application logs)**를 3개까지 추가할 수 있습니다.

1. **지표**에서 요구 사항에 따라 SAP ASE 지표를 선택할 수 있습니다. SAP ASE 지표 이름에는 `asedb` 접두사가 붙습니다. 구성 요소당 60개까지 지표를 추가할 수 있습니다.

1. **ASE 구성**에서 SAP ASE 데이터베이스의 사용자 이름과 암호를 입력합니다. Amazon CloudWatch 에이전트가 SAP ASE 데이터베이스에 연결하는 데 사용하는 사용자 이름과 암호입니다.

1. **사용자 지정 경보(Custom alarms)**에서 CloudWatch Application Insights를 통해 모니터링할 경보를 추가할 수 있습니다.

1. 애플리케이션 모니터링 구성을 검토하고 **제출(Submit)**을 선택합니다. 구성을 제출하면 계정에서 SAP HANA 시스템에 대한 모든 지표 및 경보를 업데이트하며 최대 2시간이 걸릴 수 있습니다.

## 경보 임곗값 구성
<a name="appinsights-tutorial-sap-hana-configure-alarm-threshold"></a>

CloudWatch Application Insights는 감시하는 경보에 대한 Amazon CloudWatch 지표를 해당 지표에 대한 임곗값과 함께 자동으로 생성합니다. 지표가 평가 기간에 지정된 수에 대한 임곗값을 초과한 경우 경보는 `ALARM ` 상태로 변경됩니다. 이러한 설정은 Application Insights에 의해 유지되지 않습니다.

단일 지표에 대한 경보를 편집하려면 다음 단계를 수행하세요.

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

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

1. CloudWatch Application Insights에서 자동으로 생성된 경보 옆에 있는 라디오 버튼을 선택합니다. 그런 다음, **작업(Actions)**을 선택하고 드롭다운 메뉴에서 **편집(Edit)**을 선택합니다.

1. **지표(Metric)**에서 다음 파라미터를 편집합니다.

   1. **통계(Statistic)**에서 통계 또는 사전 정의된 백분위 수 중 하나를 선택하거나 사용자 지정 백분위 수를 지정합니다. 예를 들어 `p95.45`입니다.

   1. **기간(Period)**에서 경보에 대한 평가 기간을 선택합니다. 경보를 평가할 때 각 기간이 하나의 데이터 포인트로 집계됩니다.

1. **조건(Conditions)**에서 다음 파라미터를 편집합니다.

   1. 지표가 임곗값보다 크거나, 작거나, 같아야 하는지 여부를 선택합니다.

   1. 임곗값을 지정합니다.

1. **추가 구성(Additional configuration)**에서 다음 파라미터를 편집합니다.

   1. **경보에 대한 데이터 포인트(Datapoints to alarm)**에서 데이터 포인트 수 또는 평가 기간을 지정합니다. 경보를 시작하려면 `ALARM` 상태여야 합니다. 두 값이 일치하면 지정된 연속 기간 수를 초과한 경우 `ALARM` 상태가 되는 경보가 생성됩니다. `n` 중 `m` 경보를 생성하려면 두 번째 값에 지정한 값보다 낮은 값을 첫 번째 값에 지정합니다. 경보 평가에 관한 자세한 내용은 [Evaluating an alarm](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Alarms.html#alarm-evaluation)을 참조하세요.

   1. **누락 데이터 처리**에서 일부 데이터 포인트가 누락된 경우 경보 동작을 선택합니다. 누락 데이터 처리에 대한 자세한 내용은 [CloudWatch 경보가 누락 데이터를 처리하는 방법 구성](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Alarms.html#alarms-and-missing-data)을 참조하세요.

   1. 경보가 모니터링된 통계 값으로 백분위수를 사용하는 경우에는 **샘플이 부족한 백분위수** 상자가 표시됩니다. 샘플 비율이 낮은 사례를 평가 또는 무시할지 여부를 선택합니다. **ignore (maintain alarm state)(무시(경보 상태 유지))**를 선택하면 샘플 크기가 너무 작을 때 현재 경보 상태가 항상 유지됩니다. 작은 샘플 크기의 백분위 수에 대한 자세한 내용은 [백분위수 기반 경보 및 데이터 샘플 부족](percentiles-with-low-samples.md) 섹션을 참조하세요.

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

1. **알림(Notification)**에서 경보가 `ALARM` 상태, `OK` 상태 또는 `INSUFFICIENT_DATA` 상태일 때 알릴 SNS 주제를 선택합니다.

1. **경보 업데이트(Update alarm)**을 선택합니다.

## Application Insights에서 감지한 SAP ASE 문제 확인 및 해결
<a name="appinsights-tutorial-sap-ase-troubleshooting-problems"></a>

이 섹션에서는 Application Insights에서 SAP ASE에 대한 모니터링을 구성할 때 발생하는 일반적인 문제를 해결하는 데 도움이 됩니다.

**SAP ASE 백업 서버 오류**  
동적으로 생성된 대시보드를 확인하여 오류 메시지를 식별할 수 있습니다. 대시보드에는 SAP ASE 백업 서버에 보고된 오류 메시지가 표시됩니다. SAP ASE 백업 서버 로그에 대한 자세한 내용은 [SAP 설명서 백업 서버 오류 로깅](https://help.sap.com/docs/SAP_ASE/aa939a27edb34f019f71cc47b9c0fd9a/a7aeb8b1bc2b10149ccf99b95687a64c.html)을 참조하세요.

**SAP ASE 장기 실행 트랜잭션**  
장기 실행 트랜잭션을 식별하고 중지할 수 있는지 또는 실행 시간이 의도적으로 발생했는지 확인합니다. 자세한 내용은 [2180410 - 장기 실행 트랜잭션의 트랜잭션 로그 기록을 표시하는 방법을 참조하세요 — SAP ASE](https://userapps.support.sap.com/sap/support/knowledge/en/2180410)

**SAP ASE 사용자 연결**  
데이터베이스에서 실행하려는 워크로드에 맞게 SAP ASE 데이터베이스 크기가 조정되었는지 검토합니다. 자세한 내용은 SAP 설명서의 [사용자 연결 구성](https://help.sap.com/docs/help/061ec8a5739842df9e505d8944fae8e2/9ea258fceaaa496eb80e17d3d5694ff6.html)을 참조하세요.

**SAP ASE 디스크 공간**  
동적으로 생성된 대시보드를 확인하여 문제를 일으키는 데이터베이스 계층을 식별할 수 있습니다. 대시보드에는 관련 지표와 로그 파일 스니펫이 표시됩니다. 디스크 증가의 원인을 파악하고 해당하는 경우 물리적 디스크 크기, 할당된 디스크 공간 또는 둘 다를 늘리는 것이 중요합니다. 자세한 내용은 SAP 설명서의 [SAP 설명서 디스크 크기 조정](https://help.sap.com/docs/SAP_ASE/e0d4539d39c34f52ae9ef822c2060077/ab22db00bc2b1014ad3ce047bbf117d7.html)을 참조하세요.

## SAP ASE에 대한 Application Insights 문제 해결
<a name="appinsights-tutorial-sap-ase-troubleshooting-health-dashboard"></a>

이 섹션에서는 Application Insights 대시보드에서 반환하는 일반적인 오류를 해결하는 데 도움이 되는 단계를 제공합니다.


| 오류 | 반환된 오류 | 근본 원인 | 해결 방법 | 
| --- | --- | --- | --- | 
|  60개 이상의 모니터 지표를 추가할 수 없습니다.  |  `Component cannot have more than 60 monitored metric`  |  현재 지표 제한은 구성 요소당 모니터링 지표 60개입니다.  |  한도를 준수하려면 불필요한 지표를 제거합니다.  | 
|  온보딩 프로세스 후에는 SAP 지표 또는 경보가 표시되지 않습니다  |  AWS Systems Manager에서 `AWS-ConfigureAWSPackage`에 대한 `run` 명령이 실패했습니다. 출력값은 다음 오류를 보여줍니다. `CT-LIBRARY error:``ct_connect(): protocol specific layer: external error: The attempt to connect to the server failed`   |  사용자 이름과 암호가 올바르지 않을 수 있습니다.  |  사용자 이름과 암호가 유효한지 확인하고 온보딩 프로세스를 다시 실행합니다.  | 

# 자습서: SAP HANA에 대한 모니터링 설정
<a name="appinsights-tutorial-sap-hana"></a>

이 자습서에서는 SAP HANA 데이터베이스에 대한 모니터링을 설정하도록 CloudWatch Application Insights를 구성하는 방법을 보여줍니다. CloudWatch Application Insights 자동 대시보드를 사용하여 문제 세부 정보를 시각화하고, 문제 해결을 가속화하고, SAP HANA 데이터베이스의 평균 해결 시간(MTTR)을 단축할 수 있습니다.

**Topics**
+ [지원 환경](#appinsights-tutorial-sap-hana-supported-environments)
+ [지원되는 운영 체제](#appinsights-tutorial-sap-hana-supported-os)
+ [특성](#appinsights-tutorial-sap-hana-features)
+ [사전 조건](#appinsights-tutorial-sap-hana-prerequisites)
+ [모니터링 설정](#appinsights-tutorial-sap-hana-set-up)
+ [모니터링 관리](#appinsights-tutorial-sap-hana-manage)
+ [감지된 문제 해결](#appinsights-tutorial-sap-hana-troubleshooting)
+ [이상 탐지](#appinsights-tutorial-sap-hana-troubleshooting-anomaly-detection)
+ [Application Insights 문제 해결](#appinsights-tutorial-sap-hana-troubleshooting-health-dashboard)

## 지원 환경
<a name="appinsights-tutorial-sap-hana-supported-environments"></a>

CloudWatch Application Insights는 다음 시스템 및 패턴에 대한 AWS 리소스 배포를 지원합니다. SAP HANA 데이터베이스 소프트웨어 및 지원되는 SAP 애플리케이션 소프트웨어를 제공 및 설치합니다.
+ **단일 Amazon EC2 인스턴스의 SAP HANA 데이터베이스**: 최대 24TB 메모리를 갖춘 단일 노드 확장 아키텍처의 SAP HANA.
+ **여러 Amazon EC2 인스턴스의 SAP HANA 데이터베이스**: 다중 노드 확장 아키텍처의 SAP HANA
+ **교차 AZ SAP HANA 데이터베이스 고가용성 설정**: SUSE/RHEL 클러스터링을 사용한 2개의 가용 영역에 구성된 고가용성 SAP HANA

**참고**  
CloudWatch Application Insights는 단일 SID HANA 환경만 지원합니다. 여러 HANA SID가 연결된 경우, 첫 번째로 감지된 SID에 대해서만 모니터링이 설정됩니다.

## 지원되는 운영 체제
<a name="appinsights-tutorial-sap-hana-supported-os"></a>

SAP HANA용 CloudWatch Application Insights는 다음 운영 체제에 대한 x86-64 아키텍처를 지원합니다.
+ SAP용 SuSE Linux 12 SP4
+ SAP용 SuSE Linux 12 SP5
+ SuSE Linux 15
+ SuSE Linux 15 SP1
+ SuSE Linux 15 SP2
+ SAP용 SuSE Linux 15
+ SAP용 SuSE Linux 15 SP1
+ SAP용 SuSE Linux 15 SP2
+ SAP용 SuSE Linux 15 SP3
+ SAP용 SuSE Linux 15 SP4
+ SAP용 SuSE Linux 15 SP5
+ 고가용성 및 업데이트 서비스를 제공하는 SAP용 RedHat 리눅스 8.6
+ 고가용성 및 업데이트 서비스를 제공하는 SAP용 RedHat 리눅스 8.5
+ 고가용성 및 업데이트 서비스를 제공하는 SAP용 RedHat 리눅스 8.4
+ 고가용성 및 업데이트 서비스를 제공하는 SAP용 RedHat 리눅스 8.3
+ 고가용성 및 서비스 업데이트를 제공하는 SAP용 RedHat 리눅스 8.2
+ 고가용성 및 서비스 업데이트를 제공하는 SAP용 RedHat 리눅스 8.1
+ 고가용성 및 서비스 업데이트를 제공하는 SAP용 RedHat 리눅스 7.9

## 특성
<a name="appinsights-tutorial-sap-hana-features"></a>

SAP HANA용 CloudWatch Application Insights는 다음과 같은 기능을 제공합니다.
+ SAP HANA 워크로드 자동 감지 
+ 정적 임곗값을 기반으로 한 SAP HANA 경보 자동 생성
+ 이상 탐지를 기반으로 한 SAP HANA 경보 자동 생성
+ SAP HANA 로그 패턴 자동 인식 
+ SAP HANA 상태 대시보드
+ SAP HANA 문제 대시보드

## 사전 조건
<a name="appinsights-tutorial-sap-hana-prerequisites"></a>

CloudWatch Application Insights로 SAP HANA 데이터베이스를 구성하려면 다음 사전 조건을 수행해야 합니다.
+ **SAP HANA** - 실행 및 연결 가능한 SAP HANA 데이터베이스 2.0 SPS05를 Amazon EC2 인스턴스에 설치합니다.
+ **SAP HANA 데이터베이스 사용자** - SYSTEM 데이터베이스 및 모든 테넌트에서 모니터링 역할이 있는 데이터베이스 사용자를 만들어야 합니다.

**예제**  
다음 SQL 명령을 실행하여 모니터링 역할이 있는 사용자를 생성합니다.

  ```
  su - <sid>adm
  hdbsql -u SYSTEM -p <SYSTEMDB password> -d SYSTEMDB
  CREATE USER CW_HANADB_EXPORTER_USER PASSWORD <Monitoring user password> NO FORCE_FIRST_PASSWORD_CHANGE;
  CREATE ROLE CW_HANADB_EXPORTER_ROLE;
  GRANT MONITORING TO CW_HANADB_EXPORTER_ROLE;
  GRANT CW_HANADB_EXPORTER_ROLE TO CW_HANADB_EXPORTER_USER;
  ```
+ **Python 3.8** - 운영 체제에 Python 3.8 이상 버전을 설치합니다. 최신 릴리스의 Python을 사용하세요. 운영 체제에 Python3이 감지되지 않으면 Python 3.6이 설치됩니다.

  자세한 내용은 [installation example](#install)을 참조하세요.
**참고**  
SuSE Linux 15 SP4, RedHat Linux 8.6 이상 운영 체제에서는 Python 3.8 이상을 수동으로 설치해야 합니다.
+ **Pip3** - 운영 체제에 설치 프로그램 pip3를 설치합니다. 운영 체제에 pip3가 감지되지 않으면 pip3가 설치됩니다.
+ **hdbclient** - CloudWatch Application Insights는 Python 드라이버를 사용하여 SAP HANA 데이터베이스에 연결합니다. 클라이언트가 python3에 설치되어 있지 않은 경우 `/hana/shared/SID/hdbclient/`에서 hdbclient tar 파일 버전이 `2.10 or later`인지 확인합니다.
+ **Amazon CloudWatch 에이전트** - Amazon EC2 인스턴스에서 기존 CloudWatch 에이전트를 실행하고 있지 않은지 확인합니다. CloudWatch 에이전트트를 설치한 경우 병합 충돌을 방지하려면 Application Insights에서 사용 중인 리소스 구성을 기존 CloudWatch 에이전트 구성 파일에서 제거하세요. 자세한 내용은 [수동으로 CloudWatch 에이전트 구성 파일 생성 또는 편집](CloudWatch-Agent-Configuration-File-Details.md) 섹션을 참조하세요.
+ **AWS Systems Manager 사용 설정** - 인스턴스에 SSM Agent를 설치하고 인스턴스에서 SSM을 활성화해야 합니다. SSM Agent를 설치하는 방법에 대한 자세한 내용은 **AWS Systems Manager 사용 설명서에서 [SSM Agent 작업](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent.html)을 참조하세요.
+ **Amazon EC2 인스턴스 역할** - 데이터베이스를 구성하려면 다음 Amazon EC2 인스턴스 역할을 연결해야 합니다.
  + Systems Manager를 사용 설정하려면 `AmazonSSMManagedInstanceCore` 역할을 연결해야 합니다. 자세한 내용은 [AWS Systems Manager 자격 증명 기반 정책 예제](https://docs.aws.amazon.com/systems-manager/latest/userguide/auth-and-access-control-iam-identity-based-access-control.html)를 참조하세요.
  + CloudWatch를 통해 내보낼 인스턴스 지표 및 로그를 사용 설정하려면 `CloudWatchAgentServerPolicy`를 연결해야 합니다. 자세한 내용은 [CloudWatch 에이전트와 함께 사용하기 위한 IAM 역할 및 사용자 생성](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/create-iam-roles-for-cloudwatch-agent.html)을 참조하세요.
  + AWS Secrets Manager에 저장된 암호를 읽으려면 다음 IAM 인라인 정책을 Amazon EC2 인스턴스 역할에 연결해야 합니다. 인라인 정책에 대한 자세한 내용은 *AWS Identity and Access Management 사용 설명서*에서 [인라인 정책 ](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html)을 참조하세요.

------
#### [ JSON ]

****  

    ```
    {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
                "Sid": "VisualEditor0",
                "Effect": "Allow",
                "Action": [
                    "secretsmanager:GetSecretValue"
                ],
                "Resource": "arn:aws:secretsmanager:*:*:secret:ApplicationInsights-*"
            }
        ]
    }
    ```

------
+ **AWS Resource Groups** - CloudWatch Application Insights에 애플리케이션을 온보딩하려면 애플리케이션 스택에 사용되는 연결된 모든 AWS 리소스를 포함하는 리소스 그룹을 생성해야 합니다. 여기에는 SAP HANA 데이터베이스를 실행하는 Amazon EC2 인스턴스와 Amazon EBS 볼륨이 포함됩니다. 계정당 데이터베이스가 여러 개인 경우, 각 SAP HANA 데이터베이스 시스템에 대한 AWS 리소스를 포함하는 하나의 리소스 그룹을 생성하는 것이 좋습니다.
+ **IAM 권한** - 관리자가 아닌 사용자의 경우:
  +  서비스 연결 역할을 생성하고 이를 사용자 자격 증명에 연결할 수 있도록 Application Insights를 허용하는 AWS Identity and Access Management (IAM) 정책을 생성해야 합니다. 정책 연결 단계에 대해서는 [CloudWatch Application Insights에 대한 IAM 정책](appinsights-iam.md) 섹션을 참조하세요.
  + 사용자가 데이터베이스 사용자 자격 증명을 저장하려면 AWS Secrets Manager에 보안 암호를 생성할 수 있는 권한이 있어야 합니다. 자세한 내용은 [예: 보안 암호 생성 권한](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access_examples.html#auth-and-access_examples_create)을 참조하세요.

------
#### [ JSON ]

****  

    ```
    {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "secretsmanager:CreateSecret"
          ],
          "Resource": "arn:aws:secretsmanager:*:*:secret:ApplicationInsights-*"
        }
      ]
    }
    ```

------
+ **서비스 연결 역할** - Application Insights는 AWS Identity and Access Management(IAM) 서비스 연결 역할을 사용합니다. 서비스 연결 역할은 Application Insights 관리 콘솔에서 첫 번째 Application Insights 애플리케이션을 생성할 때 생성됩니다. 자세한 내용은 [CloudWatch Application Insights에 서비스 연결 역할 사용](CHAP_using-service-linked-roles-appinsights.md) 섹션을 참조하세요.

## 모니터링을 위해 SAP HANA 데이터베이스 설정
<a name="appinsights-tutorial-sap-hana-set-up"></a>

SAP HANA 데이터베이스에 대한 모니터링을 설정하려면 다음 단계를 수행하세요.

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

1. 왼쪽 탐색 창의 **인사이트(Insights)**에서 **Application Insights**를 선택합니다.

1. **Application Insights** 페이지에는 Application Insights를 사용하여 모니터링되는 애플리케이션 목록과 각 애플리케이션의 모니터링 상태가 표시됩니다. 오른쪽 상단 모서리에서 **애플리케이션 추가(Add an application)**를 선택합니다.

1. **애플리케이션 세부 정보 지정(Specify application details)** 페이지에서 **리소스 그룹(Resource group)**의 드롭다운 목록에 있는 SAP HANA 데이터베이스 리소스를 포함하는 AWS 리소스 그룹을 선택합니다. 애플리케이션에 대한 리소스 그룹을 생성하지 않은 경우 **리소스 그룹(Resource group)** 드롭다운에서 **새 리소스 그룹 생성(Create new resource group)**을 선택해 생성할 수 있습니다. 리소스 그룹 생성에 대한 자세한 내용은 [https://docs.aws.amazon.com/ARG/latest/userguide/resource-groups.html](https://docs.aws.amazon.com/ARG/latest/userguide/resource-groups.html)를 참조하세요.

1. Amazon EBS, Amazon EC2, AWS CodeDeploy, Amazon ECS, AWS Health API 및 알림, Amazon RDS, Amazon S3, AWS Step Functions로부터 인사이트를 얻기 위해 Application Insights 모니터링을 CloudWatch Events와 통합하려면 **CloudWatch Events 모니터링(Monitor CloudWatch Events)**에서 확인란을 선택합니다.

1. 선택한 애플리케이션에 문제가 감지될 때 이를 확인하고 알림을 받으려면 **Integrate with AWS Systems Manager OpsCenter**(AWS Systems Manager OpsCenter와 통합)에서 **Generate OpsCenter OpsItems for remedial actions**(수정 조치를 위해 OpsCenter OpsItems 생성) 옆의 확인란을 선택합니다. AWS 리소스와 관련된 운영 작업 항목(OpsItem)을 해결하기 위해 수행된 작업을 추적하려면 SNS 주제 ARN을 제공합니다.

1. 태그를 입력하면(선택 사항) 리소스를 식별하고 구성하는 데 도움이 됩니다. CloudWatch Application Insights는 태그 기반 및 CloudFormation 스택 기반 리소스 그룹을 모두 지원합니다(Application Auto Scaling 그룹 제외). 자세한 내용은 *AWS Resource Groups 및 태그 사용 설명서*에서 [Tag Editor](https://docs.aws.amazon.com/ARG/latest/userguide/tag-editor.html)를 참조하세요.

1. **다음(Next)**을 선택해 모니터링을 계속 설정합니다.

1. **탐지된 구성 요소 검토** 페이지에는 CloudWatch 애플리케이션 인사이트에서 자동으로 탐지된 모니터링되는 구성 요소와 해당 워크로드가 나열됩니다.

   1. 탐지된 SAP HANA 단일 노드 워크로드가 포함된 구성 요소에 워크로드를 추가하려면 구성 요소를 선택한 다음 **구성 요소 편집**을 선택합니다.
**참고**  
탐지된 SAP HANA 다중 노드 또는 HANA 고가용성 워크로드가 포함된 구성 요소는 구성 요소에서 하나의 워크로드만 지원합니다.  
![\[CloudWatch Application Insights 콘솔의 모니터링 페이지에 대한 구성 요소 검토: 편집할 구성 요소를 선택합니다.\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/appinsights-multiapp-hana-review.png)

   1. 새 워크로드를 추가하려면 **새 워크로드 추가**를 선택합니다.  
![\[CloudWatch Application Insights 콘솔의 구성 요소 편집 섹션: 왼쪽 하단 버튼을 선택하여 워크로드를 추가합니다.\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/appinsights-multiapp-hana-edit.png)

   1. 워크로드 편집을 마쳤으면 **변경 사항 저장**을 선택합니다.

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

1. **구성 요소 세부 정보 지정** 페이지에서 사용자 이름과 암호를 입력합니다.

1. 애플리케이션 모니터링 구성을 검토하고 **제출**을 선택합니다.

1. **애플리케이션 요약**, **모니터링되는 구성 요소 및 워크로드**와 **모니터링되지 않는 구성 요소 및 워크로드** 목록을 확인할 수 있는 애플리케이션 세부 정보 페이지가 열립니다. 구성 요소 또는 워크로드 옆에 있는 라디오 버튼을 선택하면 **구성 기록**, **로그 패턴**, 사용자가 생성한 모든 **태그**를 확인할 수 있습니다. 구성을 제출하면 계정에서 SAP HANA 시스템에 대한 모든 지표 및 경보를 배포하며 최대 2시간이 걸릴 수 있습니다.

## SAP HANA 데이터베이스 모니터링 관리
<a name="appinsights-tutorial-sap-hana-manage"></a>

다음 단계를 수행해 SAP HANA 데이터베이스에 대한 사용자 자격 증명, 지표 및 로그 경로를 관리할 수 있습니다.

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

1. 왼쪽 탐색 창의 **인사이트(Insights)**에서 **Application Insights**를 선택합니다.

1. **Application Insights** 페이지에는 Application Insights를 사용하여 모니터링되는 애플리케이션 목록과 각 애플리케이션의 모니터링 상태가 표시됩니다.

1. **모니터링되는 구성 요소(Monitored components)**에서 구성 요소 이름 옆에 있는 라디오 버튼을 선택합니다. 다음으로 **모니터링 관리(Manage monitoring)**를 선택합니다.

1. **EC2 인스턴스 그룹 로그(EC2 instance group logs)**에서 기존 로그 경로, 로그 패턴 세트 및 로그 그룹 이름을 업데이트할 수 있습니다. 또한 **애플리케이션 로그(Application logs)**를 3개까지 추가할 수 있습니다.

1. **지표(Metrics)**에서 요구 사항에 따라 SAP HANA 지표를 선택할 수 있습니다. SAP HANA 지표 이름에는 `hanadb` 접두사가 붙습니다. 구성 요소당 40개까지 지표를 추가할 수 있습니다.

1. **HANA 구성(HANA configuration)**에서 SAP HANA 데이터베이스의 암호와 사용자 이름을 입력합니다. Amazon CloudWatch 에이전트가 SAP HANA 데이터베이스에 연결하는 데 사용하는 사용자 이름 및 암호입니다.

1. **사용자 지정 경보(Custom alarms)**에서 CloudWatch Application Insights를 통해 모니터링할 경보를 추가할 수 있습니다.

1. 애플리케이션 모니터링 구성을 검토하고 **제출(Submit)**을 선택합니다. 구성을 제출하면 계정에서 SAP HANA 시스템에 대한 모든 지표 및 경보를 업데이트하며 최대 2시간이 걸릴 수 있습니다.

## CloudWatch Application Insights에서 감지한 SAP HANA 문제 보기 및 해결
<a name="appinsights-tutorial-sap-hana-troubleshooting"></a>

다음 섹션에서는 Application Insights에서 SAP HANA에 대한 모니터링을 구성할 때 발생하는 일반적인 문제 해결 시나리오를 해결하는 데 도움이 되는 단계를 제공합니다.

**Topics**
+ [SAP HANA 데이터베이스가 메모리 할당 한도에 도달](#appinsights-tutorial-sap-hana-troubleshooting-memory)
+ [디스크 가득 참 이벤트](#appinsights-tutorial-sap-hana-troubleshooting-disk-full)
+ [SAP HANA 백업 실행 중지](#appinsights-tutorial-sap-hana-troubleshooting-backup-stopped)

### SAP HANA 데이터베이스가 메모리 할당 한도에 도달
<a name="appinsights-tutorial-sap-hana-troubleshooting-memory"></a>

**설명**  
메모리 압력이 높으면 SAP HANA 데이터베이스가 지원하는 SAP 애플리케이션이 제대로 작동하지 않고 이는 애플리케이션 성능 저하로 이어집니다.

**해결 방법**  
동적으로 생성된 대시보드에서 관련 지표 및 로그 파일 조각을 확인하여 문제를 일으키는 애플리케이션 계층을 식별할 수 있습니다. 다음 예제를 보면 문제는 SAP HANA 시스템의 큰 데이터 로드 때문일 수 있습니다.

![\[메모리 할당 초과.\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/appinsights-memory-allocation-1.png)


사용된 메모리 할당이 총 메모리 할당 제한의 80% 임곗값을 초과합니다.

![\[메모리 부족을 표시하는 로그 그룹.\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/appinsights-memory-allocation-2.png)


로그 그룹에 메모리 부족이 발생한 `BNR-DATA` 체계 및 `IMDBMASTER_30003` 테이블이 표시됩니다. 또한 로그 그룹에는 문제가 발생한 정확한 시간, 현재 글로벌 위치 제한, 공유 메모리, 코드 크기 및 OOM 예약 할당 크기가 표시됩니다.

![\[로그 그룹 텍스트.\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/appinsights-memory-allocation-3.png)


### 디스크 가득 참 이벤트
<a name="appinsights-tutorial-sap-hana-troubleshooting-disk-full"></a>

**설명**  
SAP HANA 데이터베이스가 지원하는 SAP 애플리케이션이 응답하지 않아 데이터베이스에 액세스할 수 없게 됩니다.

**해결 방법**  
동적으로 생성된 대시보드에서 관련 지표 및 로그 파일 조각을 확인하여 문제를 일으키는 데이터베이스 계층을 식별할 수 있습니다. 다음 예를 보면 관리자가 자동 로그 백업을 활성화하지 못해서 sap/hana/log 디렉터리가 채워지는 문제가 발생할 수 있습니다.

![\[메모리 부족을 표시하는 로그 그룹.\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/appinsights-disk-full-1.png)


문제 대시보드의 로그 그룹 위젯에 `DISKFULL` 이벤트를 표시합니다.

![\[메모리 부족을 표시하는 로그 그룹.\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/appinsights-disk-full-2.png)


### SAP HANA 백업 실행 중지
<a name="appinsights-tutorial-sap-hana-troubleshooting-backup-stopped"></a>

**설명**  
SAP HANA 데이터베이스가 지원하는 SAP 애플리케이션의 작동이 중지되었습니다.

**해결 방법**  
동적으로 생성된 대시보드에서 관련 지표 및 로그 파일 조각을 확인하여 문제를 일으키는 데이터베이스 계층을 식별할 수 있습니다.

문제 대시보드의 로그 그룹 위젯에 `ACCESS DENIED` 이벤트를 표시합니다. 여기에는 S3 버킷, S3 버킷 폴더 및 S3 버킷 리전 등의 추가 정보가 포함됩니다.

![\[메모리 부족을 표시하는 로그 그룹.\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/appinsights-backup-stopped-2.png)


## SAP HANA를 위한 이상 탐지
<a name="appinsights-tutorial-sap-hana-troubleshooting-anomaly-detection"></a>

스레드 수와 같은 특정 SAP HANA 지표의 경우 CloudWatch는 통계 및 기계 학습 알고리즘을 적용해 임곗값을 정의합니다. 이러한 알고리즘은 SAP HANA 데이터베이스 지표를 지속적으로 분석하고, 정상 기준을 결정하며, 최소한의 사용자 개입으로 이상을 나타냅니다. 알고리즘은 이상 탐지 모델을 생성해 정상 지표 동작을 나타내는 예상 값 범위를 생성합니다.

이상 탐지 알고리즘은 지표의 계절성 및 추세 변화를 설명합니다. 계절성 변화는 다음 SAP HANA CPU 사용량 예제에서 볼 수 있듯이 시간별, 일별 또는 주별일 수 있습니다.

![\[메모리 부족을 표시하는 로그 그룹.\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/appinsights-anomaly-detection.png)


모델을 생성한 후 CloudWatch 이상 탐지는 지속적으로 모델을 평가하며 모델이 가능한 한 정확성을 유지하도록 조정합니다. 여기에는 시간 경과에 따라 지표 값이 변화하거나 급격한 변화가 발생할 경우 조정하도록 모델을 재교육하는 작업이 포함됩니다. 또한 계절성이거나, 급증하거나, 희소한 지표에 대한 모형을 개선하기 위한 예측 변수도 포함됩니다.

## SAP HANA에 대한 Application Insights 문제 해결
<a name="appinsights-tutorial-sap-hana-troubleshooting-health-dashboard"></a>

이 섹션에서는 Application Insights 대시보드에서 반환하는 일반적인 오류를 해결하는 데 도움이 되는 단계를 제공합니다.

### 60개를 초과하는 모니터링 지표를 추가할 수 없음
<a name="cant-add-greater-sixty-metrics"></a>

출력은 다음 오류를 보여줍니다.

```
Component cannot have more than 60 monitored metrics
```

**근본 원인** - 현재 지표 제한은 구성 요소당 모니터링 지표 60개입니다.

**​해결 방법** - 한도를 지키기 위해 필요하지 않은 지표를 제거합니다.

### 온보딩 프로세스 이후 표시되는 SAP 지표 없음
<a name="no-sap-metrics-appear"></a>

다음 정보를 사용하여 온보딩 프로세스 후 SAP 지표가 대시보드에 표시되지 않는 이유를 확인합니다. 첫 번째 단계는 Amazon EC2 인스턴스의 AWS Management Console 또는 익스포터 로그를 사용하여 SAP 지표가 표시되지 않는 이유를 해결하는 것입니다. 다음으로 오류 출력을 검토하여 해결 방법을 찾습니다.

#### 온보딩 이후 SAP 지표가 표시되지 않는 이유 해결
<a name="w2aac26c20c27c27b7b5"></a>

Amazon EC2 인스턴스의 AWS Management Console 또는 익스포터 로그를 사용하여 문제를 해결할 수 있습니다.

------
#### [ AWS Management Console ]

**콘솔을 사용하여 온보딩 이후 표시되는 SAP 지표가 없는 문제 해결**

1. [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/)에서 AWS Systems Manager 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **State Manager**를 선택합니다.

1. **연결**에서 문서 `AWSEC2-ApplicationInsightsCloudwatchAgentInstallAndConfigure`의 상태를 확인합니다. 상태가 `Failed`인 경우 **실행 ID**에서 실패한 ID를 선택하고 출력을 확인합니다.

1. **연결**에서 문서 `AWS-ConfigureAWSPackage`의 상태를 확인합니다. 상태가 `Failed`인 경우 **실행 ID**에서 실패한 ID를 선택하고 출력을 확인합니다.

------
#### [ Exporter logs from Amazon EC2 instance ]

**익스포터 로그를 사용하여 온보딩 이후 표시되는 SAP 지표가 없는 문제 해결**

1. SAP HANA 데이터베이스가 실행 중인 Amazon EC2 인스턴스에 연결합니다.

1. <a name="step-find-short-name"></a>다음 명령을 사용하여 `WORKLOAD_SHORT_NAME`에 올바른 명명 규칙을 찾습니다. 다음 두 단계에서는 이 짧은 이름을 사용합니다.

   ```
   sudo systemctl | grep exporter
   ```
**참고**  
Application Insights는 실행 중인 워크로드에 따라 서비스 이름에 접미사 `WORKLOAD_SHORT_NAME`을 추가합니다. SAP HANA 단일 노드, 다중 노드 및 고가용성 배포에 대한 짧은 이름은 `HANA_SN`, `HANA_MN`, `HANA_HA`입니다.

1. 익스포터 관리자 서비스 로그에서 오류를 확인하려면 다음 명령을 실행하고 `WORKLOAD_SHORT_NAME`을 [Step 2](#step-find-short-name)에서 확인한 짧은 이름으로 바꿉니다.

   ```
   sudo journalctl -e --unit=prometheus-hanadb_exporter_manager_WORKLOAD_SHORT_NAME.service
   ```

1. 익스포터 관리자 서비스 로그에 오류가 표시되지 않는 경우 다음 명령을 실행하여 익스포터 서비스 로그에서 오류를 확인합니다.

   ```
   sudo journalctl -e --unit=prometheus-hanadb_exporter_WORKLOAD_SHORT_NAME.service
   ```

------

#### 온보딩 후 SAP 지표가 표시되지 않는 문제의 일반적인 근본 원인 해결
<a name="resolve-root-causes-sap-metrics"></a>

다음 예시는 온보딩 후 SAP 지표가 표시되지 않는 문제의 일반적인 근본 원인을 해결하는 방법을 설명합니다.
+ 출력은 다음 오류를 보여줍니다.

  ```
  Reading json config file path: /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.d/default ...
  Reading json config file path: /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.d/ssm_AmazonCloudWatch-ApplicationInsights-SSMParameterForTESTCWEC2INSTANCEi0d88867f1f3e36285.tmp ...
  2023/11/30 22:25:17 Failed to merge multiple json config files.
  2023/11/30 22:25:17 Failed to merge multiple json config files.
  2023/11/30 22:25:17 Under path : /metrics/append_dimensions | Error : Different values are specified for append_dimensions
  2023/11/30 22:25:17 Under path : /metrics/metrics_collected/disk | Error : Different values are specified for disk
  2023/11/30 22:25:17 Under path : /metrics/metrics_collected/mem | Error : Different values are specified for mem
  2023/11/30 22:25:17 Configuration validation first phase failed. Agent version: 1.0. Verify the JSON input is only using features supported by this version.
  ```

  **해결 방법** - Application Insights는 기존 CloudWatch 에이전트 구성 파일의 일부로 사전 구성된 것과 동일한 지표를 구성하려고 합니다. `/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.d/`에서 기존 파일을 제거하거나 기존 CloudWatch 에이전트 구성 파일에서 충돌을 일으키는 지표를 제거합니다.
+ 출력은 다음 오류를 보여줍니다.

  ```
  Unable to find a host with system database, for more info rerun using -v
  ```

  **해결 방법** - 사용자 이름, 암호 또는 데이터베이스 포트가 잘못되었을 수 있습니다. 사용자 이름, 암호 및 포트가 유효한지 확인하고 온보딩 프로세스를 다시 실행합니다.
+ 출력은 다음 오류를 보여줍니다.

  ```
  This hdbcli installer is not compatible with your Python interpreter
  ```

  **해결 방법** - Python 3.6의 경우 다음 예시와 같이 pip3와 wheel을 업그레이드합니다.

  ```
  python3.6 -m pip install --upgrade pip setuptools wheel
  ```
+ 출력은 다음 오류를 보여줍니다.

  ```
  Unable to install hdbcli using pip3. Please try to install it
  ```

  **해결 방법** - `hdbclient` 사전 조건을 따랐는지 확인하거나 pip3에서 `hdbclient`를 수동으로 설치합니다.
+ 출력은 다음 오류를 보여줍니다.

  ```
  Package 'boto3' requires a different Python: 3.6.15 not in '>= 3.7'
  ```

  **해결 방법** - 이 운영 체제 버전에는 Python 3.8 이상이 필요합니다. Python 3.8 사전 조건을 확인하고 설치합니다.
+ 출력에서 다음 설치 오류 중 하나를 보여줍니다.

  ```
  Can not execute `setup.py` since setuptools is not available in the build environment
  ```

  또는

  ```
  [SSL: CERTIFICATE_VERIFY_FAILED]
  ```

  **​해결 방법** - 다음 예시와 같이 SUSE Linux 명령을 사용하여 Python을 설치합니다. 다음 예시는 최신 버전의 [Python 3.8](https://www.python.org/downloads/)을 설치합니다.

  ```
  wget https://www.python.org/ftp/python/3.8.<LATEST_RELEASE>/Python-3.8.<LATEST_RELEASE>.tgz
  tar xf Python-3.*
  cd Python-3.*/
  sudo zypper install make gcc-c++ gcc automake autoconf libtool
  sudo zypper install zlib-devel
  sudo zypper install libopenssl-devel libffi-devel
  ./configure --with-ensurepip=install 
  sudo make
  sudo make install
  sudo su 
  python3.8 -m pip install --upgrade pip setuptools wheel
  ```

# 자습서: SAP NetWeaver에 대한 모니터링 설정
<a name="appinsights-tutorial-sap-netweaver"></a>

이 자습서에서는 SAP NetWeaver에 대한 모니터링을 설정하도록 Amazon CloudWatch Application Insights를 구성하는 방법을 보여줍니다. CloudWatch Application Insights 자동 대시보드를 사용하여 문제 세부 정보를 시각화하고, 문제 해결을 가속화하고, SAP NetWeaver 애플리케이션 서버의 평균 해결 시간(MTTR)을 줄일 수 있습니다.

**Topics**
+ [지원 환경](#appinsights-tutorial-sap-netweaver-supported-environments)
+ [지원되는 운영 체제](#appinsights-tutorial-sap-netweaver-supported-os)
+ [특성](#appinsights-tutorial-sap-netweaver-features)
+ [사전 조건](#appinsights-tutorial-sap-netweaver-prerequisites)
+ [모니터링 설정](#appinsights-tutorial-sap-netweaver-set-up)
+ [모니터링 관리](#appinsights-tutorial-sap-netweaver-manage)
+ [문제 해결](#appinsights-tutorial-sap-netweaver-troubleshooting)
+ [Application Insights 문제 해결](#appinsights-tutorial-sap-netweaver-troubleshooting-health-dashboard)

## 지원 환경
<a name="appinsights-tutorial-sap-netweaver-supported-environments"></a>

CloudWatch Application Insights는 다음 시스템 및 패턴에 대한 AWS 리소스 배포를 지원합니다.
+ **SAP NetWeaver 표준 시스템 배포.**
+ **여러 Amazon EC2 인스턴스에 SAP NetWeaver 분산 배포.**
+ **크로스 AZ SAP NetWeaver 데이터베이스 고가용성 설정**: SUSE/RHEL 클러스터링을 사용한 2개의 가용 영역에 구성된 고가용성 SAP NetWeaver.

## 지원되는 운영 체제
<a name="appinsights-tutorial-sap-netweaver-supported-os"></a>

CloudWatch Application Insights for SAP NetWeaver는 다음 운영 체제에서 지원됩니다.
+ Oracle Linux 8
+ Red Hat Enterprise Linux 7.6
+ Red Hat Enterprise Linux 7.7
+ Red Hat Enterprise Linux 7.9
+ Red Hat Enterprise Linux 8.1
+ Red Hat Enterprise Linux 8.2
+ Red Hat Enterprise Linux 8.4
+ Red Hat Enterprise Linux 8.6
+ SUSE Linux Enterprise Server 15 for SAP
+ SUSE Linux Enterprise Server 15 SP1 for SAP
+ SUSE Linux Enterprise Server 15 SP2 for SAP
+ SUSE Linux Enterprise Server 15 SP3 for SAP
+ SUSE Linux Enterprise Server 15 SP4 for SAP
+ SUSE Linux Enterprise Server 12 SP4 for SAP
+ SUSE Linux Enterprise Server 12 SP5 for SAP
+ SUSE Linux Enterprise Server 15(High Availability 패턴 제외)
+ SUSE Linux Enterprise Server 15 SP1(High Availability 패턴 제외)
+ SUSE Linux Enterprise Server 15 SP2(High Availability 패턴 제외)
+ SUSE Linux Enterprise Server 15 SP3(High Availability 패턴 제외)
+ SUSE Linux Enterprise Server 15 SP4(High Availability 패턴 제외)
+ SUSE Linux Enterprise Server 12 SP4(High Availability 패턴 제외)
+ SUSE Linux Enterprise Server 12 SP5(High Availability 패턴 제외)

## 특성
<a name="appinsights-tutorial-sap-netweaver-features"></a>

CloudWatch Application Insights for SAP NetWeaver 7.0x\$17.5x(ABAP Platform 포함)는 다음과 같은 기능을 제공합니다.
+ 자동 SAP NetWeaver 워크로드 탐지 
+ 정적 임계값을 기반으로 한 SAP NetWeaver 경보 자동 생성
+ SAP NetWeaver 로그 패턴 자동 인식 
+ SAP NetWeaver 상태 대시보드
+ SAP NetWeaver 문제 대시보드

## 사전 조건
<a name="appinsights-tutorial-sap-netweaver-prerequisites"></a>

CloudWatch Application Insights로 SAP NetWeaver를 구성하려면 다음 사전 조건을 수행해야 합니다.
+ **AWS Systems Manager 활성화** - Amazon EC2 인스턴스에 SSM Agent를 설치하고 SSM에 대해 인스턴스를 활성화합니다. SSM Agent를 설치하는 방법에 대한 자세한 내용은 *AWS Systems Manager 사용 설명서*의 [AWS Systems Manager 설정](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-setting-up.html)을 참조하세요.
+ **Amazon EC2 인스턴스 역할** - SAP NetWeaver 모니터링을 구성하려면 다음 Amazon EC2 인스턴스 역할을 연결해야 합니다.
  + Systems Manager를 사용 설정하려면 `AmazonSSMManagedInstanceCore` 역할을 연결해야 합니다. 자세한 내용은 [AWS Systems Manager 자격 증명 기반 정책 예제](https://docs.aws.amazon.com/systems-manager/latest/userguide/auth-and-access-control-iam-identity-based-access-control.html)를 참조하세요.
  + CloudWatch를 통해 인스턴스 지표 및 로그를 내보낼 수 있게 하려면 `CloudWatchAgentServerPolicy` 정책을 연결해야 합니다. 자세한 내용은 [CloudWatch 에이전트와 함께 사용하기 위한 IAM 역할 및 사용자 생성](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/create-iam-roles-for-cloudwatch-agent.html)을 참조하세요.
+ **AWS Resource Groups** - CloudWatch Application Insights에 애플리케이션을 온보딩하려면 애플리케이션 스택에 사용되는 연결된 모든 AWS 리소스를 포함하는 리소스 그룹을 생성해야 합니다. 여기에는 Amazon EC2 인스턴스, Amazon EFS 및 SAP NetWeaver 애플리케이션 서버를 실행하는 Amazon EBS 볼륨이 포함됩니다. 계정당 SAP NetWeaver 시스템이 여러 개인 경우, 각 SAP NetWeaver 시스템에 대한 AWS 리소스를 포함하는 하나의 리소스 그룹을 생성하는 것이 좋습니다. 리소스 그룹 생성에 대한 자세한 내용은 *[AWS Resource Groups 사용 설명서](https://docs.aws.amazon.com/ARG/latest/userguide/resource-groups.html)*를 참조하세요.
+ **IAM 권한** - 관리 액세스 권한이 없는 사용자의 경우 서비스 연결 역할을 생성하고 이를 사용자의 아이덴티티에 연결할 수 있도록 Application Insights를 허용하는 AWS Identity and Access Management(IAM) 정책을 생성해야 합니다. IAM 정책을 생성하는 방법에 대한 자세한 내용은 [IAM 정책](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/appinsights-iam.html)을 참조하세요.
+ **서비스 연결 역할** - Application Insights는 AWS Identity and Access Management(IAM) 서비스 연결 역할을 사용합니다. 서비스 연결 역할은 Application Insights 관리 콘솔에서 첫 번째 Application Insights 애플리케이션을 생성할 때 생성됩니다. 자세한 내용은 [CloudWatch Application Insights에 서비스 연결 역할 사용](CHAP_using-service-linked-roles-appinsights.md) 단원을 참조하십시오.
+ **Amazon CloudWatch 에이전트** – Application Insights가 CloudWatch 에이전트를 설치하고 구성합니다. CloudWatch 에이전트를 설치하면 Application Insights가 구성을 유지합니다. 병합 충돌을 방지하려면 Application Insights에서 사용하려는 리소스 구성을 기존 CloudWatch 에이전트 구성 파일에서 제거하세요. 자세한 내용은 [수동으로 CloudWatch 에이전트 구성 파일 생성 또는 편집](CloudWatch-Agent-Configuration-File-Details.md) 단원을 참조하십시오.

## 모니터링을 위해 SAP NetWeaver 애플리케이션 서버 설정
<a name="appinsights-tutorial-sap-netweaver-set-up"></a>

다음 단계에 따라 SAP NetWeaver 애플리케이션 서버에 대한 모니터링을 설정하세요.

**모니터링을 설정하려면 다음을 수행하세요.**

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

1. 왼쪽 탐색 창의 **Insights**(인사이트)에서 **Application Insights**를 선택합니다.

1. **Application Insights** 페이지에는 Application Insights를 사용하여 모니터링되는 애플리케이션 목록과 각 애플리케이션의 모니터링 상태가 표시됩니다. 오른쪽 상단 모서리에서 **Add an application**(애플리케이션 추가)을 선택합니다.

1. **Specify application details**(애플리케이션 세부 정보 지정) 페이지에서 **Resource group**(리소스 그룹)의 드롭다운 목록에 있는 SAP NetWeaver 리소스를 포함하는 생성한 AWS 리소스 그룹을 선택합니다. 애플리케이션에 대한 리소스 그룹을 생성하지 않은 경우 **Resource group**(리소스 그룹) 드롭다운 목록에서 **Create new resource group**(새 리소스 그룹 생성)을 선택해 생성할 수 있습니다.

1. **Automatic monitoring of new resources**(새로운 리소스 자동 모니터링) 확인란을 선택하여 Application Insight가 온보딩 후 애플리케이션의 리소스 그룹에 추가된 리소스를 자동으로 모니터링할 수 있게 합니다.

1. **Monitor EventBridge events**(EventBridge 이벤트 모니터링)에서 Application Insights 모니터링을 CloudWatch Events와 통합하려면 확인란을 선택하여 Amazon EBS, Amazon EC2, AWS CodeDeploy, Amazon ECS, AWS Health API 및 알림, Amazon RDS, Amazon S3, AWS Step Functions로부터 인사이트를 얻습니다.

1. 선택한 애플리케이션에 문제가 감지될 때 이를 확인하고 알림을 받으려면 **Integrate with AWS Systems Manager OpsCenter**(AWS Systems Manager OpsCenter와 통합)에서 **Generate OpsCenter OpsItems for remedial actions**(수정 조치를 위해 OpsCenter OpsItems 생성) 옆의 확인란을 선택합니다. AWS 리소스와 관련된 운영 작업 항목([OpsItem](https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter-getting-started-sns.html))을 해결하기 위해 수행된 작업을 추적하려면 SNS 주제 ARN을 제공합니다.

1. 태그를 입력하면(선택 사항) 리소스를 식별하고 구성하는 데 도움이 됩니다. CloudWatch Application Insights는 태그 기반 및 CloudFormation 스택 기반 리소스 그룹을 모두 지원합니다(Application Auto Scaling 그룹 제외). 자세한 내용은 *AWS Resource Groups 및 태그 사용 설명서*에서 [Tag Editor](https://docs.aws.amazon.com/ARG/latest/userguide/tag-editor.html)를 참조하세요.

1. 탐지된 구성 요소를 검토하려면 **다음**을 선택합니다.

1. **탐지된 구성 요소 검토** 페이지에는 CloudWatch 애플리케이션 인사이트에서 자동으로 탐지된 모니터링되는 구성 요소와 해당 워크로드가 나열됩니다.

   1. 워크로드 유형과 이름을 편집하려면 **구성 요소 편집**을 선택합니다.
**참고**  
탐지된 NetWeaver 분산 또는 NetWeaver 고가용성 워크로드가 포함된 구성 요소는 구성 요소에서 하나의 워크로드만 지원합니다.  
![\[CloudWatch Application Insights 콘솔의 탐지된 구성 요소 검토 섹션: 편집할 수 있는 구성 요소 목록입니다.\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/appinsights-multiapp-netweaver.png)

1. **Next**(다음)를 선택합니다.

1. **Specify component details**(구성 요소 세부 정보 지정) 페이지에서 **Next**(다음)를 선택합니다.

1. 애플리케이션 모니터링 구성을 검토한 다음 **제출**을 선택합니다.

1. **애플리케이션 요약**, **대시보드**, **구성 요소**, **워크로드**를 볼 수 있는 애플리케이션 세부 정보 페이지가 열립니다. **Configuration history**(구성 기록), **Log patterns**(로그 패턴), 사용자가 생성한 모든 **Tags**(태그)를 확인할 수 있습니다. 애플리케이션을 제출하면 CloudWatch Application Insights가 SAP NetWeaver 시스템에 대한 모든 지표와 경보를 배포합니다. 이 작업에는 최대 1시간이 소요될 수 있습니다.

## SAP NetWeaver 애플리케이션 서버의 모니터링 관리
<a name="appinsights-tutorial-sap-netweaver-manage"></a>

다음 단계에 따라 SAP NetWeaver 애플리케이션 서버의 모니터링을 관리하세요.

**모니터링을 관리하려면 다음을 수행하세요.**

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

1. 왼쪽 탐색 창의 **Insights**(인사이트)에서 **Application Insights**를 선택합니다.

1. **List view**(목록 보기) 탭을 선택합니다.

1. **Application Insights** 페이지에는 Application Insights를 사용하여 모니터링되는 애플리케이션 목록과 각 애플리케이션의 모니터링 상태가 표시됩니다.

1. 애플리케이션을 선택합니다.

1. **Components**(구성 요소) 탭을 선택합니다.

1. **모니터링되는 구성 요소(Monitored components)**에서 구성 요소 이름 옆에 있는 라디오 버튼을 선택합니다. 그런 다음 **Manage monitoring**(모니터링 관리)을 선택합니다.

1. **Instance logs**(인스턴스 로그)에서 기존 로그 경로, 로그 패턴 세트 및 로그 그룹 이름을 업데이트할 수 있습니다. 또한 **애플리케이션 로그(Application logs)**를 3개까지 추가할 수 있습니다.

1. **Metrics**(지표)에서 요구 사항에 따라 SAP NetWeaver 지표를 선택할 수 있습니다. SAP NetWeaver 지표 이름에는 `sap` 접두사가 붙습니다. 구성 요소당 40개까지 지표를 추가할 수 있습니다.

1. **사용자 지정 경보(Custom alarms)**에서 CloudWatch Application Insights를 통해 모니터링할 경보를 추가할 수 있습니다.

1. 애플리케이션 모니터링 구성을 검토하고 **Save**(저장)를 선택합니다. 구성을 제출하면 계정에서 SAP NetWeaver 시스템에 대한 모든 지표 및 경보를 업데이트합니다.

## CloudWatch Application Insights에서 탐지한 SAP NetWeaver 문제 보기 및 해결
<a name="appinsights-tutorial-sap-netweaver-troubleshooting"></a>

다음 섹션에서는 Application Insights에서 SAP NetWeaver에 대한 모니터링을 구성할 때 발생하는 일반적인 문제 해결 시나리오를 해결하는 데 도움이 되는 단계를 제공합니다.

**Topics**
+ [SAP NetWeaver 데이터베이스 연결 문제](#appinsights-tutorial-sap-netweaver-troubleshooting-database)
+ [SAP NetWeaver 애플리케이션 가용성 문제](#appinsights-tutorial-sap-netweaver-troubleshooting-availability)

### SAP NetWeaver 데이터베이스 연결 문제
<a name="appinsights-tutorial-sap-netweaver-troubleshooting-database"></a>

**설명**  
SAP NetWeaver 애플리케이션에서 데이터베이스 연결 문제가 발생했습니다.

**원인**  
CloudWatch Application Insights 콘솔로 이동하고 SAP NetWeaver Application Insights 문제 대시보드를 확인하여 연결 문제를 식별할 수 있습니다. **Problem summary**(문제 요약)에서 링크를 선택하여 특정 문제를 확인합니다.

![\[Problem summary(문제 요약) 열의 Detected problems(탐지된 문제) 섹션 아래에 추가 정보가 있는 CloudWatch Application Insights의 탐지된 문제 대시보드.\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/appinsights-nw-database-connectivity-1.png)


다음 예제에서는 **Problem summary**(문제 요약) 아래의 SAP: Availability가 문제입니다.

![\[Problem summary(문제 요약) 섹션 아래의 CloudWatch Application Insights에 대한 Problem summary(문제 요약) 페이지.\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/appinsights-nw-database-connectivity-2.png)


**Problem summary**(문제 요약) 바로 다음의 **Insight**(인사이트) 섹션은 오류에 대한 추가 컨텍스트와 문제의 원인에 대한 추가 정보를 얻을 수 있는 위치를 제공합니다.

![\[오류 원인에 대한 추가 정보가 포함된 CloudWatch Application Insights에 대한 문제 인사이트.\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/appinsights-nw-database-connectivity-3.png)


동일한 문제 대시보드에서 문제 탐지가 그룹화한 관련 로그와 지표를 확인하여 오류의 원인을 격리할 수 있습니다. `sap_alerts_Availability` 지표는 시간 경과에 따른 SAP NetWeaver 시스템의 가용성을 추적합니다. 기록 추적을 사용하여 지표가 오류 상태를 시작하거나 경보 임계값을 위반한 시기를 연관시킬 수 있습니다. 다음 예제에서는 SAP NetWeaver 시스템에 가용성 문제가 있습니다. 이 예제에서는 두 개의 SAP 애플리케이션 서버 인스턴스가 있고 각 인스턴스에 대해 경보가 생성되었으므로 두 개의 경보를 보여줍니다.

![\[오류 발생 시점 기록의 추가 정보가 포함된 CloudWatch Application Insights에 대한 SAP Availability 지표.\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/appinsights-nw-database-connectivity-4.png)


각 경보에 대한 자세한 내용을 보려면 `sap_alerts_Availability` 지표 이름 위로 마우스를 가져갑니다.

![\[오류의 추가 세부 정보가 포함된 CloudWatch Application Insights에 대한 SAP Availability 지표.\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/appinsights-nw-database-connectivity-5.png)


다음 예제에서 `sap_alerts_Database` 지표는 데이터베이스 계층에 문제 또는 오류가 있음을 보여줍니다. 이 경보는 SAP NetWeaver가 해당 데이터베이스에 연결하거나 이와 통신하는 데 문제가 있음을 나타냅니다.

![\[오류 발생 시점에 대한 추가 기록이 포함된 CloudWatch Application Insights에 대한 SAP Database 지표.\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/appinsights-nw-database-connectivity-6.png)


데이터베이스는 SAP NetWeaver의 핵심 리소스이므로 데이터베이스에 문제가 있거나 오류가 발생하면 관련 경보가 많이 발생할 수 있습니다. 다음 예제에서는 데이터베이스를 사용할 수 없어 `sap_alerts_FrontendResponseTime` 및 `sap_alerts_LongRunners` 지표가 시작됩니다.

![\[데이터베이스 오류로 인해 생성된 CloudWatch Application Insights에 대한 추가 SAP 데이터베이스 지표.\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/appinsights-nw-database-connectivity-7.png)


**해결 방법**  
Application Insights는 탐지된 문제를 매시간 모니터링합니다. SAP NetWeaver 로그 파일에 새로운 관련 로그 항목이 없으면 이전 로그 항목이 해결된 것으로 처리됩니다. CloudWatch 경보와 관련된 모든 오류 조건을 수정해야 합니다. 오류 조건이 수정된 후 경보와 로그가 복구되면 경보가 해결됩니다. CloudWatch 로그 오류 및 경보가 모두 해결되면 Application Insight는 오류 탐지를 중지하고 1시간 내에 문제가 자동으로 해결됩니다. 문제 대시보드에 최신 문제가 표시되도록 모든 로그 오류 조건 및 경보를 해결하는 것이 좋습니다.

다음 예제에서 SAP Availability 문제가 해결되었습니다.

![\[SAP Availability 문제가 해결된 CloudWatch Application Insights 문제 대시보드.\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/appinsights-nw-database-connectivity-resolved.png)


### SAP NetWeaver 애플리케이션 가용성 문제
<a name="appinsights-tutorial-sap-netweaver-troubleshooting-availability"></a>

**설명**  
SAP NetWeaver High Availability Enqueue Replication이 작동을 중지했습니다.

**원인**  
CloudWatch Application Insights 콘솔로 이동하고 SAP NetWeaver Application Insights 문제 대시보드를 확인하여 연결 문제를 식별할 수 있습니다. **Problem summary**(문제 요약)에서 링크를 선택하여 특정 문제를 확인합니다.

![\[Problem summary(문제 요약) 아래에 자세한 정보가 표시된 CloudWatch Application Insights의 문제 대시보드.\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/appinsights-nw-app-availability-problem-dashboard.png)


다음 예제에서는 **Problem summary**(문제 요약) 아래의 High Availability Enqueue Replication이 문제입니다.

![\[SAP Availability: Enqueue replication 오류가 나열된 CloudWatch Application Insights의 Problem summary(문제 요약).\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/appinsights-nw-app-availability-1.png)


**Problem summary**(문제 요약) 바로 다음의 **Insight**(인사이트) 섹션은 오류에 대한 추가 컨텍스트와 문제의 원인에 대한 추가 정보를 얻을 수 있는 위치를 제공합니다.

![\[오류 원인에 대한 추가 정보가 포함된 CloudWatch Application Insights에 대한 문제 인사이트.\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/appinsights-nw-app-availability-2.png)


다음 예제에서는 오류의 원인을 격리하는 데 도움이 되도록 그룹화된 로그 및 지표를 보는 문제 대시보드를 보여줍니다. `sap_enqueue_server_replication_state` 지표는 시간 경과에 따라 값을 추적합니다. 기록 추적을 사용하여 지표가 오류 상태를 시작하거나 경보 임계값을 위반한 시기를 연관시킬 수 있습니다.

![\[오류가 발생한 시점에 대한 추가 정보가 표시된 문제 대시보드의 Enqueue Server 복제 상태 지표.\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/appinsights-nw-app-availability-3.png)


다음 예제에서 `ha_cluster_pacemaker_fail_count` 지표는 고가용성 페이스메이커 클러스터에서 리소스 오류가 발생했음을 보여줍니다. 실패 횟수가 1보다 크거나 같은 특정 페이스메이커 리소스는 구성 요소 대시보드에서 식별됩니다.

![\[실패 횟수가 1보다 크거나 같은 페이스메이커 리소스에 대한 CloudWatch Application Insights의 애플리케이션 가용성 지표.\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/appinsights-nw-app-availability-4.png)


다음 예제에서는 문제 탐지 시 SAP 애플리케이션 성능이 감소했음을 나타내는 `sap_alerts_Shortdumps` 지표를 보여줍니다.

![\[CloudWatch Application Insights에 대한 애플리케이션 가용성 알림 Shortdumps 지표.\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/appinsights-nw-app-availability-5.png)


#### 로그
<a name="ai-sap-netweaver-logs"></a>

로그 항목은 문제 탐지 시 SAP NetWeaver 계층에서 발생한 문제를 더 잘 이해하는 데 도움이 됩니다. 문제 대시보드의 로그 그룹 위젯은 문제의 특정 시간을 보여줍니다.

![\[문제가 발생한 정확한 시간을 보여주는 CloudWatch Application Insights에 대한 로그 항목.\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/appinsights-nw-app-availability-7.png)


로그에 대한 자세한 내용을 보려면 오른쪽 상단 모서리에 있는 세 개의 세로 점을 선택하고 **View in CloudWatch Logs Insights**(CloudWatch Logs Insights에서 보기)를 선택합니다.

![\[CloudWatch Logs Insights의 보기와 CloudWatch Application Insights 세부 정보.\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/appinsights-nw-app-availability-8.png)


다음 단계에 따라 문제 대시보드에 표시되는 지표와 경보에 대한 자세한 정보를 얻으세요.

**지표와 경보에 대한 자세한 정보를 얻으려면 다음을 수행하세요.**

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

1. 왼쪽 탐색 창의 **Insights**(인사이트)에서 **Application Insights**를 선택합니다. 그런 다음 **List view**(목록 보기) 탭을 선택하고 애플리케이션을 선택합니다.

1. **Components**(구성 요소) 탭을 선택합니다. 그런 다음 자세한 정보를 얻으려는 SAP NetWeaver 구성 요소를 선택합니다.

   다음 예제에서는 문제 대시보드에 표시된 `ha_cluster_pacemaker_fail_count` 지표가 있는 **HA Metrics**(HA 지표) 섹션을 보여줍니다.  
![\[페이스메이커 리소스 실패 횟수를 보여주는 CloudWatch Application Insights의 HA 지표.\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/appinsights-nw-app-availability-9.png)

**해결 방법**  
Application Insights는 탐지된 문제를 매시간 모니터링합니다. SAP NetWeaver 로그 파일에 새로운 관련 로그 항목이 없으면 이전 로그 항목이 해결된 것으로 처리됩니다. 이 문제와 관련된 모든 오류 조건을 수정해야 합니다.

`sap_alerts_Shortdumps` 경보의 경우 트랜잭션 코드 `RZ20 → R3Abap → Shortdumps`를 사용하여 CCMS 경보로 이동하여 SAP NetWeaver 시스템에서 경보를 해결해야 합니다. CCMS 알림에 대한 자세한 내용은 [SAP 웹 사이트](https://help.sap.com/docs/SAP_NETWEAVER_701/6f45651d6c4b1014a50f9ef0fc8df39d/408dc4a7c415437a9b91d2ef6caa9d7d.html)를 참조하세요. Shortdump 트리의 모든 CCMS 경고를 해결합니다. SAP NetWeaver 시스템에서 모든 경보가 해결된 후 CloudWatch는 더 이상 경보 상태의 지표를 보고하지 않습니다.

CloudWatch 로그 오류 및 경보가 모두 해결되면 Application Insight는 오류 탐지를 중지하고 1시간 내에 문제가 자동으로 해결됩니다. 문제 대시보드에 최신 문제가 표시되도록 모든 로그 오류 조건 및 경보를 해결하는 것이 좋습니다. 다음 예제에서는 SAP Netweaver High Availability Enqueue Replication 문제가 해결되었습니다.

![\[Resolved(해결됨) 상태의 SAP Availability: Enqueue Replication 문제가 표시된 CloudWatch Application Insights 문제 대시보드.\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/images/appinsights-nw-app-availability-problem-resolved.png)


## SAP NetWeaver에 대한 Application Insights 문제 해결
<a name="appinsights-tutorial-sap-netweaver-troubleshooting-health-dashboard"></a>

이 섹션에서는 Application Insights 대시보드에서 반환하는 일반적인 오류를 해결하는 데 도움이 되는 단계를 제공합니다.

### 60개 이상의 모니터 지표를 추가할 수 없음
<a name="ai-unable-add-monitor-metrics"></a>

**오류 반환**: `Component cannot have more than 60 monitored metrics.`

**근본 원인**: `The current metric limit is 60 monitor metrics per component.`

**​해결 방법**: 한도를 준수하는 데 필요하지 않은 지표를 제거합니다.

### 온보딩 프로세스 후 대시보드에 SAP 지표가 표시되지 않음
<a name="sap-metrics-not-on-dashboard"></a>

**근본 원인**: 구성 요소 대시보드는 5분 지표 기간을 사용하여 데이터 포인트를 집계합니다.

**해결 방법**: 5분 후 모든 지표가 대시보드에 표시되어야 합니다.

### SAP 지표 및 경보가 대시보드에 표시되지 않음
<a name="sap-metrics-and-alarms-not-on-dashboard"></a>

다음 단계에 따라 온보딩 프로세스 후 SAP 지표 및 경보가 대시보드에 표시되지 않는 이유를 확인하세요.

**지표 및 경보 관련 문제를 식별하려면 다음을 수행하세요.**

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

1. 왼쪽 탐색 창의 **Insights**(인사이트)에서 **Application Insights**를 선택합니다. 그런 다음 **List view**(목록 보기) 탭을 선택하고 애플리케이션을 선택합니다.

1. **Configuration history**(구성 기록) 탭을 선택합니다.

1. 누락된 지표 데이터 포인트가 있는 경우 `prometheus-sap_host_exporter`와 관련된 오류를 확인합니다.

1. 이전 단계에서 오류를 찾을 수 없는 경우 [Linux 인스턴스에 연결합니다](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstances.html). High Availability 배포의 경우 기본 클러스터 Amazon EC2 인스턴스에 연결합니다.

1. 인스턴스에서 다음 명령을 사용하여 내보내기 도구가 실행 중인지 확인합니다. 기본 포트는 `9680`입니다. 다른 포트를 사용하는 경우 `9680`을 사용 중인 포트로 바꿉니다.

   ```
   curl localhost:9680/metrics
   ```

   데이터가 반환되지 않으면 내보내기 도구가 시작되지 않은 것입니다.

1. 다음 두 단계에서 `WORKLOAD_SHORT_NAME`에 사용할 올바른 명명 규칙을 찾으려면 다음 명령을 실행합니다.
**참고**  
Application Insights는 실행 중인 워크로드에 따라 서비스 이름에 접미사 `WORKLOAD_SHORT_NAME`을 추가합니다. NetWeaver 분산, 표준 및 고가용성 배포의 짧은 이름은 `SAP_NWD`, `SAP_NWS`, `SAP_NWH`입니다.

   ```
   sudo systemctl | grep exporter
   ```

1. 내보내기 도구 서비스 로그에서 오류를 확인하려면 다음 명령을 실행합니다.

   ```
   sudo journalctl -e --unit=prometheus-sap_host_exporter_WORKLOAD_SHORT_NAME.service
   ```

1. 내보내기 도구 관리자 서비스 로그에서 오류를 확인하려면 다음 명령을 실행합니다.

   ```
   sudo journalctl -e --unit=prometheus-sap_host_exporter_manager_WORKLOAD_SHORT_NAME.service
   ```
**참고**  
이 서비스는 항상 가동되고 실행되어야 합니다.

   이 명령에서 오류를 반환하지 않으면 다음 단계로 이동합니다.

1. 내보내기 도구를 수동으로 시작하려면 다음 명령을 실행합니다. 그런 다음 내보내기 도구 출력을 확인합니다.

   ```
   sudo /opt/aws/sap_host_exporter/sap_host_exporter
   ```

   오류를 확인한 후 내보내기 프로세스를 종료할 수 있습니다.

**근본 원인**: 이 문제에는 여러 가지 원인이 있을 수 있습니다. 일반적인 원인은 내보내기 도구가 애플리케이션 서버 인스턴스 중 하나에 연결할 수 없기 때문입니다.

**​해결 방법**

다음 단계에 따라 애플리케이션 서버 인스턴스에 내보내기 도구를 연결하세요. SAP 애플리케이션 인스턴스가 실행 중인지 확인하고 SAPControl을 사용하여 인스턴스에 연결합니다.

**애플리케이션 서버 인스턴스에 내보내기 도구를 연결하려면 다음을 수행하세요.**

1. Amazon EC2 인스턴스에서 다음 명령을 실행하여 SAP 애플리케이션이 실행 중인지 확인합니다.

   ```
   sapcontrol -nr <App_InstNo> -function GetProcessList
   ```

1. 작동하는 SAP Control 연결을 설정해야 합니다. SAPControl 연결이 작동하지 않으면 관련 SAP 애플리케이션 인스턴스에서 문제의 근본 원인을 찾습니다.

1. SAP Control 연결 문제를 해결한 후 내보내기 도구를 수동으로 시작하려면 다음 명령을 실행하세요.

   ```
   sudo systemctl start prometheus-sap_host_exporter.service
   ```

1. SAPControl 연결 문제를 해결할 수 없으면 다음 절차를 임시 해결책으로 사용하세요.

   1. [AWS Systems Manager 콘솔](https://console.aws.amazon.com/systems-manager)을 엽니다.

   1. 왼쪽 탐색 창에서 **State Manager**를 선택합니다.

   1. **Associations**(연결)에서 SAP NetWeaver 시스템의 연결을 검색합니다.

      ```
      Association Name: Equal: AWS-ApplicationInsights-SSMSAPHostExporterAssociationForCUSTOMSAPNW<SID>-1
      ```

   1. **Association id**(연결 ID)를 선택합니다.

   1. **Parameters**(파라미터) 탭을 선택하고 **additionalArguments**에서 애플리케이션 서버 번호를 제거합니다.

   1. **Apply Association Now**(지금 연결 적용)를 선택합니다.
**참고**  
이는 임시 해결책입니다. 구성 요소의 모니터링 구성이 업데이트되면 인스턴스가 다시 추가됩니다.

# Amazon CloudWatch Application Insights에서 감지한 문제 보기 및 해결
<a name="appinsights-troubleshooting"></a>

이 섹션의 주제는 Application Insights가 표시하는 감지된 문제 및 인사이트에 대한 자세한 정보를 제공합니다. 또한 계정이나 구성에서 발견된 문제에 대한 권장되는 해결 방법을 제공합니다.

**Topics**
+ [CloudWatch 콘솔 개요](#appinsights-troubleshooting-overview)
+ [애플리케이션 인사이트 문제 요약 페이지](#appinsights-troubleshooting-problem-summary)
+ [CloudWatch 에이전트 병합 충돌 실패](#cwagent-merge-conflicts)
+ [CloudWatch 에이전트 로그 처리로 인한 높은 CPU 사용량](#cwagent-high-cpu-usage)
+ [경보가 생성되지 않음](#alarms-not-created)
+ [Feedback](#appinsights-troubleshooting-feedback)
+ [구성 오류](#appinsights-configuration-errors)

## CloudWatch 콘솔 개요
<a name="appinsights-troubleshooting-overview"></a>

모니터링되는 애플리케이션에 영향을 주는 문제에 대한 개요는 [CloudWatch 콘솔](https://console.aws.amazon.com/cloudwatch)의 개요 페이지에 있는 CloudWatch Application Insights 창에서 확인할 수 있습니다.

CloudWatch Application Insights 개요 창에는 다음 내용이 표시됩니다.
+ 감지된 문제의 심각도: 높음/중간/낮음
+ 문제의 간략한 요약
+ 문제 소스
+ 문제 시작 시간
+ 문제의 해결 상태
+ 영향 받는 리소스 그룹

특정 문제의 세부 정보를 확인하려면 **문제 요약(Problem Summary)**에서 문제에 대한 설명을 선택합니다. 세부 대시보드에는 문제에 대한 통찰력과 관련 지표 이상 및 로그 오류의 조각이 표시됩니다. 유용한지 여부를 선택하여 인사이트의 관련성에 대한 피드백을 제공할 수 있습니다.

구성되지 않은 새 리소스가 감지된 경우 문제점 요약 설명은 **구성 편집(Edit configuration)** 마법사로 이동하여 새 리소스를 구성합니다. 세부 대시보드의 오른쪽 상단에 있는 **구성 보기/편집(View/edit configuration)**을 선택하여 리소스 그룹 구성을 보거나 편집할 수 있습니다.

개요로 돌아가려면 CloudWatch Application Insights 세부 대시보드 헤더 옆에 있는 [**개요로 돌아가기(Back to overview)**]를 선택합니다.

## 애플리케이션 인사이트 문제 요약 페이지
<a name="appinsights-troubleshooting-problem-summary"></a>

**애플리케이션 인사이트 문제 요약 페이지**  
CloudWatch Application Insights는 문제 요약 페이지에 감지된 문제에 관한 다음 정보를 제공합니다.
+ 문제의 간략한 요약
+ 문제의 시작 시간 및 날짜
+ 문제의 심각도: 높음/중간/낮음
+ 감지된 문제의 상태: 진행 중/해결됨
+ 통찰력: 감지된 문제 및 가능한 근본 원인에 대해 자동으로 생성된 통찰력
+ 인사이트에 대한 피드백: CloudWatch Application Insights에서 생성한 인사이트의 유용성에 관해 제공한 피드백
+ 관련 관찰: 다양한 애플리케이션 구성 요소에서 발생한 문제와 관련된 로그의 오류 조각 및 지표 이상의 상세 보기

## CloudWatch 에이전트 병합 충돌 실패
<a name="cwagent-merge-conflicts"></a>

CloudWatch Application Insights는 고객 인스턴스에 CloudWatch 에이전트를 설치하고 구성합니다. 여기에는 지표 또는 로그에 대한 구성이 포함된 CloudWatch 에이전트 구성 파일 생성이 포함됩니다. 고객의 인스턴스에 동일한 지표 또는 로그에 대해 서로 다른 구성이 정의된 CloudWatch 에이전트 구성 파일이 이미 있는 경우 병합 충돌이 발생할 수 있습니다. 병합 충돌을 해결하려면 다음 단계를 수행합니다.

1. 시스템에서 CloudWatch 에이전트 구성 파일을 식별합니다. 파일 위치에 대한 자세한 내용은 [CloudWatch 에이전트 파일 및 위치](troubleshooting-CloudWatch-Agent.md#CloudWatch-Agent-files-and-locations) 섹션을 참조하세요.

1. 기존 CloudWatch 에이전트 구성 파일에서 Application Insights에서 사용하려는 리소스 구성을 제거합니다. Application Insights 구성만 사용하려면 기존 CloudWatch 에이전트 구성 파일을 삭제하세요.

## CloudWatch 에이전트 로그 처리로 인한 높은 CPU 사용량
<a name="cwagent-high-cpu-usage"></a>

CloudWatch Application Insights는 고객 인스턴스에 CloudWatch 에이전트를 설치하고 구성합니다. Amazon EC2 인스턴스가 대량의 로그 데이터를 포함하는 로그 경로로 구성된 경우 CloudWatch 에이전트가 로그를 처리하는 동안 인스턴스의 CPU 사용량이 증가할 수 있습니다. CPU 사용량을 줄이려면 [Amazon EC2 인스턴스 구성 요소 구성](component-configuration-examples-ec2.md)에서 로그 경로를 제거하세요.

## 경보가 생성되지 않음
<a name="alarms-not-created"></a>

일부 지표의 경우 Application Insights는 지표의 이전 데이터 포인트를 기반으로 경보 임곗값을 예측합니다. 이 예측을 사용하도록 설정하려면 다음 기준을 충족해야 합니다.
+ **최근 데이터 포인트** - 지난 24시간 동안의 데이터 포인트가 최소 100개 이상 있어야 합니다. 해당 데이터 포인트는 연속적일 필요가 없으며 24시간의 기간 안에 분산된 값이어도 됩니다.
+ **기록 데이터** - 현재 날짜 15일 전부터 현재 날짜 1일 전까지의 기간에 걸쳐 최소 100개의 데이터 포인트가 있어야 합니다. 해당 데이터 포인트는 연속적일 필요가 없으며 15일의 기간 안에 분산된 값이어도 됩니다.

**참고**  
일부 지표의 경우 Application Insights는 이전 조건이 충족될 때까지 경보 생성을 지연합니다. 이 경우 지표에 경보 임곗값을 설정하기에 충분한 데이터 포인트가 부족하다는 구성 기록 이벤트가 표시됩니다.

## Feedback
<a name="appinsights-troubleshooting-feedback"></a>

**피드백**

감지된 문제에 대해 자동으로 생성된 통찰력에 대한 유용성을 평가하여 피드백을 제공할 수 있습니다. 통찰력에 대한 피드백은 애플리케이션 진단(지표 이상 및 로그 예외)과 함께 향후 유사한 문제의 탐지를 개선하는 데 사용됩니다.

## 구성 오류
<a name="appinsights-configuration-errors"></a>

CloudWatch Application Insights는 구성을 사용하여 구성 요소에 대한 모니터링 원격 분석을 생성합니다. Application Insights가 계정 또는 구성과 관련된 문제를 감지하면 애플리케이션의 구성 문제를 해결하는 방법에 대한 정보를 애플리케이션 요약의 **설명(Remarks)** 필드에 제공합니다.

다음 표는 특정 설명에 대해 제안된 해결 방법을 보여줍니다.


| 설명 | 제안된 해결 방법 | 추가 참고 사항  | 
| --- | --- | --- | 
|  CloudFormation 할당량에 이미 도달했습니다.  |  Application Insights는 모든 애플리케이션 구성 요소에 대한 CloudWatch 에이전트 설치 및 구성을 관리하기 위해 각 애플리케이션에 대해 하나의 CloudFormation 스택을 만듭니다. 기본적으로 각 AWS 계정에 2,000개의 스택이 있을 수 있습니다. [CloudFormation 한도](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cloudformation-limits.html)를 참조합니다. 이를 해결하려면 CloudFormation 스택의 제한을 높이세요.  | 해당 사항 없음 | 
|  다음 인스턴스에 SSM 인스턴스 역할이 없습니다.  |  Application Insights가 애플리케이션 인스턴스에 CloudWatch 에이전트를 설치 및 구성할 수 있으려면 AmazonSSMManagedInstanceCore 및 CloudWatchAgentServerPolicy 정책을 인스턴스 역할에 연결해야 합니다.  |  ApplicationInsights는 SSM [DescribeInstanceInformation API](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_DescribeInstanceInformation.html)를 호출하여 SSM 권한이 있는 인스턴스 목록을 가져옵니다. 인스턴스에 역할을 연결한 후 SSM이 인스턴스를 DescribeInstanceInformation 결과에 포함시키는 데는 약간의 시간이 필요합니다. SSM이 결과에 인스턴스를 포함할 때까지는 NO\$1SSM\$1INSTANCE\$1ROLE 오류가 애플리케이션에 남아 있습니다.  | 
|  새 구성 요소에 구성이 필요할 수 있습니다.  |  Application Insights는 애플리케이션 리소스 그룹에 새 구성 요소가 있음을 감지합니다. 이 문제를 해결하려면 새 구성 요소를 적절히 구성하세요.  | 해당 사항 없음 | 

# Amazon CloudWatch Application Insights에서 지원하는 로그 및 지표
<a name="appinsights-logs-and-metrics"></a>

다음 목록은 Amazon CloudWatch Application Insights에서 지원되는 로그 및 지표를 보여 줍니다.

**CloudWatch Application Insights는 다음 로그를 지원합니다.**
+ Microsoft 인터넷 정보 서비스(IIS) 로그
+ EC2상의 SQL Server에 대한 오류 로그
+ 사용자 지정 .NET 애플리케이션 로그(예: Log4Net)
+ Windows 로그(시스템, 애플리케이션 및 보안)와 애플리케이션 및 서비스 로그가 포함된 Windows 이벤트 로그
+ AWS Lambda의 Amazon CloudWatch Logs
+ EC2의 RDS MySQL, Aurora MySQL 및 MySQL에 대한 오류 로그 및 느린 로그
+ EC2의 PostgreSQL RDS 및 PostgreSQL에 대한 Postgresql 로그
+ AWS Step Functions의 Amazon CloudWatch Logs
+ API Gateway REST API 스테이지에 대한 실행 로그 및 액세스 로그(JSON, CSV, XML 단, CLF 제외)
+ Prometheus JMX Exporter 로그(EMF)
+ Amazon RDS의 Oracle 및 Amazon EC2의 Oracle에 대한 알림 로그 및 리스너 로그
+ [`awslogs` 로그 드라이버](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_awslogs.html)를 사용하여 Amazon ECS 컨테이너에서 CloudWatch로의 컨테이너 로그 라우팅
+ [FireLens 컨테이너 로그 라우터](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_firelens.html)를 사용하여 Amazon ECS 컨테이너에서 CloudWatch로의 컨테이너 로그 라우팅
+ Container Insights와 함께 [Fluent Bit 또는 Fluentd 로그 프로세서](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Container-Insights-EKS-logs.html)를 사용하여 Amazon EC2에서 실행되는 Amazon EKS 또는 Kubernetes에서 CloudWatch로의 컨테이너 로그 라우팅
+ SAP HANA 추적 및 오류 로그
+ HA Pacemaker 로그
+ SAP ASE 서버 로그
+ SAP ASE 백업 서버 로그
+ SAP ASE 복제 서버 로그
+ SAP ASE RMA 에이전트 로그
+ SAP ASE 장애 관리자 로그
+ SAP NetWeaver 개발 추적 로그
+ [CloudWatch 에이전트용 proctstat 플러그인](CloudWatch-Agent-procstat-process-metrics.md)을 사용하는 Windows 프로세스에 대한 프로세스 지표
+ 호스팅 영역의 퍼블릭 DNS 쿼리 로그
+ Amazon Route 53 Resolver DNS 쿼리 로그

**CloudWatch Application Insights는 다음 로그 클래스를 지원합니다.**
+ **표준** - Amazon CloudWatch Application Insights에서는 모니터링을 활성화하려면 [CloudWatch Logs 표준 로그 클래스](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CloudWatch_Logs_Log_Classes.html)로 로그 그룹을 구성해야 합니다.

**Contents**
+ [Amazon Elastic Compute Cloud(EC2)](appinsights-metrics-ec2.md)
  + [CloudWatch 기본 지표](appinsights-metrics-ec2.md#appinsights-metrics-ec2-built-in)
  + [CloudWatch 에이전트 지표(Windows Server)](appinsights-metrics-ec2.md#appinsights-metrics-ec2-windows)
  + [CloudWatch 에이전트 프로세스 지표(Windows Server)](appinsights-metrics-ec2.md#appinsights-metrics-procstat-ec2-windows)
  + [CloudWatch 에이전트 지표(Linux 서버)](appinsights-metrics-ec2.md#appinsights-metrics-ec2-linux)
+ [Elastic Block Store(EBS)](appinsights-metrics-ebs.md)
+ [Amazon Elastic File System(Amazon EFS)](appinsights-metrics-efs.md)
+ [Elastic Load Balancer(ELB)](appinsights-metrics-elb.md)
+ [애플리케이션 ELB](appinsights-metrics-app-elb.md)
+ [Amazon EC2 Auto Scaling 그룹](appinsights-metrics-as.md)
+ [Amazon Simple Queue Server(SQS)](appinsights-metrics-sqs.md)
+ [Amazon Relational Database Service(RDS)](appinsights-metrics-rds.md)
  + [RDS 데이터베이스 인스턴스](appinsights-metrics-rds.md#appinsights-metrics-rds-instances)
  + [RDS 데이터베이스 클러스터](appinsights-metrics-rds.md#appinsights-metrics-rds-clusters)
+ [AWS Lambda 함수](appinsights-metrics-lambda.md)
+ [Amazon DynamoDB 테이블](appinsights-metrics-dyanamodb.md)
+ [Amazon S3 버킷](appinsights-metrics-s3.md)
+ [AWS Step Functions](appinsights-metrics-step-functions.md)
  + [실행 수준](appinsights-metrics-step-functions.md#appinsights-metrics-step-functions-execution)
  + [활동](appinsights-metrics-step-functions.md#appinsights-metrics-step-functions-activity)
  + [Lambda 함수](appinsights-metrics-step-functions.md#appinsights-metrics-step-functions-lambda)
  + [서비스 통합](appinsights-metrics-step-functions.md#appinsights-metrics-step-functions-service-integration)
  + [Step Functions API](appinsights-metrics-step-functions.md#appinsights-metrics-step-functions-api)
+ [API Gateway REST API 스테이지](appinsights-metrics-api-gateway.md)
+ [SAP HANA](appinsights-metrics-sap-hana.md)
+ [SAP ASE](appinsights-metrics-sap-ase.md)
+ [Amazon EC2에 대한 SAP ASE 고가용성](appinsights-metrics-sap-ase-ha.md)
+ [SAP NetWeaver](appinsights-metrics-sap-netweaver.md)
+ [HA 클러스터](appinsights-metrics-ha-cluster.md)
+ [Java](appinsights-metrics-java.md)
+ [Amazon Elastic Container Service(Amazon ECS)](appinsights-metrics-ecs.md)
  + [CloudWatch 기본 지표](appinsights-metrics-ecs.md#appinsights-metrics-ecs-built-in-metrics)
  + [Container Insights 지표](appinsights-metrics-ecs.md#appinsights-metrics-ecs-container-insights-metrics)
  + [Container Insights Prometheus 지표](appinsights-metrics-ecs.md#appinsights-metrics-ecs-container-insights-prometheus)
+ [AWS의 Kubernetes](appinsights-metrics-kubernetes.md)
  + [Container Insights 지표](appinsights-metrics-kubernetes.md#appinsights-metrics-kubernetes-container-insights-metrics)
  + [Container Insights Prometheus 지표](appinsights-metrics-kubernetes.md#appinsights-metrics-kubernetes-container-insights-prometheus)
+ [Amazon FSx](appinsights-metrics-fsx.md)
+ [Amazon VPC](appinsights-metrics-vpc.md)
+ [Amazon VPC NAT 게이트웨이](appinsights-metrics-nat-gateways.md)
+ [Amazon Route 53 상태 확인](appinsights-metrics-health-check.md)
+ [Amazon Route 53 호스팅 영역](appinsights-metrics-hosted-zone.md)
+ [Amazon Route 53 Resolver 엔드포인트](appinsights-metrics-resolver-endpoint.md)
+ [AWS Network Firewall 규칙 그룹](appinsights-metrics-firewall-rule-group.md)
+ [AWS Network Firewall 규칙 그룹 연결](appinsights-metrics-firewall-rule-group-assoc.md)
+ [데이터 포인트 요구 사항이 있는 지표](appinsights-metrics-datapoint-requirements.md)
  + [AWS/ApplicationELB](appinsights-metrics-datapoint-requirements.md#appinsights-metrics-datapoint-requirements-app-elb)
  + [AWS/AutoScaling](appinsights-metrics-datapoint-requirements.md#appinsights-metrics-datapoint-requirements-autoscaling)
  + [AWS/EC2](appinsights-metrics-datapoint-requirements.md#appinsights-metrics-datapoint-requirements-ec2)
  + [Elastic Block Store(EBS)](appinsights-metrics-datapoint-requirements.md#appinsights-metrics-datapoint-requirements-ebs)
  + [AWS/ELB](appinsights-metrics-datapoint-requirements.md#appinsights-metrics-datapoint-requirements-elb)
  + [AWS/RDS](appinsights-metrics-datapoint-requirements.md#appinsights-metrics-datapoint-requirements-rds)
  + [AWS/Lambda](appinsights-metrics-datapoint-requirements.md#appinsights-metrics-datapoint-requirements-lambda)
  + [AWS/SQS](appinsights-metrics-datapoint-requirements.md#appinsights-metrics-datapoint-requirements-sqs)
  + [AWS/CWAgent](appinsights-metrics-datapoint-requirements.md#appinsights-metrics-datapoint-requirements-cwagent)
  + [AWS/DynamoDB](appinsights-metrics-datapoint-requirements.md#appinsights-metrics-datapoint-requirements-dynamo)
  + [AWS/S3](appinsights-metrics-datapoint-requirements.md#appinsights-metrics-datapoint-requirements-s3)
  + [AWS/States](appinsights-metrics-datapoint-requirements.md#appinsights-metrics-datapoint-requirements-states)
  + [AWS/ApiGateway](appinsights-metrics-datapoint-requirements.md#appinsights-metrics-datapoint-requirements-api-gateway)
  + [AWS/SNS](appinsights-metrics-datapoint-requirements.md#appinsights-metrics-datapoint-requirements-sns)
+ [권장 지표](application-insights-recommended-metrics.md)
+ [성능 카운터 지표](application-insights-performance-counter.md)

# Amazon Elastic Compute Cloud(EC2)
<a name="appinsights-metrics-ec2"></a>

CloudWatch Application Insights는 다음 지표를 지원합니다.

**Topics**
+ [CloudWatch 기본 지표](#appinsights-metrics-ec2-built-in)
+ [CloudWatch 에이전트 지표(Windows Server)](#appinsights-metrics-ec2-windows)
+ [CloudWatch 에이전트 프로세스 지표(Windows Server)](#appinsights-metrics-procstat-ec2-windows)
+ [CloudWatch 에이전트 지표(Linux 서버)](#appinsights-metrics-ec2-linux)

## CloudWatch 기본 지표
<a name="appinsights-metrics-ec2-built-in"></a>

CPUCreditBalance

CPUCreditUsage

CPUSurplusCreditBalance

CPUSurplusCreditsCharged

CPUUtilization

DiskReadBytes

DiskReadOps

DiskWriteBytes

DiskWriteOps

EBSByteBalance%

EBSIOBalance%

EBSReadBytes

EBSReadOps

EBSWriteBytes

EBSWriteOps

NetworkIn

NetworkOut

NetworkPacketsIn

NetworkPacketsOut

StatusCheckFailed

StatusCheckFailed\$1Instance

StatusCheckFailed\$1System

## CloudWatch 에이전트 지표(Windows Server)
<a name="appinsights-metrics-ec2-windows"></a>

.NET CLR 예외 발생된 예외 수

.NET CLR 예외 발생된 예외 수/초

.NET CLR 예외 필터 수/초

.NET CLR 예외 최종 수/초

.NET CLR 예외 발생 깊이 파악/초

.NET CLR Interop CCW 수

.NET CLR Interop 스텁 수

.NET CLR Interop TLB 내보내기 횟수/초

.NET CLR Interop TLB 가져오기 횟수/초

.NET CLR Interop 마샬링 수

.NET CLR Jit Jit 시간(%)

.NET CLR Jit 표준 Jit 실패

.NET CLR 로딩 로딩 시간(%)

.NET CLR 로딩 로드 실패 비율

.NET CLR LocksAndThreads 경합 속도/초

.NET CLR LocksAndThreads 대기열 길이/초

.NET CLR 메모리 수 총 커밋된 바이트 수

.NET CLR 메모리 GC의 시간(%)

.NET CLR 네트워킹 4.0.0.0 HttpWebRequest 평균 대기열 시간

.NET CLR 네트워킹 4.0.0.0 중단된 HttpWebRequests/초

.NET CLR 네트워킹 4.0.0.0 실패한 HttpWebRequests/초

.NET CLR 네트워킹 4.0.0.0 대기 중인 HttpWebRequests/초

APP\$1POOL\$1WAS Total Worker Process Ping Failures

ASP.NET 응용 프로그램 재시작

ASP.NET Applications % Managed Processor Time(estimated)

ASP.NET 응용 프로그램 오류 합계/초

ASP.NET 응용 프로그램 오류 실행 중 처리되지 않은 오류/초

ASP.NET 응용 프로그램 응용 프로그램 대기열의 요청

ASP.NET 응용 프로그램 요청/초

ASP.NET 요청 대기 시간

ASP.NET 대기 중인 요청

HTTP 서비스 요청 대기열 CurrentQueueSize

LogicalDisk % 사용 가능한 공간

사용 중인 메모리 % 커밋된 바이트

사용 가능한 메모리(MB)

메모리 페이지/초

네트워크 인터페이스 바이트 합계/초

페이징된 파일 % 사용량

PhysicalDisk % 디스크 시간

PhysicalDisk 평균 디스크 대기열 길이

PhysicalDisk 평균 디스크 초/읽기

PhysicalDisk 평균 디스크 초/쓰기

PhysicalDisk 디스크 읽기 바이트/초

PhysicalDisk 디스크 읽기/초

PhysicalDisk 디스크 쓰기 바이트/초

PhysicalDisk 디스크 쓰기/초

프로세서 % 유휴 시간

프로세서 % 중단 시간

프로세서 % 프로세서 시간

프로세서 % 사용자 시간

SQLServer:액세스 방법 전달된 레코드/초

SQL Server:액세스 방법 전체 스캔/초

SQLServer:액세스 방법 페이지 분할/초

SQLServer:버퍼 관리자 버퍼 캐시 적중률

SQLServer:버퍼 관리자 페이지 예상 수명

SQLServer:차단된 일반 통계 프로세스

SQLServer:일반 통계 사용자 연결

SQLServer:래치 평균 래치 대기 시간(ms)

SQLServer:잠금 평균 대기 시간(ms)

SQLServer:잠금 잠금 제한 시간/초

SQLServer:잠금 잠금 대기/초

SQLServer:잠금 교착 상태 수/초

SQLServer:메모리 관리자 보류 중인 메모리 부여

SQLServer:SQL 통계 배치 요청/초

SQLServer:SQL 통계 SQL 컴파일/초

SQLServer:SQL 통계 SQL 재컴파일/초

시스템 프로세서 대기열 길이

TCPv4 연결 설정

TCPv6 연결 설정

W3SVC\$1W3WP 파일 캐시 플러시

W3SVC\$1W3WP 파일 캐시 누락

W3SVC\$1W3WP 요청/초

W3SVC\$1W3WP URI 캐시 플러시

W3SVC\$1W3WP URI 캐시 누락

웹 서비스 수신된 바이트/초

웹 서비스 전송된 바이트/초

웹 서비스 연결 시도/초

웹 서비스 현재 연결

웹 서비스 요청 가져오기/초

웹 서비스 POST 요청/초

Bytes Received/sec

Normal Messages Queue Length/sec

Urgent Message Queue Length/sec

Reconnect Count

Unacknowledged Message Queue Length/sec

Messages Outstanding

Messages Sent/sec

Database Update Messages/sec

Update Messages/sec

Flushes/sec

Crypto Checkpoints Saved/sec

Crypto Checkpoints Restored/sec

Registry Checkpoints Restored/sec

Registry Checkpoints Saved/sec

Cluster API Calls/sec

Resource API Calls/sec

Cluster Handles/sec

Resource Handles/sec

## CloudWatch 에이전트 프로세스 지표(Windows Server)
<a name="appinsights-metrics-procstat-ec2-windows"></a>

프로세스 지표는 [CloudWatch 에이전트 procstat 플러그인](CloudWatch-Agent-procstat-process-metrics.md)을 사용하여 수집됩니다. Windows 워크로드를 실행하는 Amazon EC2 인스턴스만 프로세스 지표를 지원합니다.

procstat cpu\$1time\$1system

procstat cpu\$1time\$1user

procstat cpu\$1usage

procstat memory\$1rss

procstat memory\$1vms

procstat read\$1bytes

procstat write\$1bytes

.procstat read\$1count

procstat write\$1count

## CloudWatch 에이전트 지표(Linux 서버)
<a name="appinsights-metrics-ec2-linux"></a>

cpu\$1time\$1active

cpu\$1time\$1guest

cpu\$1time\$1guest\$1nice

cpu\$1time\$1idle

cpu\$1time\$1iowait

cpu\$1time\$1irq

cpu\$1time\$1nice

cpu\$1time\$1softirq

cpu\$1time\$1steal

cpu\$1time\$1system

cpu\$1time\$1user

cpu\$1usage\$1active

cpu\$1usage\$1guest

cpu\$1usage\$1guest\$1nice

cpu\$1usage\$1idle

cpu\$1usage\$1iowait

cpu\$1usage\$1irq

cpu\$1usage\$1nice

cpu\$1usage\$1softirq

cpu\$1usage\$1steal

cpu\$1usage\$1system

cpu\$1usage\$1user

disk\$1free

disk\$1inodes\$1free

disk\$1inodes\$1used

disk\$1used

disk\$1used\$1percent

diskio\$1io\$1time

diskio\$1iops\$1in\$1progress

diskio\$1read\$1bytes

diskio\$1read\$1time

diskio\$1reads

diskio\$1write\$1bytes

diskio\$1write\$1time

diskio\$1writes

mem\$1active

mem\$1available

mem\$1available\$1percent

mem\$1buffered

mem\$1cached

mem\$1free

mem\$1inactive

mem\$1used

mem\$1used\$1percent

net\$1bytes\$1recv

net\$1bytes\$1sent

net\$1drop\$1in

net\$1drop\$1out

net\$1err\$1in

net\$1err\$1out

net\$1packets\$1recv

net\$1packets\$1sent

netstat\$1tcp\$1close

netstat\$1tcp\$1close\$1wait

netstat\$1tcp\$1closing

netstat\$1tcp\$1established

netstat\$1tcp\$1fin\$1wait1

netstat\$1tcp\$1fin\$1wait2

netstat\$1tcp\$1last\$1ack

netstat\$1tcp\$1listen

netstat\$1tcp\$1none

netstat\$1tcp\$1syn\$1recv

netstat\$1tcp\$1syn\$1sent

netstat\$1tcp\$1time\$1wait

netstat\$1udp\$1socket

processes\$1blocked

processes\$1dead

processes\$1idle

processes\$1paging

processes\$1running

processes\$1sleeping

processes\$1stopped

processes\$1total

processes\$1total\$1threads

processes\$1wait

processes\$1zombies

swap\$1free

swap\$1used

swap\$1used\$1percent

# Elastic Block Store(EBS)
<a name="appinsights-metrics-ebs"></a>

CloudWatch Application Insights는 다음 지표를 지원합니다.

VolumeReadBytes

VolumeWriteBytes

VolumeReadOps

VolumeWriteOps

VolumeTotalReadTime 

VolumeTotalWriteTime 

VolumeIdleTime

VolumeQueueLength

VolumeThroughputPercentage

VolumeConsumedReadWriteOps

BurstBalance

# Amazon Elastic File System(Amazon EFS)
<a name="appinsights-metrics-efs"></a>

CloudWatch Application Insights는 다음 지표를 지원합니다.

버스트 크레딧 밸런스

입출력 제한 수치

허용된 처리량

허용 처리량 사용률

총 입출력 바이트 수

데이터 쓰기 입출력 바이트

데이터 읽기 입출력 바이트

메타데이터 입출력 바이트

클라이언트 연결

마지막 동기화 이후 흐른 시간

StorageBytes

처리량

PercentageOfPermittedThroughputUtilization

ThroughputIOPS

 PercentThroughputDataReadIOByte

PercentThroughputDataWriteIOBytes

PercentageOfIOPSDataReadIOBytes

PercentageOfIOPSDataWriteIOBytes

AverageDataReadIOBytesSize

AverageDataWriteIOBytesSize

# Elastic Load Balancer(ELB)
<a name="appinsights-metrics-elb"></a>

CloudWatch Application Insights는 다음 지표를 지원합니다.

EstimatedALBActiveConnectionCount

EstimatedALBConsumedLCUs

EstimatedALBNewConnectionCount

EstimatedProcessedBytes

HTTPCode\$1Backend\$14XX

HTTPCode\$1Backend\$15XX

HealthyHostCount

RequestCount

UnHealthyHostCount

# 애플리케이션 ELB
<a name="appinsights-metrics-app-elb"></a>

CloudWatch Application Insights는 다음 지표를 지원합니다.

EstimatedALBActiveConnectionCount

EstimatedALBConsumedLCUs

EstimatedALBNewConnectionCount

EstimatedProcessedBytes

HTTPCode\$1Backend\$14XX

HTTPCode\$1Backend\$15XX

HealthyHostCount

Latency

RequestCount

SurgeQueueLength

UnHealthyHostCount

# Amazon EC2 Auto Scaling 그룹
<a name="appinsights-metrics-as"></a>

CloudWatch Application Insights는 다음 지표를 지원합니다.

CPUCreditBalance

CPUCreditUsage

CPUSurplusCreditBalance

CPUSurplusCreditsCharged

CPUUtilization

DiskReadBytes

DiskReadOps

DiskWriteBytes

DiskWriteOps

EBSByteBalance%

EBSIOBalance%

EBSReadBytes

EBSReadOps

EBSWriteBytes

EBSWriteOps

NetworkIn

NetworkOut

NetworkPacketsIn

NetworkPacketsOut

StatusCheckFailed

StatusCheckFailed\$1Instance

StatusCheckFailed\$1System

# Amazon Simple Queue Server(SQS)
<a name="appinsights-metrics-sqs"></a>

CloudWatch Application Insights는 다음 지표를 지원합니다.

ApproximateAgeOfOldestMessage

ApproximateNumberOfMessagesDelayed

ApproximateNumberOfMessagesNotVisible

ApproximateNumberOfMessagesVisible

NumberOfEmptyReceives

NumberOfMessagesDeleted

NumberOfMessagesReceived

NumberOfMessagesSent

# Amazon Relational Database Service(RDS)
<a name="appinsights-metrics-rds"></a>

CloudWatch Application Insights는 다음 지표를 지원합니다.

**Topics**
+ [RDS 데이터베이스 인스턴스](#appinsights-metrics-rds-instances)
+ [RDS 데이터베이스 클러스터](#appinsights-metrics-rds-clusters)

## RDS 데이터베이스 인스턴스
<a name="appinsights-metrics-rds-instances"></a>

BurstBalance

CPUCreditBalance

CPUUtilization

DatabaseConnections

DiskQueueDepth

FailedSQLServerAgentJobsCount

FreeStorageSpace

FreeableMemory

NetworkReceiveThroughput

NetworkTransmitThroughput

ReadIOPS

ReadLatency

ReadThroughput

WriteIOPS

WriteLatency

WriteThroughput

## RDS 데이터베이스 클러스터
<a name="appinsights-metrics-rds-clusters"></a>

ActiveTransactions

AuroraBinlogReplicaLag

AuroraReplicaLag

BackupRetentionPeriodStorageUsed

BinLogDiskUsage

BlockedTransactions

BufferCacheHitRatio

CPUUtilization

CommitLatency

CommitThroughput

DDLLatency

DDLThroughput

DMLLatency

DMLThroughput

DatabaseConnections

교착

DeleteLatency

DeleteThroughput

EngineUptime

FreeLocalStorage

FreeableMemory

InsertLatency

InsertThroughput

LoginFailures

NetworkReceiveThroughput

NetworkThroughput

NetworkTransmitThroughput

쿼리

ResultSetCacheHitRatio

SelectLatency

SelectThroughput

SnapshotStorageUsed

TotalBackupStorageBilled

UpdateLatency

UpdateThroughput

VolumeBytesUsed

VolumeReadIOPs

VolumeWriteIOPs

# AWS Lambda 함수
<a name="appinsights-metrics-lambda"></a>

CloudWatch Application Insights는 다음 지표를 지원합니다.

오류

DeadLetterErrors

지속 시간

제한

IteratorAge

ProvisionedConcurrencySpilloverInvocations

# Amazon DynamoDB 테이블
<a name="appinsights-metrics-dyanamodb"></a>

CloudWatch Application Insights는 다음 지표를 지원합니다.

SystemErrors

UserErrors

ConsumedReadCapacityUnits

ConsumedWriteCapacityUnits

ReadThrottleEvents

WriteThrottleEvents

TimeToLiveDeletedItemCount

ConditionalCheckFailedRequests

TransactionConflict

ReturnedRecordsCount

PendingReplicationCount

ReplicationLatency

# Amazon S3 버킷
<a name="appinsights-metrics-s3"></a>

CloudWatch Application Insights는 다음 지표를 지원합니다.

ReplicationLatency

BytesPendingReplication

OperationsPendingReplication

4xxErrors

5xxErrors

AllRequests

GetRequests

PutRequests

DeleteRequests

HeadRequests

PostRequests

SelectRequests

ListRequests

SelectScannedBytes

SelectReturnedBytes

FirstByteLatency

TotalRequestLatency

BytesDownloaded

BytesUploaded

# AWS Step Functions
<a name="appinsights-metrics-step-functions"></a>

CloudWatch Application Insights는 다음 지표를 지원합니다.

**Topics**
+ [실행 수준](#appinsights-metrics-step-functions-execution)
+ [활동](#appinsights-metrics-step-functions-activity)
+ [Lambda 함수](#appinsights-metrics-step-functions-lambda)
+ [서비스 통합](#appinsights-metrics-step-functions-service-integration)
+ [Step Functions API](#appinsights-metrics-step-functions-api)

## 실행 수준
<a name="appinsights-metrics-step-functions-execution"></a>

ExecutionTime

ExecutionThrottled

ExecutionsFailed

ExecutionsTimedOut

ExecutionsAborted

ExecutionsSucceeded

ExecutionsStarted

## 활동
<a name="appinsights-metrics-step-functions-activity"></a>

ActivityRunTime

ActivityScheduleTime

ActivityTime

ActivitiesFailed

ActivitiesHeartbeatTimedOut

ActivitiesTimedOut

ActivitiesScheduled

ActivitiesSucceeded

ActivitiesStarted

## Lambda 함수
<a name="appinsights-metrics-step-functions-lambda"></a>

LambdaFunctionRunTime

LambdaFunctionScheduleTime

LambdaFunctionTime

LambdaFunctionsFailed

LambdaFunctionsTimedOut

LambdaFunctionsScheduled

LambdaFunctionsSucceeded

LambdaFunctionsStarted

## 서비스 통합
<a name="appinsights-metrics-step-functions-service-integration"></a>

ServiceIntegrationRunTime

ServiceIntegrationScheduleTime

ServiceIntegrationTime

ServiceIntegrationsFailed

ServiceIntegrationsTimedOut

ServiceIntegrationsScheduled

ServiceIntegrationsSucceeded

ServiceIntegrationsStarted

## Step Functions API
<a name="appinsights-metrics-step-functions-api"></a>

ThrottledEvents

ProvisionedBucketSize

ProvisionedRefillRate

ConsumedCapacity

# API Gateway REST API 스테이지
<a name="appinsights-metrics-api-gateway"></a>

CloudWatch Application Insights는 다음 지표를 지원합니다.

4XXError

5XXError

IntegrationLatency

Latency

CacheHitCount

CacheMissCount

# SAP HANA
<a name="appinsights-metrics-sap-hana"></a>

**참고**  
CloudWatch Application Insights는 단일 SID HANA 환경만 지원합니다. 여러 HANA SID가 연결된 경우, 첫 번째로 감지된 SID에 대해서만 모니터링이 설정됩니다.

CloudWatch Application Insights는 다음 지표를 지원합니다.

hanadb\$1every\$1service\$1started\$1status

hanadb\$1daemon\$1service\$1started\$1status

hanadb\$1preprocessor\$1service\$1started\$1status

hanadb\$1webdispatcher\$1service\$1started\$1status

hanadb\$1compileserver\$1service\$1started\$1status

hanadb\$1nameserver\$1service\$1started\$1status

hanadb\$1server\$1startup\$1time\$1variations\$1seconds

hanadb\$1level\$15\$1alerts\$1count

hanadb\$1level\$14\$1alerts\$1count

hanadb\$1out\$1of\$1memory\$1events\$1count

hanadb\$1max\$1trigger\$1read\$1ratio\$1percent

hanadb\$1max\$1trigger\$1write\$1ratio\$1percent

hanadb\$1log\$1switch\$1wait\$1ratio\$1percent

hanadb\$1log\$1switch\$1race\$1ratio\$1percent

hanadb\$1time\$1since\$1last\$1savepoint\$1seconds

hanadb\$1disk\$1usage\$1highlevel\$1percent

hanadb\$1max\$1converter\$1page\$1number\$1count

hanadb\$1long\$1running\$1savepoints\$1count

hanadb\$1failed\$1io\$1reads\$1count

hanadb\$1failed\$1io\$1writes\$1count

hanadb\$1disk\$1data\$1unused\$1percent

hanadb\$1current\$1allocation\$1limit\$1used\$1percent

hanadb\$1table\$1allocation\$1limit\$1used\$1percent

hanadb\$1host\$1total\$1physical\$1memory\$1mb

hanadb\$1host\$1physical\$1memory\$1used\$1mb

hanadb\$1host\$1physical\$1memory\$1free\$1mb

hanadb\$1swap\$1memory\$1free\$1mb

hanadb\$1swap\$1memory\$1used\$1mb

hanadb\$1host\$1allocation\$1limit\$1mb

hanadb\$1host\$1total\$1memory\$1used\$1mb

 hanadb\$1host\$1total\$1peak\$1memory\$1used\$1mb

hanadb\$1host\$1total\$1allocation\$1limit\$1mb

hanadb\$1host\$1code\$1size\$1mb

hanadb\$1host\$1shared\$1memory\$1allocation\$1mb

hanadb\$1cpu\$1usage\$1percent

hanadb\$1cpu\$1user\$1percent

hanadb\$1cpu\$1system\$1percent

hanadb\$1cpu\$1waitio\$1percent

hanadb\$1cpu\$1busy\$1percent

hanadb\$1cpu\$1idle\$1percent

hanadb\$1long\$1delta\$1merge\$1count

hanadb\$1unsuccessful\$1delta\$1merge\$1count

hanadb\$1successful\$1delta\$1merge\$1count

hanadb\$1row\$1store\$1allocated\$1size\$1mb

hanadb\$1row\$1store\$1free\$1size\$1mb

hanadb\$1row\$1store\$1used\$1size\$1mb

hanadb\$1temporary\$1tables\$1count

hanadb\$1large\$1non\$1compressed\$1tables\$1count

hanadb\$1total\$1non\$1compressed\$1tables\$1count

hanadb\$1longest\$1running\$1job\$1seconds

hanadb\$1average\$1commit\$1time\$1milliseconds

hanadb\$1suspended\$1sql\$1statements\$1count

hanadb\$1plan\$1cache\$1hit\$1ratio\$1percent

hanadb\$1plan\$1cache\$1lookup\$1count

hanadb\$1plan\$1cache\$1hit\$1count

hanadb\$1plan\$1cache\$1total\$1execution\$1microseconds

hanadb\$1plan\$1cache\$1cursor\$1duration\$1microseconds

hanadb\$1plan\$1cache\$1preparation\$1microseconds

hanadb\$1plan\$1cache\$1evicted\$1count

hanadb\$1plan\$1cache\$1evicted\$1microseconds

hanadb\$1plan\$1cache\$1evicted\$1preparation\$1count

hanadb\$1plan\$1cache\$1evicted\$1execution\$1count

hanadb\$1plan\$1cache\$1evicted\$1preparation\$1microseconds

hanadb\$1plan\$1cache\$1evicted\$1cursor\$1duration\$1microseconds

hanadb\$1plan\$1cache\$1evicted\$1total\$1execution\$1microseconds

hanadb\$1plan\$1cache\$1evicted\$1plan\$1size\$1mb

hanadb\$1plan\$1cache\$1count

hanadb\$1plan\$1cache\$1preparation\$1count

hanadb\$1plan\$1cache\$1execution\$1count

hanadb\$1network\$1collision\$1rate

hanadb\$1network\$1receive\$1rate

hanadb\$1network\$1transmit\$1rate

hanadb\$1network\$1packet\$1receive\$1rate

hanadb\$1network\$1packet\$1transmit\$1rate

hanadb\$1network\$1transmit\$1error\$1rate

hanadb\$1network\$1receive\$1error\$1rate

hanadb\$1time\$1until\$1license\$1expires\$1days

hanadb\$1is\$1license\$1valid\$1status

hanadb\$1local\$1running\$1connections\$1count

hanadb\$1local\$1idle\$1connections\$1count

hanadb\$1remote\$1running\$1connections\$1count

hanadb\$1remote\$1idle\$1connections\$1count

hanadb\$1last\$1full\$1data\$1backup\$1age\$1days

hanadb\$1last\$1data\$1backup\$1age\$1days

hanadb\$1last\$1log\$1backup\$1age\$1hours

hanadb\$1failed\$1data\$1backup\$1past\$17\$1days\$1count

hanadb\$1failed\$1log\$1backup\$1past\$17\$1days\$1count

hanadb\$1oldest\$1backup\$1in\$1catalog\$1age\$1days

hanadb\$1backup\$1catalog\$1size\$1mb

hanadb\$1hsr\$1replication\$1status

hanadb\$1hsr\$1log\$1shipping\$1delay\$1seconds

hanadb\$1hsr\$1secondary\$1failover\$1count

hanadb\$1hsr\$1secondary\$1reconnect\$1count

hanadb\$1hsr\$1async\$1buffer\$1used\$1mb

hanadb\$1hsr\$1secondary\$1active\$1status

hanadb\$1handle\$1count

hanadb\$1ping\$1time\$1milliseconds

hanadb\$1connection\$1count

hanadb\$1internal\$1connection\$1count

hanadb\$1external\$1connection\$1count

hanadb\$1idle\$1connection\$1count

hanadb\$1transaction\$1count

hanadb\$1internal\$1transaction\$1count

hanadb\$1external\$1transaction\$1count

hanadb\$1user\$1transaction\$1count

hanadb\$1blocked\$1transaction\$1count

hanadb\$1statement\$1count

hanadb\$1active\$1commit\$1id\$1range\$1count

hanadb\$1mvcc\$1version\$1count

hanadb\$1pending\$1session\$1count

hanadb\$1record\$1lock\$1count

hanadb\$1read\$1count

hanadb\$1write\$1count

hanadb\$1merge\$1count

hanadb\$1unload\$1count

hanadb\$1active\$1thread\$1count

hanadb\$1waiting\$1thread\$1count

hanadb\$1total\$1thread\$1count

hanadb\$1active\$1sql\$1executor\$1count

hanadb\$1waiting\$1sql\$1executor\$1count

hanadb\$1total\$1sql\$1executor\$1count

hanadb\$1data\$1write\$1size\$1mb

hanadb\$1data\$1write\$1time\$1milliseconds

hanadb\$1log\$1write\$1size\$1mb

hanadb\$1log\$1write\$1time\$1milliseconds

hanadb\$1data\$1read\$1size\$1mb

hanadb\$1data\$1read\$1time\$1milliseconds

hanadb\$1log\$1read\$1size\$1mb

hanadb\$1log\$1read\$1time\$1milliseconds

hanadb\$1data\$1backup\$1write\$1size\$1mb

hanadb\$1data\$1backup\$1write\$1time\$1milliseconds

hanadb\$1log\$1backup\$1write\$1size\$1mb

hanadb\$1log\$1backup\$1write\$1time\$1milliseconds

hanadb\$1mutex\$1collision\$1count

hanadb\$1read\$1write\$1lock\$1collision\$1count

hanadb\$1admission\$1control\$1admit\$1count

hanadb\$1admission\$1control\$1reject\$1count

hanadb\$1admission\$1control\$1queue\$1size\$1mb

hanadb\$1admission\$1control\$1wait\$1time\$1milliseconds

# SAP ASE
<a name="appinsights-metrics-sap-ase"></a>

CloudWatch Application Insights는 다음 지표를 지원합니다.

asedb\$1database\$1availability

asedb\$1trunc\$1log\$1on\$1chkpt\$1enabled

asedb\$1last\$1db\$1backup\$1age\$1in\$1days

asedb\$1last\$1transaction\$1log\$1backup\$1age\$1in\$1hours

asedb\$1suspected\$1database

asedb\$1db\$1space\$1usage\$1percent

asedb\$1db\$1log\$1space\$1usage\$1percent

asedb\$1locked\$1login

asedb\$1has\$1mixed\$1log\$1and\$1data

asedb\$1runtime\$1for\$1open\$1transactions

asedb\$1data\$1cache\$1hit\$1ratio

asedb\$1data\$1cache\$1usage

asedb\$1sql\$1cache\$1hit\$1ratio

asedb\$1cache\$1usage

asedb\$1run\$1queue\$1length

asedb\$1number\$1of\$1rollbacks

asedb\$1number\$1of\$1commits

asedb\$1number\$1of\$1transactions

asedb\$1outstanding\$1disk\$1io

asedb\$1percent\$1io\$1busy

asedb\$1percent\$1system\$1busy

asedb\$1percent\$1locks\$1active

asedb\$1scheduled\$1jobs\$1failed\$1percent

asedb\$1user\$1connections\$1percent

asedb\$1query\$1logical\$1reads

asedb\$1query\$1physical\$1reads

asedb\$1query\$1cpu\$1time

asedb\$1query\$1memory\$1usage

# Amazon EC2에 대한 SAP ASE 고가용성
<a name="appinsights-metrics-sap-ase-ha"></a>

CloudWatch Application Insights는 다음 지표를 지원합니다.

asedb\$1ha\$1replication\$1state

asedb\$1ha\$1replication\$1mode

asedb\$1ha\$1replication\$1latency\$1in\$1minutes

# SAP NetWeaver
<a name="appinsights-metrics-sap-netweaver"></a>

CloudWatch Application Insights는 다음 지표를 지원합니다.


| 지표 | 설명 | 
| --- | --- | 
| sap\$1alerts\$1ResponseTime |  CCMS(RZ20)>R3Services>Dialog>ResponseTime의 SAP 응답 시간 알림.  | 
|  sap\$1alerts\$1ResponseTimeDialog  | CCMS(RZ20)>R3Services>Dialog> ResponseTimeDialog의 SAP 응답 시간 대화 상자 경고. | 
| sap\$1alerts\$1ResponseTimeDialogRFC | CCMS(RZ20)>R3Services> Dialog>ResponseTimeDialogRFC의 SAP 응답 시간 알림. | 
| sap\$1alerts\$1DBRequestTime | CCMS(RZ20)>R3Services>Dialog>DBRequestTime의 SAP 응답 시간 알림. | 
| sap\$1alerts\$1FrontendResponseTime | CCMS(RZ20)>R3Services > Dialog>FrontEndResponseTime의 SAP 응답 시간 알림. | 
| sap\$1alerts\$1Database  | SAP 시스템에서 데이터베이스 관련 오류를 기록했습니다. SM21 또는 CCMS(RZ20)>R3Syslog>Database의 알림. | 
| sap\$1alerts\$1QueueTime  | CCMS(RZ20)>R3Services>Dialog>QueueTime의 SAP 대기열 시간 알림. | 
| sap\$1alerts\$1AbortedJobs | SAP 시스템에서 실패한 백그라운드 작업. (RZ20)>R3Services > Background>AbortedJobs의 알림. | 
| sap\$1alerts\$1BasisSystem | SAP 시스템에서 시스템 수준 오류를 기록했습니다. SM21 또는 CCMS(RZ20)>R3Syslog>BasisSystem의 알림. | 
| sap\$1alerts\$1Security  | SAP 시스템에서 보안 관련 메시지를 기록했습니다. SM21 또는 CCMS(RZ20)>R3Syslog>Security의 알림. | 
| sap\$1alerts\$1System  | SAP 시스템에서 보안 또는 감사 관련 메시지를 기록했습니다. SM21 또는 CCMS(RZ20)>Security>System의 알림. | 
| sap\$1alerts\$1LongRunners  | SAP 시스템에 장기 실행 프로그램이 있습니다. CCMS(RZ20)>R3Services > Dialog>LongRunners의 알림. | 
| sap\$1alerts\$1SqlError  | SAP 데이터베이스 클라이언트 계층 오류 로그가 있습니다. CCMS(RZ20)>DatabaseClient>AbapSql>SqlError의 알림. | 
| sap\$1alerts\$1State  | CCMS (RZ20)>OS Collector>State의 상태 알림. | 
| sap\$1alerts\$1Shortdumps  | ST22 및 CCMS(RZ20)>R3Abap>Shortdumps의 Shortdumps 알림. | 
| sap\$1alerts\$1Availability  | SM21, SM50, SM51, SM66 및 CCMS(RZ20)>InstanceAsTask>Availability의 SAP 애플리케이션 서버 인스턴스에 대한 가용성 알림. | 
| sap\$1dispatcher\$1queue\$1high | SAPControl 웹 서비스 함수 GetQueueStatistic은 디스패처 대기열 높음 개수를 제공합니다. | 
| sap\$1dispatcher\$1queue\$1max | SAPControl 웹 서비스 함수 GetQueueStatistic은 디스패처 대기열 최대 개수를 제공합니다. | 
| sap\$1dispatcher\$1queue\$1now | SAPControl 웹 서비스 함수 GetQueueStatistic은 디스패처 대기열 현재 개수를 제공합니다. | 
| sap\$1dispatcher\$1queue\$1reads | SAPControl 웹 서비스 함수 GetQueueStatistic은 디스패처 대기열 읽기 개수를 제공합니다. | 
| sap\$1dispatcher\$1queue\$1writes | SAPControl 웹 서비스 함수 GetQueueStatistic은 디스패처 대기열 쓰기 개수를 제공합니다. | 
| sap\$1enqueue\$1server\$1arguments\$1high  | SAPControl 웹 서비스 함수 EnqGetStatistic은 대기열에 추가 인수 높음을 제공합니다. | 
| sap\$1enqueue\$1server\$1arguments\$1max  | SAPControl 웹 서비스 함수 EnqGetStatistic은 대기열에 추가 인수 최대를 제공합니다. | 
| sap\$1enqueue\$1server\$1arguments\$1now | SAPControl 웹 서비스 함수 EnqGetStatistic은 대기열에 추가 인수 지금을 제공합니다. | 
| sap\$1enqueue\$1server\$1arguments\$1state | SAPControl 웹 서비스 함수 EnqGetStatistic은 대기열에 추가 인수 상태를 제공합니다. | 
| sap\$1enqueue\$1server\$1backup\$1requests | SAPControl 웹 서비스 함수 EnqGetStatistic은 대기열에 추가 백업 요청을 제공합니다. | 
| sap\$1enqueue\$1server\$1cleanup\$1requests | SAPControl 웹 서비스 함수 EnqGetStatistic은 대기열에 추가 정리 요청을 제공합니다. | 
| sap\$1enqueue\$1server\$1dequeue\$1all\$1requests | SAPControl 웹 서비스 함수 EnqGetStatistic은 대기열에서 제거 모든 요청을 제공합니다. | 
| sap\$1enqueue\$1server\$1dequeue\$1errors | SAPControl 웹 서비스 함수 EnqGetStatistic은 대기열에서 제거 오류를 제공합니다. | 
| sap\$1enqueue\$1server\$1dequeue\$1requests  | SAPControl 웹 서비스 함수 EnqGetStatistic은 대기열에서 제거 요청을 제공합니다. | 
| sap\$1enqueue\$1server\$1enqueue\$1errors | SAPControl 웹 서비스 함수 EnqGetStatistic은 대기열에 추가 오류를 제공합니다. | 
| sap\$1enqueue\$1server\$1enqueue\$1rejects  | SAPControl 웹 서비스 함수 EnqGetStatistic은 대기열에 추가 거부를 제공합니다. | 
| sap\$1enqueue\$1server\$1enqueue\$1requests | SAPControl 웹 서비스 함수 EnqGetStatistic은 대기열에 추가 요청을 제공합니다. | 
| sap\$1enqueue\$1server\$1lock\$1time | SAPControl 웹 서비스 함수 EnqGetStatistic은 대기열에 추가 잠금 시간을 제공합니다. | 
| sap\$1enqueue\$1server\$1lock\$1wait\$1time | SAPControl 웹 서비스 함수 EnqGetStatistic은 대기열에 추가 잠금 대기 시간을 제공합니다. | 
| sap\$1enqueue\$1server\$1locks\$1high | SAPControl 웹 서비스 함수 EnqGetStatistic은 대기열에 추가 잠금 높음을 제공합니다. | 
| sap\$1enqueue\$1server\$1locks\$1max | SAPControl 웹 서비스 함수 EnqGetStatistic은 대기열에 추가 잠금 최대를 제공합니다. | 
| sap\$1enqueue\$1server\$1locks\$1now | SAPControl 웹 서비스 함수 EnqGetStatistic은 대기열에 추가 잠금 지금을 제공합니다. | 
| sap\$1enqueue\$1server\$1locks\$1state | SAPControl 웹 서비스 함수 EnqGetStatistic은 대기열에 추가 잠금 상태를 제공합니다. | 
| sap\$1enqueue\$1server\$1owner\$1high | SAPControl 웹 서비스 함수 EnqGetStatistic은 대기열에 추가 소유자 높음을 제공합니다. | 
| sap\$1enqueue\$1server\$1owner\$1max | SAPControl 웹 서비스 함수 EnqGetStatistic은 대기열에 추가 소유자 최대를 제공합니다. | 
| sap\$1enqueue\$1server\$1owner\$1now | SAPControl 웹 서비스 함수 EnqGetStatistic은 대기열에 추가 소유자 지금을 제공합니다. | 
| sap\$1enqueue\$1server\$1owner\$1state | SAPControl 웹 서비스 함수 EnqGetStatistic은 대기열에 추가 소유자 상태를 제공합니다. | 
| sap\$1enqueue\$1server\$1replication\$1state  | SAPControl 웹 서비스 함수 EnqGetStatistic은 대기열에 추가 복제 상태 상태를 제공합니다. | 
| sap\$1enqueue\$1server\$1reporting\$1requests | SAPControl 웹 서비스 함수 EnqGetStatistic은 보고 요청 상태를 제공합니다. | 
| sap\$1enqueue\$1server\$1server\$1time | SAPControl 웹 서비스 함수 EnqGetStatistic은 Enqueue Server 시간을 제공합니다. | 
| sap\$1HA\$1check\$1failover\$1config\$1state | SAPControl 웹 서비스 함수 HACheckFailoverConfig는 SAP High Availability 상태를 제공합니다. | 
| sap\$1HA\$1get\$1failover\$1config\$1HAActive | SAPControl 웹 서비스 함수 HAGetFailoverConfig는 SAP High Availability 클러스터 구성 및 상태를 제공합니다. | 
| sap\$1start\$1service\$1processes  | SAPControl 웹 서비스 함수 GetProcessList는 disp\$1work, IGS, gwrd, icman, 메시지 서버, Enqueue Server 프로세스 상태를 제공합니다. | 

# HA 클러스터
<a name="appinsights-metrics-ha-cluster"></a>

CloudWatch Application Insights는 다음 지표를 지원합니다.

ha\$1cluster\$1pacemaker\$1stonith\$1enabled 

ha\$1cluster\$1corosync\$1quorate

hanadb\$1webdispatcher\$1service\$1started\$1status

ha\$1cluster\$1pacemaker\$1nodes 

ha\$1cluster\$1corosync\$1ring\$1errors

ha\$1cluster\$1pacemaker\$1fail\$1count 

# Java
<a name="appinsights-metrics-java"></a>

CloudWatch Application Insights는 다음 지표를 지원합니다.

java\$1lang\$1memory\$1heapmemoryusage\$1used

java\$1lang\$1memory\$1heapmemoryusage\$1committed

java\$1lang\$1operatingsystem\$1openfiledescriptorcount

java\$1lang\$1operatingsystem\$1maxfiledescriptorcount

java\$1lang\$1operatingsystem\$1freephysicalmemorysize

java\$1lang\$1operatingsystem\$1freeswapspacesize

java\$1lang\$1threading\$1threadcount

java\$1lang\$1threading\$1daemonthreadcount

java\$1lang\$1classloading\$1loadedclasscount

java\$1lang\$1garbagecollector\$1collectiontime\$1copy

java\$1lang\$1garbagecollector\$1collectiontime\$1ps\$1scavenge

java\$1lang\$1garbagecollector\$1collectiontime\$1parnew

java\$1lang\$1garbagecollector\$1collectiontime\$1marksweepcompact

java\$1lang\$1garbagecollector\$1collectiontime\$1ps\$1marksweep

java\$1lang\$1garbagecollector\$1collectiontime\$1concurrentmarksweep

java\$1lang\$1garbagecollector\$1collectiontime\$1g1\$1young\$1generation

java\$1lang\$1garbagecollector\$1collectiontime\$1g1\$1old\$1generation

java\$1lang\$1garbagecollector\$1collectiontime\$1g1\$1mixed\$1generation

java\$1lang\$1operatingsystem\$1committedvirtualmemorysize

# Amazon Elastic Container Service(Amazon ECS)
<a name="appinsights-metrics-ecs"></a>

CloudWatch Application Insights는 다음 지표를 지원합니다.

**Topics**
+ [CloudWatch 기본 지표](#appinsights-metrics-ecs-built-in-metrics)
+ [Container Insights 지표](#appinsights-metrics-ecs-container-insights-metrics)
+ [Container Insights Prometheus 지표](#appinsights-metrics-ecs-container-insights-prometheus)

## CloudWatch 기본 지표
<a name="appinsights-metrics-ecs-built-in-metrics"></a>

CPUReservation

CPUUtilization

MemoryReservation

MemoryUtilization

GPUReservation

## Container Insights 지표
<a name="appinsights-metrics-ecs-container-insights-metrics"></a>

ContainerInstanceCount

CpuUtilized

CpuReserved

DeploymentCount

DesiredTaskCount

MemoryUtilized

MemoryReserved

NetworkRxBytes

NetworkTxBytes

PendingTaskCount

RunningTaskCount

ServiceCount

StorageReadBytes

StorageWriteBytes

TaskCount

TaskSetCount

instance\$1cpu\$1limit

instance\$1cpu\$1reserved\$1capacity

instance\$1cpu\$1usage\$1total

instance\$1cpu\$1utilization

instance\$1filesystem\$1utilization

instance\$1memory\$1limit

instance\$1memory\$1reserved\$1capacity

instance\$1memory\$1utilization

instance\$1memory\$1working\$1set

instance\$1network\$1total\$1bytes

instance\$1number\$1of\$1running\$1tasks

## Container Insights Prometheus 지표
<a name="appinsights-metrics-ecs-container-insights-prometheus"></a>

**Java JMX 지표**

java\$1lang\$1memory\$1heapmemoryusage\$1used

java\$1lang\$1memory\$1heapmemoryusage\$1committed

java\$1lang\$1operatingsystem\$1openfiledescriptorcount

java\$1lang\$1operatingsystem\$1maxfiledescriptorcount

java\$1lang\$1operatingsystem\$1freephysicalmemorysize

java\$1lang\$1operatingsystem\$1freeswapspacesize

java\$1lang\$1threading\$1threadcount

java\$1lang\$1classloading\$1loadedclasscount

java\$1lang\$1threading\$1daemonthreadcount

java\$1lang\$1garbagecollector\$1collectiontime\$1copy

java\$1lang\$1garbagecollector\$1collectiontime\$1ps\$1scavenge

java\$1lang\$1garbagecollector\$1collectiontime\$1parnew

java\$1lang\$1garbagecollector\$1collectiontime\$1marksweepcompact

java\$1lang\$1garbagecollector\$1collectiontime\$1ps\$1marksweep

java\$1lang\$1garbagecollector\$1collectiontime\$1concurrentmarksweep

java\$1lang\$1garbagecollector\$1collectiontime\$1g1\$1young\$1generation

java\$1lang\$1garbagecollector\$1collectiontime\$1g1\$1old\$1generation

java\$1lang\$1garbagecollector\$1collectiontime\$1g1\$1mixed\$1generation

java\$1lang\$1operatingsystem\$1committedvirtualmemorysize

# AWS의 Kubernetes
<a name="appinsights-metrics-kubernetes"></a>

CloudWatch Application Insights는 다음 지표를 지원합니다.

**Topics**
+ [Container Insights 지표](#appinsights-metrics-kubernetes-container-insights-metrics)
+ [Container Insights Prometheus 지표](#appinsights-metrics-kubernetes-container-insights-prometheus)

## Container Insights 지표
<a name="appinsights-metrics-kubernetes-container-insights-metrics"></a>

cluster\$1failed\$1node\$1count

cluster\$1node\$1count

namespace\$1number\$1of\$1running\$1pods

node\$1cpu\$1limit

node\$1cpu\$1reserved\$1capacity

node\$1cpu\$1usage\$1total

node\$1cpu\$1utilization

node\$1filesystem\$1utilization

node\$1memory\$1limit

node\$1memory\$1reserved\$1capacity

node\$1memory\$1utilization

node\$1memory\$1working\$1set

node\$1network\$1total\$1bytes

node\$1number\$1of\$1running\$1containers

node\$1number\$1of\$1running\$1pods

pod\$1cpu\$1reserved\$1capacity

pod\$1cpu\$1utilization

pod\$1cpu\$1utilization\$1over\$1pod\$1limit

pod\$1memory\$1reserved\$1capacity

pod\$1memory\$1utilization

pod\$1memory\$1utilization\$1over\$1pod\$1limit

pod\$1network\$1rx\$1bytes

pod\$1network\$1tx\$1bytes

service\$1number\$1of\$1running\$1pods

## Container Insights Prometheus 지표
<a name="appinsights-metrics-kubernetes-container-insights-prometheus"></a>

**Java JMX 지표**

java\$1lang\$1memory\$1heapmemoryusage\$1used

java\$1lang\$1memory\$1heapmemoryusage\$1committed

java\$1lang\$1operatingsystem\$1openfiledescriptorcount

java\$1lang\$1operatingsystem\$1maxfiledescriptorcount

java\$1lang\$1operatingsystem\$1freephysicalmemorysize

java\$1lang\$1operatingsystem\$1freeswapspacesize

java\$1lang\$1threading\$1threadcount

java\$1lang\$1classloading\$1loadedclasscount

java\$1lang\$1threading\$1daemonthreadcount

java\$1lang\$1garbagecollector\$1collectiontime\$1copy

java\$1lang\$1garbagecollector\$1collectiontime\$1ps\$1scavenge

java\$1lang\$1garbagecollector\$1collectiontime\$1parnew

java\$1lang\$1garbagecollector\$1collectiontime\$1marksweepcompact

java\$1lang\$1garbagecollector\$1collectiontime\$1ps\$1marksweep

java\$1lang\$1garbagecollector\$1collectiontime\$1concurrentmarksweep

java\$1lang\$1garbagecollector\$1collectiontime\$1g1\$1young\$1generation

java\$1lang\$1garbagecollector\$1collectiontime\$1g1\$1old\$1generation

java\$1lang\$1garbagecollector\$1collectiontime\$1g1\$1mixed\$1generation

java\$1lang\$1operatingsystem\$1committedvirtualmemorysize

# Amazon FSx
<a name="appinsights-metrics-fsx"></a>

CloudWatch Application Insights는 다음 지표를 지원합니다.

DataReadBytes

DataWriteBytes

DataReadOperations

DataWriteOperations

MetadataOperations

FreeStorageCapacity

FreeDataStorageCapacity

LogicalDiskUsage

PhysicalDiskUsage

# Amazon VPC
<a name="appinsights-metrics-vpc"></a>

CloudWatch Application Insights는 다음 지표를 지원합니다.

NetworkAddressUsage

NetworkAddressUsagePeered

VPCFirewallQueryVolume

# Amazon VPC NAT 게이트웨이
<a name="appinsights-metrics-nat-gateways"></a>

CloudWatch Application Insights는 다음 지표를 지원합니다.

ErrorPortAllocation

IdleTimeoutCount

# Amazon Route 53 상태 확인
<a name="appinsights-metrics-health-check"></a>

CloudWatch Application Insights는 다음 지표를 지원합니다.

ChildHealthCheckHealthyCount

ConnectionTime

HealthCheckPercentageHealthy

HealthCheckStatus

SSLHandshakeTime 

TimeToFirstByte

# Amazon Route 53 호스팅 영역
<a name="appinsights-metrics-hosted-zone"></a>

CloudWatch Application Insights는 다음 지표를 지원합니다.

DNSQueries

DNSSECInternalFailure

DNSSECKeySigningKeysNeedingAction

DNSSECKeySigningKeyMaxNeedingActionAge

DNSSECKeySigningKeyAge

# Amazon Route 53 Resolver 엔드포인트
<a name="appinsights-metrics-resolver-endpoint"></a>

CloudWatch Application Insights는 다음 지표를 지원합니다.

EndpointHealthyENICount

EndpointUnHealthyENICount

InboundQueryVolume

OutboundQueryVolume

OutboundQueryAggregateVolume

# AWS Network Firewall 규칙 그룹
<a name="appinsights-metrics-firewall-rule-group"></a>

CloudWatch Application Insights는 다음 지표를 지원합니다.

FirewallRuleGroupQueryVolume

# AWS Network Firewall 규칙 그룹 연결
<a name="appinsights-metrics-firewall-rule-group-assoc"></a>

CloudWatch Application Insights는 다음 지표를 지원합니다.

FirewallRuleGroupVpcQueryVolume

# 데이터 포인트 요구 사항이 있는 지표
<a name="appinsights-metrics-datapoint-requirements"></a>

경보가 발생하는 명확한 기본 임곗값이 없는 지표의 경우, Application Insights는 경보가 발생하는 데 필요한 임곗값을 예측할 수 있을 만큼의 충분한 데이터 포인트가 지표에 확보될 때까지 기다립니다. 경보가 생성되기 전에 CloudWatch Application Insights가 확인하는 지표 데이터 포인트 요구 사항은 다음과 같습니다.
+ 지표에 지난 2\$115일 동안의 데이터 포인트가 100개 이상 있는 경우
+ 지표에 마지막 날 이후 데이터 포인트가 100개 이상 있는 경우

다음 지표는 이러한 데이터 포인트 요구 사항을 따릅니다. CloudWatch 에이전트 지표는 경보를 생성하는 데 최대 1시간이 걸립니다.

**Topics**
+ [AWS/ApplicationELB](#appinsights-metrics-datapoint-requirements-app-elb)
+ [AWS/AutoScaling](#appinsights-metrics-datapoint-requirements-autoscaling)
+ [AWS/EC2](#appinsights-metrics-datapoint-requirements-ec2)
+ [Elastic Block Store(EBS)](#appinsights-metrics-datapoint-requirements-ebs)
+ [AWS/ELB](#appinsights-metrics-datapoint-requirements-elb)
+ [AWS/RDS](#appinsights-metrics-datapoint-requirements-rds)
+ [AWS/Lambda](#appinsights-metrics-datapoint-requirements-lambda)
+ [AWS/SQS](#appinsights-metrics-datapoint-requirements-sqs)
+ [AWS/CWAgent](#appinsights-metrics-datapoint-requirements-cwagent)
+ [AWS/DynamoDB](#appinsights-metrics-datapoint-requirements-dynamo)
+ [AWS/S3](#appinsights-metrics-datapoint-requirements-s3)
+ [AWS/States](#appinsights-metrics-datapoint-requirements-states)
+ [AWS/ApiGateway](#appinsights-metrics-datapoint-requirements-api-gateway)
+ [AWS/SNS](#appinsights-metrics-datapoint-requirements-sns)

## AWS/ApplicationELB
<a name="appinsights-metrics-datapoint-requirements-app-elb"></a>

ActiveConnectionCount

ConsumedLCUs

HTTPCode\$1ELB\$14XX\$1Count

HTTPCode\$1Target\$12XX\$1Count

HTTPCode\$1Target\$13XX\$1Count

HTTPCode\$1Target\$14XX\$1Count

HTTPCode\$1Target\$15XX\$1Count

NewConnectionCount

ProcessedBytes

TargetResponseTime

UnHealthyHostCount

## AWS/AutoScaling
<a name="appinsights-metrics-datapoint-requirements-autoscaling"></a>

GroupDesiredCapacity

GroupInServiceInstances

GroupMaxSize

GroupMinSize

GroupPendingInstances

GroupStandbyInstances

GroupTerminatingInstances

GroupTotalInstances

## AWS/EC2
<a name="appinsights-metrics-datapoint-requirements-ec2"></a>

CPUCreditBalance

CPUCreditUsage

CPUSurplusCreditBalance

CPUSurplusCreditsCharged

CPUUtilization

DiskReadBytes

DiskReadOps

DiskWriteBytes

DiskWriteOps

EBSByteBalance%

EBSIOBalance%

EBSReadBytes

EBSReadOps

EBSWriteBytes

EBSWriteOps

NetworkIn

NetworkOut

NetworkPacketsIn

NetworkPacketsOut

## Elastic Block Store(EBS)
<a name="appinsights-metrics-datapoint-requirements-ebs"></a>

VolumeReadBytes 

VolumeWriteBytes 

VolumeReadOps

VolumeWriteOps

VolumeTotalReadTime 

VolumeTotalWriteTime 

VolumeIdleTime

VolumeQueueLength

VolumeThroughputPercentage

VolumeConsumedReadWriteOps

BurstBalance

## AWS/ELB
<a name="appinsights-metrics-datapoint-requirements-elb"></a>

EstimatedALBActiveConnectionCount

EstimatedALBConsumedLCUs

EstimatedALBNewConnectionCount

EstimatedProcessedBytes

HTTPCode\$1Backend\$14XX

HTTPCode\$1Backend\$15XX

HealthyHostCount

Latency

RequestCount

SurgeQueueLength

UnHealthyHostCount

## AWS/RDS
<a name="appinsights-metrics-datapoint-requirements-rds"></a>

ActiveTransactions

AuroraBinlogReplicaLag

AuroraReplicaLag

BackupRetentionPeriodStorageUsed

BinLogDiskUsage

BlockedTransactions

CPUCreditBalance

CommitLatency

CommitThroughput

DDLLatency

DDLThroughput

DMLLatency

DMLThroughput

DatabaseConnections

교착

DeleteLatency

DeleteThroughput

DiskQueueDepth

EngineUptime

FreeLocalStorage

FreeStorageSpace

FreeableMemory

InsertLatency

InsertThroughput

LoginFailures

NetworkReceiveThroughput

NetworkThroughput

NetworkTransmitThroughput

쿼리

ReadIOPS

ReadThroughput

SelectLatency

SelectThroughput

SnapshotStorageUsed

TotalBackupStorageBilled

UpdateLatency

UpdateThroughput

VolumeBytesUsed

VolumeReadIOPs

VolumeWriteIOPs

WriteIOPS

WriteThroughput

## AWS/Lambda
<a name="appinsights-metrics-datapoint-requirements-lambda"></a>

오류

DeadLetterErrors

지속 시간

제한

IteratorAge

ProvisionedConcurrencySpilloverInvocations

## AWS/SQS
<a name="appinsights-metrics-datapoint-requirements-sqs"></a>

ApproximateAgeOfOldestMessage

ApproximateNumberOfMessagesDelayed

ApproximateNumberOfMessagesNotVisible

ApproximateNumberOfMessagesVisible

NumberOfEmptyReceives

NumberOfMessagesDeleted

NumberOfMessagesReceived

NumberOfMessagesSent

## AWS/CWAgent
<a name="appinsights-metrics-datapoint-requirements-cwagent"></a>

LogicalDisk % 사용 가능한 공간

사용 중인 메모리 % 커밋된 바이트

사용 가능한 메모리(MB)

네트워크 인터페이스 바이트 합계/초

페이징된 파일 % 사용량

PhysicalDisk % 디스크 시간

PhysicalDisk 평균 디스크 초/읽기

PhysicalDisk 평균 디스크 초/쓰기

PhysicalDisk 디스크 읽기 바이트/초

PhysicalDisk 디스크 읽기/초

PhysicalDisk 디스크 쓰기 바이트/초

PhysicalDisk 디스크 쓰기/초

프로세서 % 유휴 시간

프로세서 % 중단 시간

프로세서 % 프로세서 시간

프로세서 % 사용자 시간

SQLServer:액세스 방법 전달된 레코드/초

SQLServer:액세스 방법 페이지 분할/초

SQLServer:버퍼 관리자 버퍼 캐시 적중률

SQLServer:버퍼 관리자 페이지 예상 수명

SQLServer:수신된 데이터베이스 복제본 파일 바이트/초

SQLServer:수신된 데이터베이스 복제본 로그 바이트/초

SQLServer:실행 취소를 위한 나머지 데이터베이스 복제본 로그

SQLServer:데이터베이스 복제본 로그 전송 대기열

SQLServer:데이터베이스 복제본 미러링된 쓰기 트랜잭션/초

SQLServer:데이터베이스 복제본 복구 대기열

SQLServer:나머지 데이터베이스 복제본 다시 실행 바이트

SQLServer:데이터베이스 복제본 다시 실행 바이트/초

SQLServer:실행 취소가 필요한 데이터베이스 복제본 총 로그

SQLServer:데이터베이스 복제본 트랜잭션 지연

SQLServer:차단된 일반 통계 프로세스

SQLServer:SQL 통계 배치 요청/초

SQLServer:SQL 통계 SQL 컴파일/초

SQLServer:SQL 통계 SQL 재컴파일/초

시스템 프로세서 대기열 길이

TCPv4 연결 설정

TCPv6 연결 설정

## AWS/DynamoDB
<a name="appinsights-metrics-datapoint-requirements-dynamo"></a>

ConsumedReadCapacityUnits

ConsumedWriteCapacityUnits

ReadThrottleEvents

WriteThrottleEvents

TimeToLiveDeletedItemCount

ConditionalCheckFailedRequests

TransactionConflict

ReturnedRecordsCount

PendingReplicationCount

ReplicationLatency

## AWS/S3
<a name="appinsights-metrics-datapoint-requirements-s3"></a>

ReplicationLatency

BytesPendingReplication

OperationsPendingReplication

4xxErrors

5xxErrors

AllRequests

GetRequests

PutRequests

DeleteRequests

HeadRequests

PostRequests

SelectRequests

ListRequests

SelectScannedBytes

SelectReturnedBytes

FirstByteLatency

TotalRequestLatency

BytesDownloaded

BytesUploaded

## AWS/States
<a name="appinsights-metrics-datapoint-requirements-states"></a>

ActivitiesScheduled

ActivitiesStarted

ActivitiesSucceeded

ActivityScheduleTime

ActivityRuntime

ActivityTime

LambdaFunctionsScheduled

LambdaFunctionsStarted

LambdaFunctionsSucceeded

LambdaFunctionScheduleTime

LambdaFunctionRuntime

LambdaFunctionTime

ServiceIntegrationsScheduled

ServiceIntegrationsStarted

ServiceIntegrationsSucceeded

ServiceIntegrationScheduleTime

ServiceIntegrationRuntime

ServiceIntegrationTime

ProvisionedRefillRate

ProvisionedBucketSize

ConsumedCapacity

ThrottledEvents

## AWS/ApiGateway
<a name="appinsights-metrics-datapoint-requirements-api-gateway"></a>

4XXError 

IntegrationLatency

Latency

DataProcessed

CacheHitCount

CacheMissCount

## AWS/SNS
<a name="appinsights-metrics-datapoint-requirements-sns"></a>

NumberOfNotificationsDelivered

NumberOfMessagesPublished

NumberOfNotificationsFailed

NumberOfNotificationsFilteredOut

NumberOfNotificationsFilteredOut-InvalidAttributes

NumberOfNotificationsFilteredOut-NoMessageAttributes

NumberOfNotificationsRedrivenToDlq

NumberOfNotificationsFailedToRedriveToDlq

SMSSuccessRate

# 권장 지표
<a name="application-insights-recommended-metrics"></a>

다음 표에는 각 구성 요소 유형에 대해 권장되는 지표가 나와 있습니다.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/application-insights-recommended-metrics.html)

다음 표에는 각 구성 요소 유형에 대해 권장되는 프로세스 및 프로세스 지표가 나와 있습니다. CloudWatch Application Insights는 인스턴스에서 실행되지 않는 프로세스에 대한 프로세스 모니터링을 권장하지 않습니다.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/application-insights-recommended-metrics.html)

# 성능 카운터 지표
<a name="application-insights-performance-counter"></a>

성능 카운터 지표는 해당 성능 카운터 세트가 Windows 인스턴스에 설치된 경우에만 인스턴스에 권장됩니다.


| 성능 카운터 지표 이름 | 성능 카운터 집합 이름 | 
| --- | --- | 
| .NET CLR 예외 발생된 예외 수 | .NET CLR 예외 | 
| .NET CLR 예외 발생된 예외 수/초  | .NET CLR 예외 | 
| .NET CLR 예외 필터 수/초  | .NET CLR 예외 | 
| .NET CLR 예외 최종 수/초  | .NET CLR 예외 | 
| .NET CLR 예외 발생 깊이 파악/초  | .NET CLR 예외 | 
| .NET CLR Interop CCW 수  | .NET CLR Interop  | 
| .NET CLR Interop 스텁 수  | .NET CLR Interop  | 
| .NET CLR Interop TLB 내보내기 횟수/초  | .NET CLR Interop  | 
| .NET CLR Interop TLB 가져오기 횟수/초  | .NET CLR Interop  | 
| .NET CLR Interop 마샬링 수  | .NET CLR Interop  | 
| .NET CLR Jit Jit 시간(%)  | .NET CLR Jit  | 
| .NET CLR Jit 표준 Jit 실패  | .NET CLR Jit  | 
| .NET CLR 로딩 로딩 시간(%)  | .NET CLR 로딩  | 
| .NET CLR 로딩 로드 실패 비율  | .NET CLR 로딩  | 
| .NET CLR LocksAndThreads 경합 속도/초  | .NET CLR LocksAndThreads  | 
| .NET CLR LocksAndThreads 대기열 길이/초  | .NET CLR LocksAndThreads  | 
| .NET CLR 메모리 수 총 커밋된 바이트 수  | .NET CLR 메모리 | 
| .NET CLR 메모리 GC의 시간(%) | .NET CLR 메모리 | 
| .NET CLR 네트워킹 4.0.0.0 HttpWebRequest 평균 대기열 시간  | .NET CLR 네트워킹 4.0.0.0  | 
| .NET CLR 네트워킹 4.0.0.0 중단된 HttpWebRequests/초  | .NET CLR 네트워킹 4.0.0.0  | 
| .NET CLR 네트워킹 4.0.0.0 실패한 HttpWebRequests/초  | .NET CLR 네트워킹 4.0.0.0  | 
| .NET CLR 네트워킹 4.0.0.0 대기 중인 HttpWebRequests/Sec  | .NET CLR 네트워킹 4.0.0.0  | 
| APP\$1POOL\$1WAS Total Worker Process Ping Failures | APP\$1POOL\$1WAS | 
| ASP.NET 응용 프로그램 재시작  | ASP.NET  | 
| ASP.NET 요청 거부됨 | ASP.NET | 
| ASP.NET 작업자 프로세스 다시 시작 | ASP.NET | 
| ASP.NET 애플리케이션 캐시 API 공백 제거 | ASP.NET 응용 프로그램 | 
| ASP.NET Applications % Managed Processor Time(estimated) | ASP.NET 응용 프로그램 | 
| ASP.NET 응용 프로그램 오류 합계/초 | ASP.NET 응용 프로그램 | 
|  ASP.NET 응용 프로그램 오류 실행 중 처리되지 않은 오류/초  |  ASP.NET 응용 프로그램  | 
|  ASP.NET 응용 프로그램 응용 프로그램 대기열의 요청  |  ASP.NET 응용 프로그램  | 
|  ASP.NET 응용 프로그램 요청/초  |  ASP.NET 응용 프로그램  | 
| ASP.NET 요청 대기 시간  | ASP.NET  | 
| ASP.NET 대기 중인 요청  | ASP.NET  | 
| 데이터베이스 ==> 인스턴스 데이터베이스 캐시 적중률 | 데이터베이스 ==> 인스턴스 | 
| 데이터베이스 ==> 인스턴스 I/O 데이터베이스 읽기 평균 대기 시간 | 데이터베이스 ==> 인스턴스 | 
| 데이터베이스 ==> 인스턴스 I/O 데이터베이스 읽기/초 | 데이터베이스 ==> 인스턴스 | 
| 데이터베이스 ==> 인스턴스 I/O 로그 쓰기 평균 대기 시간 | 데이터베이스 ==> 인스턴스 | 
| DirectoryServices DRA에서 보류 중인 복제 운영 | DirectoryServices | 
| DirectoryServices DRA에서 보류 중인 복제 동기화 | DirectoryServices | 
| DirectoryServices LDAP 바인딩 시간 | DirectoryServices | 
| DNS 재귀 쿼리/초 | DNS | 
| DNS 재귀 쿼리 실패/초 | DNS | 
| DNS TCP 쿼리 수신/초 | DNS | 
| DNS 총 쿼리 수신/초 | DNS | 
| DNS 총 응답 발송/초 | DNS | 
| DNS UDP 쿼리 수신/초 | DNS | 
| HTTP 서비스 요청 대기열 CurrentQueueSize  | HTTP 서비스 요청 대기열  | 
|  LogicalDisk % 사용 가능한 공간  |  LogicalDisk  | 
| LogicalDisk 평균 디스크 초/쓰기 | LogicalDisk | 
| LogicalDisk 평균 디스크 초/읽기 | LogicalDisk | 
| LogicalDisk 평균 디스크 대기열 길이 | LogicalDisk | 
|  사용 중인 메모리 % 커밋된 바이트  | Memory | 
|  사용 가능한 메모리(MB)  |  Memory  | 
| 메모리 페이지/초  |  Memory  | 
| 메모리 장기 평균 대기 캐시 수명(초) | Memory | 
|  네트워크 인터페이스 바이트 합계/초  | 네트워크 인터페이스 | 
| 네트워크 인터페이스 바이트 수신/초 | 네트워크 인터페이스 | 
| 네트워크 인터페이스 바이트 발송/초 | 네트워크 인터페이스 | 
| 네트워크 인터페이스 현재 대역폭 | 네트워크 인터페이스 | 
|  페이징된 파일 % 사용량  |  페이징된 파일  | 
| PhysicalDisk % 디스크 시간 | PhysicalDisk | 
| PhysicalDisk 평균 디스크 대기열 길이 | PhysicalDisk | 
| PhysicalDisk 평균 디스크 초/읽기 | PhysicalDisk | 
| PhysicalDisk 평균 디스크 초/쓰기 | PhysicalDisk | 
| PhysicalDisk 디스크 읽기 바이트/초 | PhysicalDisk | 
| PhysicalDisk 디스크 읽기/초 | PhysicalDisk | 
| PhysicalDisk 디스크 쓰기 바이트/초 | PhysicalDisk | 
| PhysicalDisk 디스크 쓰기/초 | PhysicalDisk | 
|  프로세서 % 유휴 시간  | 처리자 | 
| 프로세서 % 중단 시간 |  처리자  | 
| 프로세서 % 프로세서 시간 |  처리자  | 
| 프로세서 % 사용자 시간 |  처리자  | 
| SharePoint Disk-Based Cache Blob 캐시 채우기 비율  | SharePoint Disk-Based Cache  | 
| SharePoint Disk-Based Cache Blob 캐시 플러시/초  | SharePoint Disk-Based Cache  | 
| SharePoint Disk-Based Cache Blob 캐시 적중률  | ‏‎SharePoint Disk-Based Cache  | 
| SharePoint Disk-Based Cache 총 캐시 압축 횟수 | SharePoint Disk-Based Cache  | 
| SharePoint Foundation 실행 시간/페이지 요청 | SharePoint Foundation | 
| SharePoint Publishing Cache 게시 캐시 플러시/초 | SharePoint Publishing Cache | 
| 보안 시스템 전체 통계 Kerberos 인증 | 보안 시스템 전체 통계 | 
| 보안 시스템 전체 통계 NTLM 인증 | 보안 시스템 전체 통계 | 
| SQLServer:액세스 방법 전달된 레코드/초 |  SQLServer:액세스 방법  | 
| SQLServer:액세스 방법 전체 스캔/초 |  SQLServer:액세스 방법  | 
| SQLServer:액세스 방법 페이지 분할/초 |  SQLServer:액세스 방법  | 
| SQLServer:버퍼 관리자 버퍼 캐시 적중률 |  SQLServer:버퍼 관리자  | 
| SQLServer:버퍼 관리자 페이지 예상 수명 |  SQLServer:버퍼 관리자  | 
| SQLServer:수신된 데이터베이스 복제본 파일 바이트/초 | SQLServer:Database Replica | 
| SQLServer:수신된 데이터베이스 복제본 로그 바이트/초 | SQLServer:Database Replica | 
| SQLServer:실행 취소를 위한 나머지 데이터베이스 복제본 로그 | SQLServer:Database Replica | 
| SQLServer:데이터베이스 복제본 로그 전송 대기열 | SQLServer:Database Replica | 
| SQLServer:데이터베이스 복제본 미러링된 쓰기 트랜잭션/초 | SQLServer:Database Replica | 
| SQLServer:데이터베이스 복제본 복구 대기열 | SQLServer:Database Replica | 
| SQLServer:나머지 데이터베이스 복제본 다시 실행 바이트 | SQLServer:Database Replica | 
| SQLServer:데이터베이스 복제본 다시 실행 바이트/초 | SQLServer:Database Replica | 
| SQLServer:실행 취소가 필요한 데이터베이스 복제본 총 로그 | SQLServer:Database Replica | 
| SQLServer:데이터베이스 복제본 트랜잭션 지연 | SQLServer:Database Replica | 
| SQLServer:차단된 일반 통계 프로세스 |  SQLServer:일반 통계  | 
| SQLServer:일반 통계 사용자 연결 | SQLServer:일반 통계 | 
| SQLServer:래치 평균 래치 대기 시간(ms)  | SQLServer:래치  | 
| SQLServer:잠금 평균 대기 시간(ms)  | SQLServer:잠금  | 
| SQLServer:잠금 잠금 제한 시간/초  | SQLServer:잠금  | 
| SQLServer:잠금 잠금 대기/초  | SQLServer:잠금  | 
| SQLServer:잠금 교착 상태 수/초  | SQLServer:잠금  | 
| SQLServer:메모리 관리자 보류 중인 메모리 부여  | SQLServer:메모리 관리자  | 
| SQLServer:SQL 통계 배치 요청/초 | SQLServer:SQL 통계 | 
| SQLServer:SQL 통계 SQL 컴파일/초 | SQLServer:SQL 통계 | 
| SQLServer:SQL 통계 SQL 재컴파일/초 |  SQLServer:SQL 통계  | 
| 시스템 프로세서 대기열 길이 |  시스템  | 
| TCPv4 연결 설정 | TCPv4 | 
| TCPv6 연결 설정 | TCPv6 | 
| W3SVC\$1W3WP 파일 캐시 플러시  | W3SVC\$1W3WP  | 
| W3SVC\$1W3WP 파일 캐시 누락  | W3SVC\$1W3WP  | 
| W3SVC\$1W3WP 요청/초  | W3SVC\$1W3WP  | 
| W3SVC\$1W3WP URI 캐시 플러시  | W3SVC\$1W3WP  | 
| W3SVC\$1W3WP URI 캐시 누락  | W3SVC\$1W3WP  | 
| 웹 서비스 수신된 바이트/초 |  웹 서비스  | 
| 웹 서비스 전송된 바이트/초 |  웹 서비스  | 
|  웹 서비스 연결 시도/초   |  웹 서비스  | 
| 웹 서비스 현재 연결  |  웹 서비스  | 
| 웹 서비스 요청 가져오기/초  |  웹 서비스  | 
| 웹 서비스 POST 요청/초  |  웹 서비스  | 

# CloudWatch 콘솔에서 리소스 상태 뷰 사용
<a name="servicelens_resource_health"></a>

리소스 상태 보기를 사용하여 단일 보기에서 애플리케이션 전반의 호스트 상태 및 성능을 자동으로 검색하고 관리하며 시각화할 수 있습니다. CPU 또는 메모리와 같은 성능 차원별로 해당 호스트의 상태를 시각화하고, 필터를 사용하여 단일 보기에서 수백 개의 호스트를 쪼개어 분석할 수 있습니다. 동일한 Auto Scaling 그룹의 호스트 또는 동일한 로드 밸런서를 사용하는 호스트와 같이 사용 사례 또는 태그별로 필터링할 수 있습니다.

## 사전 조건
<a name="servicelens_resource_health-prerequisites"></a>

리소스 상태 보기를 최대한 활용하려면 다음 사전 조건이 있는지 확인해야 합니다.
+ 호스트의 메모리 사용률을 확인하고 이를 필터로 사용하려면 호스트에 CloudWatch 에이전트를 설치하여 기본 `CWAgent` 네임스페이스의 CloudWatch에 메모리 지표를 전송하도록 설정해야 합니다. Linux 및 macOS 인스턴스에서는 CloudWatch 에이전트가 `mem_used_percent` 지표를 전송해야 합니다. Windows 인스턴스에서는 에이전트가 `Memory % Committed Bytes In Use` 지표를 전송해야 합니다. 이러한 지표는 마법사를 사용하여 CloudWatch 에이전트 구성 파일을 생성하고 미리 정의된 지표 세트를 선택하는 경우에 포함됩니다. CloudWatch 에이전트가 수집한 지표는 사용자 지정 지표로 청구됩니다. 자세한 내용은 [CloudWatch 에이전트 설치](install-CloudWatch-Agent-on-EC2-Instance.md) 단원을 참조하세요.

  CloudWatch 에이전트를 사용하여 리소스 상태 보기와 함께 사용할 이러한 메모리 지표를 수집하는 경우 CloudWatch 에이전트 구성 파일에 다음 섹션을 포함해야 합니다. 이 섹션은 기본적으로 생성되며 기본 차원 설정을 포함하므로 이 섹션의 어느 부분도 다음 예에 나와 있는 것과 다른 내용으로 변경해서는 안 됩니다.

  ```
  "append_dimensions": {
    "ImageId": "${aws:ImageId}",
    "InstanceId": "${aws:InstanceId}",
    "InstanceType": "${aws:InstanceType}",
    "AutoScalingGroupName": "${aws:AutoScalingGroupName}"
  },
  ```
+  리소스 상태 보기에서 사용 가능한 모든 정보를 보려면 다음 권한이 있는 계정에 로그인해야 합니다. 더 적은 권한으로 로그인한 경우 여전히 리소스 상태 보기를 사용할 수는 있지만, 일부 성능 데이터가 표시되지 않습니다.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Action": [
                  "autoscaling:Describe*",
                  "cloudwatch:Describe*",
                  "cloudwatch:Describe*",
                  "cloudwatch:Get*",
                  "cloudwatch:List*",
                  "logs:Get*",
                  "logs:Describe*",
                  "sns:Get*",
                  "sns:List*",
                  "ec2:DescribeInstances",
                  "ec2:DescribeInstanceStatus",
                  "ec2:DescribeRegions"
              ],
              "Effect": "Allow",
              "Resource": "*"
          }
      ]
  }
  ```

------

**계정의 리소스 상태를 보려면**

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

1. 탐색 창에서 **Insights**, **EC2 리소스 상태**를 선택하세요.

   계정의 각 호스트에 대한 사각형이 표시된 리소스 상태 페이지가 나타납니다. 각 사각형은 해당 호스트의 현재 상태를 기반으로 [**색상 기준(Color by)**] 설정에 따른 색상이 지정됩니다. 경보 기호가 있는 호스트 사각형에는 현재 ALARM 상태에 있는 경보가 하나 이상 있습니다.

   단일 보기에는 호스트가 최대 500개까지 표시될 수 있습니다. 계정에 더 많은 호스트가 있는 경우 이 절차의 6단계에서 필터 설정을 사용합니다.

1. 각 호스트의 상태를 표시하는 데 사용되는 기준을 변경하려면 [**색상 기준(Color by)**]의 설정을 선택합니다. [**CPU 사용률(CPU Utilization)**], [**메모리 사용률(Memory Utilization)**] 또는 [**상태 확인(Status check)**]을 선택할 수 있습니다. 메모리 사용률 지표는 CloudWatch 에이전트를 실행 중이며 메모리 지표를 수집하여 기본 `CWAgent` 네임스페이스에 전송하도록 구성된 호스트에서만 사용할 수 있습니다. 자세한 내용은 [CloudWatch 에이전트를 사용하여 지표, 로그, 트레이스 수집](Install-CloudWatch-Agent.md) 단원을 참조하세요.

1. 그리드의 상태 표시기에 사용되는 임계값 및 색상을 변경하려면 그리드 위의 기어 아이콘을 선택합니다.

1. 호스트 그리드에 경보를 표시할지 여부를 전환하려면 [**모든 지표의 경보 표시(Show alarms across all metrics)**]를 선택하거나 선택 취소합니다.

1. 맵의 호스트를 그룹으로 분할하려면 [**그룹 기준(Group by)**]의 그룹화 기준을 선택합니다.

1. 더 적은 수의 호스트로 보기 범위를 좁히려면 [**필터링 기준(Filter by)**]의 필터 기준을 선택합니다. 태그별로 그리고 Auto Scaling 그룹, 인스턴스 유형, 보안 그룹 등과 같은 리소스 그룹별로 필터링할 수 있습니다.

1. 호스트를 정렬하려면 [**정렬 기준(Sort by)**]의 정렬 기준을 선택합니다. 상태 확인 결과, 인스턴스 상태, CPU 또는 메모리 사용률, ALARM 상태에 있는 경보 수를 기준으로 정렬할 수 있습니다.

1. 호스트에 관한 추가 정보를 보려면 해당 호스트를 나타내는 사각형을 선택합니다. 팝업 창이 나타납니다. 해당 호스트에 관한 정보를 더 자세히 알아보려면 [**대시보드 보기(View dashboard)**] 또는 [**목록으로 보기(View on list)**]를 선택합니다.