

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

# Amazon CloudWatch를 사용하여 AWS PCS 인스턴스 모니터링
<a name="monitoring-cloudwatch_instances"></a>

AWS PCS는 PCS 컴퓨팅 노드 그룹에 정의된 조정 요구 사항을 충족하기 위해 필요에 따라 Amazon EC2 인스턴스를 시작합니다. Amazon CloudWatch를 사용하여 실행 중인 이러한 인스턴스를 모니터링할 수 있습니다. 인스턴스에 로그인하고 대화형 명령줄 도구를 사용하여 실행 중인 인스턴스의 로그를 검사할 수 있습니다. 그러나 기본적으로 CloudWatch 지표 데이터는 인스턴스가 종료된 후 제한된 기간 동안만 유지되며, 인스턴스 로그는 일반적으로 인스턴스를 지원하는 EBS 볼륨과 함께 삭제됩니다. 종료된 후 PCS에서 시작한 인스턴스의 지표 또는 로깅 데이터를 유지하려면 EC2 시작 템플릿을 사용하여 인스턴스에서 CloudWatch 에이전트를 구성할 수 있습니다. 이 주제에서는 실행 중인 인스턴스 모니터링에 대한 개요를 제공하고 영구 인스턴스 지표 및 로그를 구성하는 방법의 예를 제공합니다.

## 실행 중인 인스턴스 모니터링
<a name="monitoring-cloudwatch_instances_running"></a>

### AWS PCS 인스턴스 찾기
<a name="monitoring-cloudwatch_instances_finding"></a>

 PCS에서 시작한 인스턴스를 모니터링하려면 클러스터 또는 컴퓨팅 노드 그룹과 연결된 실행 중인 인스턴스를 찾습니다. 그런 다음 지정된 인스턴스에 대한 EC2 콘솔에서 **상태, 경보** 및 **모니터링** 섹션을 검사합니다. 이러한 인스턴스에 대해 로그인 액세스가 구성된 경우 인스턴스에 연결하고 인스턴스의 다양한 로그 파일을 검사할 수 있습니다. PCS에서 관리하는 인스턴스를 식별하는 방법에 대한 자세한 내용은 섹션을 참조하세요[AWS PCS에서 컴퓨팅 노드 그룹 인스턴스 찾기](working-with_compute-instances.md).

