엔지니어링

Metricbeat를 사용한 AWS EC2 모니터링

7.0부터는 Amazon 웹 서비스를 모니터링하기 위해 Metricbeat에 새로운 모듈을 도입하였습니다. 7.0.0-beta1 초기 출시 시 이 AWS 모듈에서는 Metricbeat를 사용하여 Cloudwatch에서 AWS EC2 모니터링 메트릭을 수집하고 이를 ec2라는 메트릭 세트에 저장하는 기능을 제공합니다. 이러한 메트릭은 인스턴스에 직접 Metricbeat를 설치할 필요 없이 여러 리전에 걸쳐 모든 EC2 인스턴스에 대한 가시성을 제공합니다.

배경

EC2(Amazon Elastic Compute Cloud) 인스턴스는 퍼블릭 클라우드에서 사용자에게 안전하고 확장 가능한 컴퓨팅 용량을 제공하기 위해 AWS 플랫폼에서 생성되는 가상 서버입니다. 사실상 모든 사람이 원시 컴퓨팅 리소스에 액세스해야 한다는 점에서 EC2는 AWS에서 제공하는 수백 개의 서비스 중에서 가장 중요한 서비스일 것입니다.

EC2 인스턴스를 중앙에서 모니터링하여 사용자가 문제를 감지하고 디버깅할 수 있도록 하는 것은 쉽지 않습니다. Metricbeat는 이미 시스템 모듈을 사용하여 세부 리소스 메트릭을 수집할 수 있지만, 이를 위해서는 각 EC2 인스턴스에 Metricbeat 인스턴스를 설치해야 합니다. 수집되는 메트릭은 매우 상세하고 세분화되어 제공되지만 모든 EC2 인스턴스의 리소스 사용량을 높은 수준으로 파악할 수 있는 신속한 방법이 필요한 경우도 있습니다.

AWS Cloudwatch는 이에 적합합니다. Cloudwatch는 모든 EC2 인스턴스에서 기본 리소스 활용도 메트릭을 자동으로 수집하고 중앙 집중화합니다. 이 데이터는 기본적으로 5분 단위로 수집되며 세부적인 모니터링에 등록하여 보다 세분화된 고급 메트릭을 얻을 수 있습니다.

Metricbeat AWS 구성

Metricbeat를 시작하기 전에 데이터 저장 및 색인에 필요한 Elasticsearch와 데이터 탐색을 위한 Kibana가 포함된 Elastic Stack이 실행 중이어야 합니다. 이를 위해 Elastic ClouElasticsearch Service에서 클러스터를 생성하거나 로컬 시스템에서 Elastic Stack을 설정할 수 있습니다.

Kibana를 로드한 후 홈 화면에서 데이터 추가 UI로 이동하여 AWS 모듈 설정 지침을 따를 수 있습니다.

AWS EC2에 대한 Metricbeat 배포

이 블로그 하단에서 보다 자세히 살펴보실 수 있습니다.

AWS 모듈 활성화

Metricbeat의 기본 구성에서는 기본적으로 시스템 모듈만 활성화되므로 AWS 모듈을 명시적으로 활성화해야 합니다. 다음 명령을 사용하면 MacOS 및 Linux 시스템의 modules.d 디렉토리에서 AWS 구성을 활성화할 수 있습니다.

./metricbeat modules enable aws

구성 파일에서 AWS 자격 증명 설정

액세스 키임시 보안 자격 증명이라는 두 가지 종류의 AWS 자격 증명을 사용할 수 있습니다. 액세스 키는 액세스 키 ID와 비밀 액세스 키로 구성되며, AWS API 호출 시 IAM 사용자 또는 AWS 계정 루트 사용자가 인증할 수 있는 장기 자격 증명입니다. 임시 보안 자격 증명은 수명이 제한된 액세스 키 ID, 비밀 액세스 키 및 보안 토큰으로 구성됩니다.

임시 보안 자격 증명은 단기간만 사용 가능하므로 만료된 후에는 새 자격 증명을 생성하고 새 자격 증명을 사용하여 modules.d/aws.yml 구성 파일을 수정해야 합니다. Metricbeat에 실시간으로 다시 로드하는 기능이 활성화되어 있지 않으면 구성을 업데이트한 후 Metricbeat를 수동으로 다시 시작해야 합니다. 이전 자격 증명이 만료되기 전에 구성 파일이 새 자격 증명으로 업데이트되지 않으면 데이터 수집이 중지됩니다. 결과적으로 Metricbeat의 경우 구성 파일의 액세스 키를 사용하여 새로운 임시 자격 증명을 생성하고 구성을 자주 업데이트할 필요 없이 AWS API 호출을 수행하는 AWS 모듈을 활성화하는 것이 좋습니다.

IAM 정책 생성

