Amazon을 사용하여 AWS PCS 인스턴스 모니터링 CloudWatch - AWS PCS

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

Amazon을 사용하여 AWS PCS 인스턴스 모니터링 CloudWatch

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

실행 중인 인스턴스 모니터링

AWSPCS인스턴스 찾기

에서 시작된 인스턴스를 모니터링하려면 클러스터 또는 컴퓨팅 노드 그룹과 연결된 실행 중인 인스턴스를 찾으십시오. PCS 그런 다음 EC2 콘솔에서 해당 인스턴스의 상태 및 경보와 모니터링 섹션을 살펴보세요. 해당 인스턴스에 대한 로그인 액세스가 구성된 경우 인스턴스에 연결하여 인스턴스의 다양한 로그 파일을 검사할 수 있습니다. 어떤 인스턴스가 관리되는지 식별하는 방법에 대한 자세한 내용은 을 PCS 참조하십시오에서 컴퓨팅 노드 그룹 인스턴스 찾기 AWS PCS.

세부 지표 활성화

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

영구 인스턴스 지표 및 로그 구성

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

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

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

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

자세한 내용은 Amazon CloudWatch 사용 설명서의 CloudWatch 에이전트를 통한 지표, 로그 및 추적 수집을 참조하십시오Amazon EC2 시작 템플릿을 다음과 같이 사용하기 AWS PCS.

CloudWatch 에이전트 구성 생성

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

AWSCLI설치한 컴퓨터에 다음 내용이 포함된 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 User Guide의 CloudWatch 에이전트 구성 파일 수동 생성 또는 편집을 참조하십시오.

  • 이러한 정보 유형을 logs 생략하거나 수집하지 않으려는 metrics 경우 선택할 수 있습니다.

{ "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— sudo 및 기타 보안 이벤트와 같은 SSH 인증 시도와 관련된 로그

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

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

구성을 저장합니다.

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

S3 버킷에 업로드

S3에 파일을 저장하려면 다음 AWS CLI 명령을 사용하십시오. 명령을 실행하기 전에 다음과 같이 대체하십시오.

  • Replace DOC-EXAMPLE-BUCKET 고유한 S3 버킷 이름으로

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

aws s3 mb s3://DOC-EXAMPLE-BUCKET

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

aws s3 cp ./config.json s3://DOC-EXAMPLE-BUCKET/

SSM매개변수로 저장

파일을 SSM 매개변수로 저장하려면 다음 명령을 사용합니다. 명령을 실행하기 전에 다음과 같이 바꾸십시오.

  • Replace region-code 작업 중인 AWS 지역과 함께 AWSPCS.

  • (선택 사항) 교체 AmazonCloudWatch-PCS 파라미터에 사용자 이름을 입력하세요. 참고로 이름의 접두사를 변경하는 경우 노드 그룹 인스턴스 프로필의 SSM 파라미터에 대한 읽기 권한을 구체적으로 추가해야 합니다. AmazonCloudWatch-

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

EC2시작 템플릿을 작성하세요.

시작 템플릿의 구체적인 세부 정보는 구성 파일이 S3에 저장되어 있는지 또는 S3에 저장되어 있는지에 따라 달라집니다SSM.

S3에 저장된 구성을 사용하십시오.

이 스크립트는 CloudWatch 에이전트를 설치하고, S3 버킷에서 구성 파일을 가져온 다음, CloudWatch 에이전트를 시작합니다. 이 스크립트의 다음 값을 사용자 세부 정보로 바꾸십시오.

  • DOC-EXAMPLE-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://DOC-EXAMPLE-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 정책 예시입니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET", "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" ] } ] }

또한 인스턴스는 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연결되어 있어야 합니다.

파라미터 이름이 로 AmazonCloudWatch- 시작하지 않는 경우 노드 그룹 인스턴스 프로필의 SSM 파라미터에 대한 읽기 권한을 구체적으로 추가해야 합니다. 다음은 접두사에 대해 이를 설명하는 예제 IAM 정책입니다.DOC-EXAMPLE-PREFIX.

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

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