### 세부 지표 활성화
<a name="monitoring-cloudwatch_instances_enable-metrics"></a>

 기본적으로 인스턴스 지표는 5분 간격으로 수집됩니다. 1분 간격으로 지표를 수집하려면 컴퓨팅 노드 그룹 시작 템플릿에서 자세한 CloudWatch 모니터링을 활성화합니다. 자세한 내용은 [자세한 CloudWatch 모니터링 켜기](working-with_launch-templates_parameters.md#working-with_launch-templates_parameters_cw) 단원을 참조하십시오.

## 영구 인스턴스 지표 및 로그 구성
<a name="monitoring-cloudwatch_instances_config-metrics"></a>

 인스턴스에 Amazon CloudWatch 에이전트를 설치하고 구성하여 인스턴스의 지표와 로그를 유지할 수 있습니다. 이는 세 가지 주요 단계로 구성됩니다.

1.  CloudWatch 에이전트 구성을 생성합니다.

1.  구성을 PCS 인스턴스에서 검색할 수 있는 위치에 저장합니다.

1.  CloudWatch 에이전트 소프트웨어를 설치하고, 구성을 가져오고, 구성을 사용하여 CloudWatch 에이전트를 시작하는 EC2 시작 템플릿을 작성합니다.

 자세한 내용은 Amazon [ CloudWatch 사용 설명서의 CloudWatch 에이전트를 사용하여 지표, 로그 및 추적 수집](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Install-CloudWatch-Agent.html) 및 섹션을 참조하세요[AWS PCS에서 Amazon EC2 시작 템플릿 사용](working-with_launch-templates.md). *Amazon CloudWatch *

### CloudWatch 에이전트 구성 생성
<a name="monitoring-cloudwatch_instances_agent-config"></a>

 인스턴스에 CloudWatch 에이전트를 배포하기 전에 수집할 지표, 로그 및 추적을 지정하는 JSON 구성 파일을 생성해야 합니다. 구성 파일은 마법사를 사용하거나 텍스트 편집기를 사용하여 수동으로 생성할 수 있습니다. 구성 파일은이 데모를 위해 수동으로 생성됩니다.

 AWS CLI가 설치된 컴퓨터에서 다음 내용이 포함된 **config.json**이라는 CloudWatch 구성 파일을 생성합니다. 다음 URL을 사용하여 파일 사본을 다운로드할 수도 있습니다.

```
https://aws-hpc-recipes.s3.amazonaws.com/main/recipes/pcs/cloudwatch/assets/config.json
```

**참고**
+ 샘플 파일의 로그 경로는 Amazon Linux 2용입니다. 인스턴스가 다른 기본 운영 체제를 사용하는 경우 경로를 적절하게 변경합니다.
+ 다른 로그를 캡처하려면 아래에 항목을 추가합니다`collect_list`.
+ 의 값은 템플릿 형식 변수`{brackets}`입니다. 지원되는 변수의 전체 목록은 Amazon [ CloudWatch 사용 설명서의 수동으로 CloudWatch 에이전트 구성 파일 생성 또는 편집](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-Configuration-File-Details.html)을 참조하세요. *Amazon CloudWatch *
+ 이러한 정보 유형을 수집`metrics`하지 않으려면 `logs` 또는를 생략하도록 선택할 수 있습니다.

```
{
    "agent": {
        "metrics_collection_interval": 60
    },
    "logs": {
        "logs_collected": {
            "files": {
                "collect_list": [
                    {
                        "file_path": "/var/log/cloud-init.log",
                        "log_group_class": "STANDARD",
                        "log_group_name": "/PCSLogs/instances",
                        "log_stream_name": "{instance_id}.cloud-init.log",
                        "retention_in_days": 30
                    },
                    {
                        "file_path": "/var/log/cloud-init-output.log",
                        "log_group_class": "STANDARD",
                        "log_stream_name": "{instance_id}.cloud-init-output.log",
                        "log_group_name": "/PCSLogs/instances",
                        "retention_in_days": 30
                    },
                    {
                        "file_path": "/var/log/amazon/pcs/bootstrap.log",
                        "log_group_class": "STANDARD",
                        "log_stream_name": "{instance_id}.bootstrap.log",
                        "log_group_name": "/PCSLogs/instances",
                        "retention_in_days": 30
                    },
                    {
                        "file_path": "/var/log/slurmd.log",
                        "log_group_class": "STANDARD",
                        "log_stream_name": "{instance_id}.slurmd.log",
                        "log_group_name": "/PCSLogs/instances",
                        "retention_in_days": 30
                    },
                    {
                        "file_path": "/var/log/messages",
                        "log_group_class": "STANDARD",
                        "log_stream_name": "{instance_id}.messages",
                        "log_group_name": "/PCSLogs/instances",
                        "retention_in_days": 30
                    },
                    {
                        "file_path": "/var/log/secure",
                        "log_group_class": "STANDARD",
                        "log_stream_name": "{instance_id}.secure",
                        "log_group_name": "/PCSLogs/instances",
                        "retention_in_days": 30
                    }
                ]
            }
        }
    },
    "metrics": {
        "aggregation_dimensions": [
            [
                "InstanceId"
            ]
        ],
        "append_dimensions": {
            "AutoScalingGroupName": "${aws:AutoScalingGroupName}",
            "ImageId": "${aws:ImageId}",
            "InstanceId": "${aws:InstanceId}",
            "InstanceType": "${aws:InstanceType}"
        },
        "metrics_collected": {
            "cpu": {
                "measurement": [
                    "cpu_usage_idle",
                    "cpu_usage_iowait",
                    "cpu_usage_user",
                    "cpu_usage_system"
                ],
                "metrics_collection_interval": 60,
                "resources": [
                    "*"
                ],
                "totalcpu": false
            },
            "disk": {
                "measurement": [
                    "used_percent",
                    "inodes_free"
                ],
                "metrics_collection_interval": 60,
                "resources": [
                    "*"
                ]
            },
            "diskio": {
                "measurement": [
                    "io_time"
                ],
                "metrics_collection_interval": 60,
                "resources": [
                    "*"
                ]
            },
            "mem": {
                "measurement": [
                    "mem_used_percent"
                ],
                "metrics_collection_interval": 60
            },
            "swap": {
                "measurement": [
                    "swap_used_percent"
                ],
                "metrics_collection_interval": 60
            }
        }
    }
}
```

 이 파일은 CloudWatch 에이전트에 인스턴스 부트스트래핑, 인증 및 로그인, 기타 문제 해결 도메인의 오류를 진단하는 데 도움이 될 수 있는 여러 파일을 모니터링하도록 지시합니다. 다음이 포함됩니다.
+ `/var/log/cloud-init.log` - 인스턴스 구성의 초기 단계에서 출력
+ `/var/log/cloud-init-output.log` - 인스턴스 구성 중에 실행되는 명령의 출력
+ `/var/log/amazon/pcs/bootstrap.log` - 인스턴스 구성 중에 실행되는 PCS별 작업의 출력
+ `/var/log/slurmd.log` - Slurm 워크로드 관리자의 데몬 slurmd에서 출력
+ `/var/log/messages` - 커널, 시스템 서비스 및 애플리케이션의 시스템 메시지
+ `/var/log/secure` - SSH, sudo 및 기타 보안 이벤트와 같은 인증 시도와 관련된 로그

 로그 파일은 라는 CloudWatch 로그 그룹으로 전송됩니다`/PCSLogs/instances`. 로그 스트림은 인스턴스 ID와 로그 파일의 기본 이름의 조합입니다. 로그 그룹의 보존 기간은 30일입니다.

 또한이 파일은 CloudWatch 에이전트에 여러 가지 공통 지표를 수집하여 인스턴스 ID별로 집계하도록 지시합니다.

### 구성 저장
<a name="monitoring-cloudwatch_instances_store-config"></a>

 CloudWatch 에이전트 구성 파일은 PCS 컴퓨팅 노드 인스턴스에서 액세스할 수 있는 위치에 저장해야 합니다. 이를 수행하는 두 가지 일반적인 방법이 있습니다. 컴퓨팅 노드 그룹 인스턴스가 인스턴스 프로파일을 통해 액세스할 수 있는 Amazon S3 버킷에 업로드할 수 있습니다. 또는 Amazon Systems Manager Parameter Store에 SSM 파라미터로 저장할 수 있습니다.

#### S3 버킷에 업로드
<a name="monitoring-cloudwatch_instances_store-config_s3"></a>

 파일을 S3에 저장하려면 다음 AWS CLI 명령을 사용합니다. 명령을 실행하기 전에 다음을 대체합니다.
+  *amzn-s3-demo-bucket*을 자체 S3 버킷 이름으로 바꿉니다.

 먼저 (기존 버킷이 있는 경우 선택 사항) 구성 파일을 보관할 버킷을 생성합니다.

```
aws s3 mb s3://amzn-s3-demo-bucket
```

 그런 다음 파일을 버킷에 업로드합니다.

```
aws s3 cp ./config.json s3://amzn-s3-demo-bucket/
```

#### SSM 파라미터로 저장
<a name="monitoring-cloudwatch_instances_store-config_ssm"></a>

파일을 SSM 파라미터로 저장하려면 다음 명령을 사용합니다. 명령을 실행하기 전에 다음을 대체합니다.
+ *region-code*를 AWS PCS로 작업하는 AWS 리전으로 바꿉니다.
+ (선택 사항) *AmazonCloudWatch-PCS*를 파라미터의 고유한 이름으로 바꿉니다. 이름의 접두사를에서 변경하는 경우 노드 그룹 인스턴스 프로파일의 SSM 파라미터에 읽기 액세스를 특별히 추가`AmazonCloudWatch-`해야 합니다.

```
aws ssm put-parameter \
   --region region-code \
   --name "AmazonCloudWatch-PCS" \
   --type String \
   --value file://config.json
```

### EC2 시작 템플릿 작성
<a name="monitoring-cloudwatch_instances_lt"></a>

 시작 템플릿의 특정 세부 정보는 구성 파일이 S3에 저장되는지 아니면 SSM에 저장되는지에 따라 달라집니다.

#### S3에 저장된 구성 사용
<a name="w2aac48c14c13b7c13b5"></a>

이 스크립트는 CloudWatch 에이전트를 설치하고, S3 버킷에서 구성 파일을 가져오고, 이를 사용하여 CloudWatch 에이전트를 시작합니다. 이 스크립트의 다음 값을 사용자의 세부 정보로 바꿉니다.
+  *amzn-s3-demo-bucket* – 계정이 읽을 수 있는 S3 버킷의 이름입니다.
+  */config.json* - 구성이 저장되는 S3 버킷 루트 관련 경로 

```
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="

--==MYBOUNDARY==
Content-Type: text/cloud-config; charset="us-ascii"

packages:
- amazon-cloudwatch-agent

runcmd:
- aws s3 cp s3://amzn-s3-demo-bucket/config.json /etc/s3-cw-config.json
- /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file://etc/s3-cw-config.json

--==MYBOUNDARY==--
```

 노드 그룹의 IAM 인스턴스 프로파일에는 버킷에 대한 액세스 권한이 있어야 합니다. 다음은 위의 사용자 데이터 스크립트에 있는 버킷에 대한 IAM 정책의 예입니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket",
                "arn:aws:s3:::amzn-s3-demo-bucket/*"
            ]
        }
    ]
}
```

------

 또한 인스턴스는 S3 및 CloudWatch 엔드포인트로의 아웃바운드 트래픽을 허용해야 합니다. 이는 클러스터 아키텍처에 따라 보안 그룹 또는 VPC 엔드포인트를 사용하여 수행할 수 있습니다.

#### SSM에 저장된 구성 사용
<a name="monitoring-cloudwatch_instances_use-ssm"></a>

이 스크립트는 CloudWatch 에이전트를 설치하고, SSM 파라미터에서 구성 파일을 가져오고, 이를 사용하여 CloudWatch 에이전트를 시작합니다. 이 스크립트의 다음 값을 사용자의 세부 정보로 바꿉니다.
+ (선택 사항) *AmazonCloudWatch-PCS*를 파라미터의 고유한 이름으로 바꿉니다.

```
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="

