기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon CloudWatch를 사용하여 AWS PCS 인스턴스 모니터링
AWS PCS는 PCS 컴퓨팅 노드 그룹에 정의된 조정 요구 사항을 충족하기 위해 필요에 따라 Amazon EC2 인스턴스를 시작합니다. Amazon CloudWatch를 사용하여 실행 중인 이러한 인스턴스를 모니터링할 수 있습니다. 인스턴스에 로그인하고 대화형 명령줄 도구를 사용하여 실행 중인 인스턴스의 로그를 검사할 수 있습니다. 그러나 기본적으로 CloudWatch 지표 데이터는 인스턴스가 종료된 후 제한된 기간 동안만 유지되며, 인스턴스 로그는 일반적으로 인스턴스를 지원하는 EBS 볼륨과 함께 삭제됩니다. 종료된 후 PCS에서 시작한 인스턴스의 지표 또는 로깅 데이터를 유지하려면 EC2 시작 템플릿을 사용하여 인스턴스에서 CloudWatch 에이전트를 구성할 수 있습니다. 이 주제에서는 실행 중인 인스턴스 모니터링에 대한 개요를 제공하고 영구 인스턴스 지표 및 로그를 구성하는 방법의 예를 제공합니다.
실행 중인 인스턴스 모니터링
AWS PCS 인스턴스 찾기
PCS에서 시작한 인스턴스를 모니터링하려면 클러스터 또는 컴퓨팅 노드 그룹과 연결된 실행 중인 인스턴스를 찾습니다. 그런 다음 지정된 인스턴스에 대한 EC2 콘솔에서 상태, 경보 및 모니터링 섹션을 검사합니다. 이러한 인스턴스에 대해 로그인 액세스가 구성된 경우 인스턴스에 연결하고 인스턴스의 다양한 로그 파일을 검사할 수 있습니다. PCS에서 관리하는 인스턴스를 식별하는 방법에 대한 자세한 내용은 섹션을 참조하세요AWS PCS에서 컴퓨팅 노드 그룹 인스턴스 찾기.
세부 지표 활성화
기본적으로 인스턴스 지표는 5분 간격으로 수집됩니다. 1분 간격으로 지표를 수집하려면 컴퓨팅 노드 그룹 시작 템플릿에서 자세한 CloudWatch 모니터링을 활성화합니다. 자세한 내용은 자세한 CloudWatch 모니터링 켜기 단원을 참조하십시오.
영구 인스턴스 지표 및 로그 구성
인스턴스에 Amazon CloudWatch 에이전트를 설치하고 구성하여 인스턴스의 지표와 로그를 유지할 수 있습니다. 이는 세 가지 주요 단계로 구성됩니다.
-
CloudWatch 에이전트 구성을 생성합니다.
-
구성을 PCS 인스턴스에서 검색할 수 있는 위치에 저장합니다.
-
CloudWatch 에이전트 소프트웨어를 설치하고, 구성을 가져오고, 구성을 사용하여 CloudWatch 에이전트를 시작하는 EC2 시작 템플릿을 작성합니다.
자세한 내용은 Amazon CloudWatch 사용 설명서의 CloudWatch 에이전트를 사용하여 지표, 로그 및 추적 수집 및 섹션을 참조하세요AWS PCS에서 Amazon EC2 시작 템플릿 사용. Amazon CloudWatch
CloudWatch 에이전트 구성 생성
인스턴스에 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 에이전트 구성 파일 수동 생성 또는 편집을 참조하세요. 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별로 집계하도록 지시합니다.
구성 저장
CloudWatch 에이전트 구성 파일은 PCS 컴퓨팅 노드 인스턴스에서 액세스할 수 있는 위치에 저장해야 합니다. 이를 수행하는 두 가지 일반적인 방법이 있습니다. 컴퓨팅 노드 그룹 인스턴스가 인스턴스 프로파일을 통해 액세스할 수 있는 Amazon S3 버킷에 업로드할 수 있습니다. 또는 Amazon Systems Manager Parameter Store에 SSM 파라미터로 저장할 수 있습니다.
S3 버킷에 업로드
파일을 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 파라미터로 저장
파일을 SSM 파라미터로 저장하려면 다음 명령을 사용합니다. 명령을 실행하기 전에 다음을 대체합니다.
-
region-code를 AWS PCS로 작업하는 AWS 리전으로 바꿉니다. -
(선택 사항)
AmazonCloudWatch-PCS를 파라미터의 고유한 이름으로 바꿉니다. 이름의 접두사를에서 변경하는 경우 노드 그룹 인스턴스 프로파일의 SSM 파라미터에 읽기 액세스를 특별히 추가AmazonCloudWatch-해야 합니다.
aws ssm put-parameter \ --regionregion-code\ --name "AmazonCloudWatch-PCS" \ --type String \ --value file://config.json
EC2 시작 템플릿 작성
시작 템플릿의 특정 세부 정보는 구성 파일이 S3에 저장되는지 아니면 SSM에 저장되는지에 따라 달라집니다.
S3에 저장된 구성 사용
이 스크립트는 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 정책의 예입니다.
또한 인스턴스는 S3 및 CloudWatch 엔드포인트로의 아웃바운드 트래픽을 허용해야 합니다. 이는 클러스터 아키텍처에 따라 보안 그룹 또는 VPC 엔드포인트를 사용하여 수행할 수 있습니다.
SSM에 저장된 구성 사용
이 스크립트는 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 정책의 예입니다.
또한 인스턴스는 SSM 및 CloudWatch 엔드포인트로의 아웃바운드 트래픽을 허용해야 합니다. 이는 클러스터 아키텍처에 따라 보안 그룹 또는 VPC 엔드포인트를 사용하여 수행할 수 있습니다.