내용으로 건너뛰기

인터넷에 액세스할 수 없는 EC2 Auto Scaling 그룹의 인스턴스에서 CloudWatch로 지표와 로그를 전송하도록 구성하려면 어떻게 해야 합니까?

3분 분량
0

인터넷에 액세스할 수 없는 Amazon EC2 Auto Scaling 그룹에 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스가 있습니다. Amazon EC2 인스턴스에서 Amazon CloudWatch로 로그와 지표를 전송하고 싶습니다.

해결 방법

지표 및 로그를 CloudWatch로 전송하도록 EC2 Auto Scaling 그룹의 EC2 인스턴스를 구성하려면 다음 작업을 수행하십시오.

CloudWatch 에이전트 설치

인터넷에 연결된 인스턴스에 CloudWatch 에이전트를 설치합니다. 또는 CloudWatch 에이전트를 통해 이미 로그와 지표를 CloudWatch로 전송한 기존 인스턴스를 사용합니다.

참고: CloudWatch 에이전트 구성에 Auto Scaling 그룹 이름을 차원으로 포함하십시오. 에이전트는 인스턴스 태그와 기타 메타데이터(예: ImageId, InstanceId, InstanceType)에서 이 이름을 검색합니다.

그런 다음, CloudWatch 에이전트가 CloudWatch에 지표와 로그를 성공적으로 전송하는지 확인합니다.

EC2 Auto Scaling 그룹의 시작 템플릿 생성

EC2 Auto Scaling 그룹의 시작 템플릿을 생성합니다.

고급 세부 정보를 선택합니다. 그런 다음, IAM 인스턴스 프로파일사용자 데이터를 선택합니다. 사용자 데이터의 경우 구성한 JSON을 기반으로 CloudWatch 에이전트를 설치 및 구성하는 스크립트를 입력합니다. IAM 인스턴스 프로파일의 경우 EC2 인스턴스가 CloudWatch에 지표와 로그를 전송할 수 있도록 허용하는 AWS Identity and Access Management (IAM) 역할을 선택합니다. 이러한 고급 설정에 대한 자세한 내용은 고급 설정을 참조하십시오.

인스턴스의 사용자 데이터 스크립트 예시:

#!/bin/bashcd /tmp
wget https://s3.REGION.amazonaws.com/amazoncloudwatch-agent-REGION/amazon_linux/amd64/latest/amazon-cloudwatch-agent.rpm
rpm -U ./amazon-cloudwatch-agent.rpm
cat << EOF > /opt/aws/amazon-cloudwatch-agent/bin/config.json
{
  "agent": {
    "metrics_collection_interval": 60
  },
  "metrics": {
    "append_dimensions": {
      "InstanceId": "\${aws:InstanceId}"
    },
    "metrics_collected": {
      "disk": {
        "measurement": [
          "disk_used_percent"
        ],
        "resources": [
          "*"
        ]
      },
      "mem": {
        "measurement": [
          "mem_used_percent"
        ]
      }
    }
  }
}
EOF
/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json -s

참고: REGION을 AWS 리전으로 바꾸십시오. config.json 파일 내의 특수 문자를 이스케이프하려면 백슬래시(\)를 사용하십시오. 스크립트는 메모리 및 디스크 사용률을 모니터링하도록 CloudWatch 에이전트를 구성한 다음, 에이전트를 시작합니다. EC2 Auto Scaling 그룹 리전의 다운로드 링크를 사용해야 합니다.

지표 및 로그를 위한 VPC 엔드포인트 생성

프라이빗 서브넷을 호스팅하는 VPC에 CloudWatch 지표 및 Amazon CloudWatch Logs에 대한 인터페이스 가상 프라이빗 클라우드(VPC) 엔드포인트를 생성합니다. 그런 다음, 필요한 CloudWatch 작업을 허용하도록 사용자 지정 정책으로 엔드포인트 정책을 업데이트합니다. 서비스 엔드포인트에 대한 자세한 내용은 Amazon CloudWatch 엔드포인트 및 할당량을 참조하십시오.

참고: EC2 Auto Scaling 그룹의 리전에 해당하는 엔드포인트를 사용해야 합니다. 예를 들어 EC2 Auto Scaling 그룹이 eu-west-2 리전에 있는 경우 지표에는 monitoring.eu-west-2.amazonaws.com, 로그에는 logs.eu-west-2.amazonaws.com을 사용하십시오.

CloudWatch VPC 엔드포인트 정책 예시:

{  "Statement": [
    {
      "Sid": "PutOnly",
      "Principal": "*",
      "Action": [
        "cloudwatch:PutMetricData"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}

CloudWatch Logs의 VPC 엔드포인트 정책 예시:

{  "Statement": [
    {
      "Sid": "PutOnly",
      "Principal": "*",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}

그런 다음, 프라이빗 서브넷을 호스팅하는 VPC에 Amazon Simple Storage Service(Amazon S3)에 대한 VPC 게이트웨이 엔드포인트를 생성합니다. 이 엔드포인트를 통해 프라이빗 서브넷의 인스턴스가 CloudWatch 에이전트 패키지를 다운로드할 수 있습니다.

EC2 Auto Scaling 그룹 생성

생성한 시작 템플릿에서 활성화한 프라이빗 서브넷을 사용하여 EC2 Auto Scaling 그룹을 생성합니다.

AWS 공식업데이트됨 일 년 전