IAM 정책은 AWS 환경 내 객체에 대한 권한을 정의하는 엔터티입니다. 특정 권한으로 Metricbeat에 대한 사용자 지정 IAM 정책을 생성해야 합니다. 자세한 내용은 IAM 정책 생성을 참조하십시오. Metricbeat IAM 정책이 생성된 후에는 이전 단계에서 자격 증명을 제공한 IAM 사용자에게 이 정책을 추가해야 합니다.

EC2 메트릭이 설정되면 Metricbeat IAM 정책에 다음과 같은 4개의 권한을 추가해야 합니다.

  • ec2:DescribeRegions
  • ec2:DescribeInstances
  • cloudwatch:ListMetrics
  • cloudwatch:GetMetricData

Metricbeat 시작

예를 들어 Mac 및 Linux 시스템에서 사용하는 방법은 다음과 같습니다.

./metricbeat -E setup.dashboards.enabled=true -e

참고: GCP, AWS 또는 Azure와 같은 클라우드 인스턴스의 가상 머신에서 Metricbeat를 실행 중인 경우 metricbeat.yml에서 add_cloud_metadata 항목을 제거하거나 주석 처리할 수 있습니다.

적절한 AWS 자격 증명으로 Metricbeat에서 EC2 메트릭 세트가 활성화되면 Metricbeat는 주기적으로 각 인스턴스에 대한 정보를 가져오고 AWS Cloudwatch에서 EC2 모니터링 메트릭을 수집합니다. EC2 메트릭 세트의 기본 수집 기간은 300초입니다. 인스턴스에 대한 세부 모니터링이 활성화된 경우, 유료 계층이 더 세분화된 메트릭 수집을 제공하므로 EC2 메트릭 세트 수집 기간을 60초로 변경해야 합니다. 수집 기간은 다음과 같이 modules.d / aws.yml 파일에 설정되어 있습니다.

- module: aws
  period: 60s
  metricsets:
    - "ec2"
  access_key_id: '${AWS_ACCESS_KEY_ID:""}'
  secret_access_key: '${AWS_SECRET_ACCESS_KEY:""}'
  session_token: '${AWS_SESSION_TOKEN:""}'
  default_region: '${AWS_REGION:us-west-1}'

EC2 메트릭 세트는 새 인스턴스를 자동으로 감지하고 해당 인스턴스에서 메트릭 수집을 시작합니다. EC2 인스턴스가 중지되거나 종료된 경우 EC2 메트릭 세트는 다음 수집 주기에서 인스턴스 상태 변경을 감지하고 새 상태 메트릭을 Elasticsearch로 보냅니다.

Kibana AWS 모듈 대시보드 사용

EC2 메트릭 세트에는 [Metricbeat AWS] EC2 Overview라는 미리 정의된 대시보드가 포함되어 있습니다. Metricbeat를 시작할 때 설정 명령을 실행하면 Kibana에서 이러한 대시보드가 자동으로 설정됩니다. 이에 대한 자세한 정보는 Kibana 대시 보드 설정을 참조하십시오.

이 대시보드는 AWS EC2 인스턴스의 개요입니다. CPU 사용률, 네트워크 및 디스크 I/O 데이터뿐만 아니라 인스턴스의 상태 및 상태 확인을 보여줍니다. 특정 지역, 가용 영역 또는 머신 유형으로 데이터를 좁히기 위해 적용할 수 있는 필터도 있습니다.

AWS EC2용 Kibana 대시 보드

이 대시보드를 사용하면 문제를 감지하고 모든 인스턴스가 사용에 최적화되어있는지 확인할 수 있습니다. 예를 들어, 동일한 인스턴스에서 지속적으로 높은 CPU 사용률 및 성능 문제가 나타나는 경우, 이는 CPU가 병목 상태이며 이 인스턴스에 더 많은 CPU 전원이 필요함을 나타냅니다. 또한 CPU 사용률이 낮은 인스턴스가 오랫동안 나타나는 경우, 이는 인스턴스가 CPU에서 오버사이즈되어 다른 인스턴스와 함께 축소되거나 통합될 수 있음을 의미합니다.

그 다음은 무엇일까요?

여러 AWS 서비스 및 리전의 모니터링 메트릭을 시각화할 수 있는 중앙 집중식 위치를 통해 리소스 사용량을 최적화하고 문제를 보다 신속하게 감지하고 해결할 수 있습니다. 시도해 보신 후, 의견을 알려주시고 피드백을 보내주십시오. 그리고 어떻게 사용하고 있는지 Beats 포럼에서 알려주십시오.

AWS 모듈의 EC2 메트릭 세트는 시작에 불과합니다! Amazon S3, SQS, RDS 등과 같이 일반적으로 사용되는 다른 서비스를 모니터링하기 위해 더 많은 메트릭 세트를 추가하는 노력을 기울이고 있습니다. 다음에 다루어야할 사항에 대해 의견이 있거나 기여하고자 하는 경우, 주저하지 말고 Beats Github 리포지토리에 참여하십시오!