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

최종 업데이트 날짜: 2020년 11월 9일

인터넷 액세스 권한이 없는 Amazon EC2 Auto Scaling 그룹에서 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 구성하여 Amazon CloudWatch로 로그와 지표를 전송하려면 어떻게 해야 합니까?

해결 방법

  1. Amazon EC2 인스턴스에 CloudWatch 에이전트 설치 이 인스턴스는 인터넷에 연결되어 있어야 합니다. 또는 CloudWatch 에이전트를 사용하여 이미 로그와 지표를 CloudWatch로 푸시하고 있는 Amazon EC2 인스턴스를 선택할 수 있습니다.
  2. CloudWatch 에이전트가 Amazon EC2 인스턴스의 지표 및 로그를 푸시하고 있는지 확인합니다.
  3. Auto Scaling 그룹에 대한시작 템플릿을 생성합니다. 인스턴스가 지표 및 로그를 CloudWatch로 푸시하도록 하려면 시작 템플릿에 올바른 AWS Identity and Access Management(IAM) 역할을 제공합니다. 고급 설정에서 다음과 유사한 스크립트를 사용하여 사용자 데이터를 정의합니다. 이 스크립트의 사용자 지정 버전을 사용하여 1단계의 JSON 구성을 기반으로 CloudWatch 에이전트를 설치 및 구성합니다.
    참고: 이 예제 사용자 데이터 스크립트는 Amazon EC2 Linux 인스턴스에 CloudWatch 에이전트를 설치합니다. 스크립트는 메모리와 디스크 사용률을 모니터링하도록 에이전트를 구성한 다음 에이전트를 시작합니다. Auto Scaling 그룹의 특정 리전에 대한 다운로드 링크를 사용해야 합니다.
#!/bin/bash
cd /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

  • 프라이빗 서브넷을 호스팅하는 VPC에 CloudWatch 모니터링 및 CloudWatch Logs를 위한 인터페이스 Virtual Private Cloud(VPC) 엔드포인트를 추가합니다. 올바른 엔드포인트를 찾으려면 Amazon CloudWatch 엔드포인트 및 할당량을 참조하세요. 이러한 VPC 엔드포인트에서 필요한 CloudWatch 작업만 허용하려면 사용자 지정 정책으로 엔드포인트 정책을 업데이트합니다.

    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 엔드포인트 생성 시 고려 사항"을 참조하세요.

  • 프라이빗 서브넷을 호스팅하는 VPC에 Amazon S3용 Virtual Private Cloud(VPC) 게이트웨이 엔드포인트를 추가합니다. 이 엔드포인트를 사용하면 프라이빗 서브넷에 있는 인스턴스의 사용자 데이터 스크립트가 Amazon S3에서 CloudWatch 에이전트 패키지에 액세스하고 다운로드할 수 있습니다.
  • 3단계에서 생성한 시작 템플릿을 사용하여 Auto Scaling 그룹(프라이빗 서브넷이 활성화된 상태)을 생성합니다. CloudWatch 에이전트는 이 Auto Scaling 그룹에서 시작한 인스턴스에서 실행됩니다. 또한 에이전트는 4단계에서 생성한 VPC 인터페이스 엔드포인트를 통해 지표 및 로그를 전송합니다.
  • 인터페이스 VPC 엔드포인트 생성 시 고려 사항

    • Auto Scaling 그룹의 AWS 리전에 해당하는 엔드포인트를 사용해야 합니다. 예를 들어 Auto Scaling 그룹이 런던 리전에 있는 경우 지표의 엔드포인트는 monitoring.eu-west-2.amazonaws.com입니다. 이 시나리오에서 로그의 엔드포인트는 logs.eu-west-2.amazonaws.com입니다.
    • [프라이빗 DNS 이름 활성화(Enable Private DNS name)] 옵션을 활성화했는지 확인합니다. 이 옵션은 VPC에 대해 [DNS 호스트 이름 활성화(Enable DNS hostnames)] 및 [DNS 지원 활성화(Enable DNS Support)] 속성이 [true]로 설정된 경우에만 활성화할 수 있습니다. 이 옵션을 비활성화하면 VPC 인터페이스 엔드포인트가 서비스 엔드포인트에 매핑되지 않습니다. 따라서 인스턴스가 퍼블릭 서비스 엔드포인트에 도달할 수 없습니다. 이 옵션을 활성화하면 서비스 엔드포인트가 VPC 인터페이스 엔드포인트로 매핑되고 서비스 엔드포인트와의 통신이 프라이빗으로 이루어집니다. 기본적으로 CloudWatch 에이전트는 이 엔드포인트에 연결됩니다. 필요한 경우 에이전트 구성 파일에서 endpoint_override 파라미터를 사용하여 기본 엔드포인트를 재정의할 수 있습니다.
    • 보안 그룹 규칙이 엔드포인트 네트워크 인터페이스와 서비스와 통신하는 VPC의 리소스 간의 통신을 허용하는지 확인합니다. 로그 및 지표를 푸시하기 위한 API 호출은 HTTPS 기반 GET/POST 요청입니다. 엔드포인트 네트워크 인터페이스 보안 그룹에는 원본 IP의 HTTPS 프로토콜에 대한 인바운드 규칙이 필요합니다. 소스 IP 주소는 지표 및 로그 또는 VPC CIDR을 푸시하는 EC2 인스턴스의 IP 주소입니다.
    • 인스턴스가 Auto Scaling 그룹의 일부인 경우 에이전트 구성 파일에서 차원 중 하나를 Auto Scaling 그룹 이름으로 지정합니다. Auto Scaling 그룹의 이름을 찾기 위해 에이전트는 Amazon EC2 엔드포인트에서 인스턴스와 연결된 태그를 가져옵니다. Amazon EC2 서비스에 대한 VPC 인터페이스 엔드포인트를 추가해야 합니다. 에이전트는 Amazon EC2 인스턴스의 metadata에서 ImageId, InstanceIdInstanceType 값을 가져옵니다.
    • </ul

    이 문서가 도움이 되었나요?


    결제 또는 기술 지원이 필요합니까?