--==MYBOUNDARY==
Content-Type: text/cloud-config; charset="us-ascii"

packages:
- amazon-cloudwatch-agent

runcmd:
- /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c ssm:AmazonCloudWatch-PCS

--==MYBOUNDARY==--
```

 노드 그룹의 IAM 인스턴스 정책에는 **CloudWatchAgentServerPolicy**가 연결되어 있어야 합니다.

 파라미터 이름이 로 시작되지 않는 경우 노드 그룹 인스턴스 프로파일의 SSM 파라미터에 읽기 액세스를 특별히 추가`AmazonCloudWatch-`해야 합니다. 다음은 접두사 *DOC-EXAMPLE-PREFIX*에 대해 이를 설명하는 IAM 정책의 예입니다.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement" : [
    {
      "Sid" : "CustomCwSsmMParamReadOnly",
      "Effect" : "Allow",
      "Action" : [
        "ssm:GetParameter"
      ],
      "Resource" : "arn:aws:ssm:*:*:parameter/DOC-EXAMPLE-PREFIX*"
    }
  ]
}
```

------

 또한 인스턴스는 SSM 및 CloudWatch 엔드포인트로의 아웃바운드 트래픽을 허용해야 합니다. 이는 클러스터 아키텍처에 따라 보안 그룹 또는 VPC 엔드포인트를 사용하여 수행할 수 있습니다.