메뉴
Amazon Elastic Compute Cloud
User Guide for Linux Instances

Amazon EC2 Linux 인스턴스의 메모리 및 디스크 메트릭 모니터링

Amazon Elastic Compute Cloud(Amazon EC2) Linux 기반 인스턴스에 대한 Amazon CloudWatch 모니터링 스크립트는 Amazon CloudWatch의 사용자 지정 측정치를 생성하고 사용하는 방법을 보여줍니다. 이 예제는 Linux 인스턴스에 대한 메모리, 스왑 및 디스크 공간 사용률 측정치를 보고하는 완벽하게 작동하는 예로 구성된 Perl 스크립트입니다. Linux에 대한 Amazon CloudWatch 모니터링 스크립트는 AWS 샘플 코드 라이브러리에서 다운로드할 수 있습니다.

중요

이러한 스크립트는 예일 뿐으로, 있는 그대로 제공되며 지원되지 않습니다.

사용자 지정 지표에 대한 표준 Amazon CloudWatch 사용 요금이 이러한 스크립트 사용에 적용됩니다. 자세한 내용은 Amazon CloudWatch 요금 페이지를 참조하십시오.

지원되는 시스템

이러한 모니터링 스크립트는 Linux에서 실행 중인 Amazon EC2 인스턴스에 사용하기 위해 작성된 것입니다. 스크립트는 32비트와 64비트를 모두 포함하여 다음 Amazon 머신 이미지(AMI)를 사용하는 인스턴스에서 테스트되었습니다.

  • Amazon Linux 2014.09.2

  • Red Hat Enterprise Linux 7.4 및 6.9

  • SUSE Linux Enterprise Server 12

  • Ubuntu Server 16.04 및 14.04

또한 이 데이터를 CloudWatch Logs로 전송하여 Windows를 실행하는 Amazon EC2 인스턴스에서 메모리 및 디스크 측정치를 모니터링할 수 있습니다. 자세한 내용은 Windows 인스턴스용 Amazon EC2 사용 설명서Amazon CloudWatch에 로그, 이벤트 및 성능 카운터 전송을 참조하십시오.

패키지 내용

모니터링 스크립트 패키지는 다음과 같은 파일로 구성됩니다.

  • CloudWatchClient.pm – 다른 스크립트에서 Amazon CloudWatch 호출을 간소화하는 공유 Perl 모듈입니다.

  • mon-put-instance-data.pl – Amazon EC2 인스턴스에 대한 시스템 메트릭(메모리, 스왑, 디스크 사용률)에 대한 시스템 측정치를 수집하여 Amazon CloudWatch에 전송합니다.

  • mon-get-instance-stats.pl – Queries Amazon CloudWatch에 쿼리하여 이 스크립트가 실행된 EC2 인스턴스에 대한 최신 사용률 통계를 표시합니다.

  • awscreds.template – 액세스 키 ID 및 보안 액세스 키를 저장하는 AWS 자격 증명의 파일 템플릿입니다.

  • LICENSE.txt – Apache 2.0 라이선스가 들어 있는 텍스트 파일입니다.

  • NOTICE.txt – 저작권 통지입니다.

사전 조건

일부 Linux 버전에서는 모니터링 스크립트를 실행하려면 먼저 모듈을 추가로 설치해야 합니다.

Amazon Linux AMI

Amazon Linux AMI 2014.03 이상 버전을 사용 중인 경우 Perl 모듈을 추가로 설치해야 합니다.

필요한 패키지를 설치하려면,

  1. 인스턴스에 로그온합니다. 자세한 내용은 Linux 인스턴스에 연결 단원을 참조하십시오.

  2. 명령 프롬프트에서 다음과 같이 패키지를 설치합니다.

    Copy
    sudo yum install perl-Switch perl-DateTime perl-Sys-Syslog perl-LWP-Protocol-https -y

Red Hat Enterprise Linux

Perl 모듈을 추가로 설치해야 합니다.

Red Hat Enterprise Linux 6.9에 필요한 패키지를 설치하려면

  1. 인스턴스에 로그온합니다. 자세한 내용은 Linux 인스턴스에 연결 단원을 참조하십시오.

  2. 명령 프롬프트에서 다음과 같이 패키지를 설치합니다.

    Copy
    sudo yum install perl-DateTime perl-CPAN perl-Net-SSLeay perl-IO-Socket-SSL perl-Digest-SHA gcc -y sudo yum install zip unzip
  3. CPAN을 승격된 사용자로 실행합니다.

    Copy
    sudo cpan

    다음 프롬프트가 표시될 때까지 프롬프트를 통해 Enter 키를 누릅니다.

    Copy
    cpan[1]>
  4. CPAN 프롬프트에서 아래의 각 명령을 실행합니다. 명령 하나를 실행하면 해당 사항이 설치되며, CPAN 프롬프트로 돌아가면 다음 명령을 실행합니다. 프로세스를 계속 진행하라는 메시지가 나타나면 이전과 같이 Enter 키를 누릅니다.

    Copy
    cpan[1]> install YAML cpan[1]> install LWP::Protocol::https cpan[1]> install Sys::Syslog cpan[1]> install Switch

Red Hat Enterprise Linux 7.4에 필요한 패키지를 설치하려면

  1. 인스턴스에 로그온합니다. 자세한 내용은 Linux 인스턴스에 연결 단원을 참조하십시오.

  2. 명령 프롬프트에서 다음과 같이 패키지를 설치합니다.

    Copy
    sudo yum install perl-Switch perl-DateTime perl-Sys-Syslog perl-LWP-Protocol-https perl-Digest-SHA --enablerepo="rhui-REGION-rhel-server-optional" -y sudo yum install zip unzip

SUSE Linux Enterprise Server

Perl 모듈을 추가로 설치해야 합니다.

SUSE에 필요한 패키지를 설치하려면,

  1. 인스턴스에 로그온합니다. 자세한 내용은 Linux 인스턴스에 연결 단원을 참조하십시오.

  2. 명령 프롬프트에서 다음과 같이 패키지를 설치합니다.

    Copy
    sudo zypper install perl-Switch perl-DateTime sudo zypper install –y "perl(LWP::Protocol::https)"

Ubuntu Server

다음과 같이 서버를 구성해야 합니다.

Ubuntu에 필요한 패키지를 설치하려면,

  1. 인스턴스에 로그온합니다. 자세한 내용은 Linux 인스턴스에 연결 단원을 참조하십시오.

  2. 명령 프롬프트에서 다음과 같이 패키지를 설치합니다.

    Copy
    sudo apt-get update sudo apt-get install unzip sudo apt-get install libwww-perl libdatetime-perl

시작하기

다음 단계에서는 EC2 Linux 인스턴스에 대한 CloudWatch 모니터링 스크립트를 다운로드, 압축 해제 및 구성하는 방법을 보여줍니다.

모니터링 스크립트를 다운로드, 설치 및 구성하려면,

  1. 명령 프롬프트에서 모니터링 스크립트를 저장할 폴더로 이동하여 다음 명령을 실행하고 스크립트를 다운로드합니다.

    Copy
    curl http://aws-cloudwatch.s3.amazonaws.com/downloads/CloudWatchMonitoringScripts-1.2.1.zip -O
  2. 다음 명령을 실행하여 다운로드한 모니터링 스크립트를 설치합니다.

    Copy
    unzip CloudWatchMonitoringScripts-1.2.1.zip rm CloudWatchMonitoringScripts-1.2.1.zip cd aws-scripts-mon
  3. 다음 옵션 중 하나를 사용하여 스크립트에 CloudWatch 작업 권한이 있는지 확인합니다.

    • AWS Identity and Access Management(IAM) 역할을 인스턴스에 연결하였다면 다음 작업 권한이 부여되는지 확인합니다.

      • cloudwatch:PutMetricData

      • cloudwatch:GetMetricStatistics

      • cloudwatch:ListMetrics

      • ec2:DescribeTags

    • 자격 증명 파일에서 AWS 자격 증명을 지정합니다. 먼저 다음과 같이 모니터링 스크립트가 포함된 awscreds.template 파일을 awscreds.conf로 복사합니다.

      Copy
      cp awscreds.template awscreds.conf

      다음 내용을 이 파일에 추가합니다.

      Copy
      AWSAccessKeyId=my-access-key-id AWSSecretKey=my-secret-access-key

      AWS 자격 증명을 확인하는 방법에 대한 자세한 내용은 Amazon Web Services 일반 참조에서 Understanding and Getting Your Security Credentials를 참조하십시오.

mon-put-instance-data.pl

이 스크립트는 현재 시스템에 대한 메모리, 스왑 및 디스크 공간 사용량 데이터를 수집합니다. 그런 다음 Amazon CloudWatch를 원격으로 호출하여 수집한 데이터를 사용자 지정 측정치로 보고합니다.

옵션

이름 설명

--mem-util

MemoryUtilization 측정치를 수집하여 % 단위로 보고합니다. 이 옵션은 애플리케이션 및 운영 체제에서 할당한 메모리만 보고하고 캐시 및 버퍼 메모리는 제외합니다.

--mem-used

MemoryUsed 측정치를 수집하여 전송합니다. 이때, MB 단위로 보고합니다. 이 옵션은 애플리케이션 및 운영 체제에서 할당한 메모리만 보고하고 캐시 및 버퍼 메모리는 제외합니다.

--mem-used-incl-cache-buff

MemoryUsed 측정치를 수집하여 전송합니다. 이때, MB 단위로 보고합니다. 이 옵션은 캐시 및 버퍼 메모리는 물론 애플리케이션 및 운영 체제에서 할당한 메모리도 보고합니다.

--mem-avail

MemoryAvailable 측정치를 수집하여 전송합니다. 이때, MB 단위로 보고합니다. 이 옵션은 애플리케이션 및 운영 체제에서 사용할 수 있는 메모리를 보고합니다.

--swap-util

SwapUtilization 측정치를 수집하여 전송합니다. 이때, % 단위로 보고합니다.

--swap-used

SwapUsed 측정치를 수집하여 전송합니다. 이때, MB 단위로 보고합니다.

--disk-path=PATH

보고할 디스크를 선택합니다.

PATH는 보고해야 할 파일 시스템의 마운트 지점 또는 마운트 지점에 있는 모든 파일을 지정할 수 있습니다. 디스크를 여러 개 선택하는 경우 각 디스크에 대해 --disk-path=PATH를 지정합니다.

//home에 마운트된 파일 시스템의 디스크를 선택하려면 다음 매개 변수를 사용하십시오.

--disk-path=/ --disk-path=/home

--disk-space-util

선택한 디스크의 DiskSpaceUtilization 측정치를 수집하여 전송합니다. 이 측정치는 % 단위로 보고됩니다.

참고로, 이 스크립트로 계산되는 디스크 사용률 측정치는 df -k -l 명령으로 계산한 값과 다릅니다. df -k -l 명령으로 계산한 값이 더 유용하다고 생각하면 스크립트에서 계산 값을 변경할 수 있습니다.

--disk-space-used

선택한 디스크의 DiskSpaceUsed 측정치를 수집하여 전송합니다. 기본적으로 이 측정치는 GB 단위로 보고됩니다.

Linux 운영 체제의 예약된 디스크 공간으로 인해 사용된 디스크 공간 및 사용 가능한 디스크 공간이 총 디스크 공간에 정확하게 더해지지 않을 수 있습니다.

--disk-space-avail

선택한 디스크의 DiskSpaceAvailable 측정치를 수집하여 전송합니다. 이 측정치는 GB 단위로 보고됩니다.

Linux 운영 체제의 예약된 디스크 공간으로 인해 사용된 디스크 공간 및 사용 가능한 디스크 공간이 총 디스크 공간에 정확하게 더해지지 않을 수 있습니다.

--memory-units=UNITS

메모리 사용량을 보고할 단위를 지정합니다. 단위를 지정하지 않으면 메모리는 MB 단위로 보고됩니다. UNITS는 바이트, KB, MB, GB 중 하나입니다.

--disk-space-units=UNITS

디스크 공간 사용량을 보고할 단위를 지정합니다. 단위를 지정하지 않으면 디스크 공간은 GB 단위로 보고됩니다. UNITS는 바이트, KB, MB, GB 중 하나입니다.

--aws-credential- file=PATH

AWS 자격 증명이 들어 있는 파일의 위치를 제공합니다.

이 매개 변수는 --aws-access-key-id 및 --aws-secret-key 매개 변수와 함께 사용할 수 없습니다.

--aws-access-key-id=VALUE

호출자를 식별하는 데 사용할 AWS 액세스 키 ID를 지정합니다. --aws-secret-key 옵션과 함께 사용해야 합니다. 이 옵션은 --aws-credential-file 매개 변수와 함께 사용하지 마십시오.

--aws-secret-key=VALUE

CloudWatch에 대한 요청에 서명하는 데 사용할 AWS 보안 액세스 키를 지정합니다. --aws-access-key-id 옵션과 함께 사용해야 합니다. 이 옵션은 --aws-credential-file 매개 변수와 함께 사용하지 마십시오.

--aws-iam-role=VALUE

AWS 자격 증명을 제공하는 데 사용되는 IAM 역할을 지정합니다. =VALUE 값이 필요합니다. 자격 증명을 지정하지 않으면 EC2 인스턴스와 연결된 기본 IAM 역할이 적용됩니다. IAM 역할은 하나만 사용할 수 있습니다. IAM 역할이 없거나 IAM 역할이 두 개 이상 있는 경우 스크립트에서는 오류를 반환합니다.

이 옵션은 --aws-credential-file, --aws-access-key-id 또는 --aws-secret-key 매개 변수와 함께 사용하지 마십시오.

--aggregated[=only]

인스턴스 유형, AMI ID 및 리전 전체에 대한 집계 측정치를 추가합니다. =only 값은 선택 사항입니다. 이 값을 지정하면 스크립트는 집계된 메트릭만 보고합니다.

--auto-scaling[=only]

Auto Scaling 그룹에 대해 집계된 측정치를 추가합니다. =only 값은 선택 사항입니다. 이 값을 지정하면 스크립트는 Auto Scaling 메트릭만 보고합니다. 스크립트를 사용하여 IAM 계정 또는 역할과 연결된 IAM 정책에는 EC2 작업 DescribeTags을 호출할 권한이 있어야 합니다.

--verify

측정치를 수집하는 스크립트 실행을 테스트하고, 전체 HTTP 요청을 준비하지만 데이터를 보고하기 위해 CloudWatch를 실제로 호출하지는 않습니다. 이 옵션 역시 자격 증명이 제공되었는지 확인합니다. 자세한 정보 표시 모드에서 실행 중인 경우 이 옵션은 CloudWatch에 전송될 측정치를 출력합니다.

--from-cron

Cron에서 스크립트를 호출하는 경우 이 옵션을 사용합니다. 이 옵션을 사용하면 모든 진단 결과가 표시되지 않지만 사용자 계정의 로컬 시스템 로그에 오류 메시지가 전송됩니다.

--verbose

스크립트가 수행한 작업에 대한 자세한 정보를 표시합니다.

--help

사용 정보를 표시합니다.

--version

스크립트의 버전 번호를 표시합니다.

예제

다음 예제는 사용자가 IAM 역할 또는 awscreds.conf 파일을 입력하였다고 가정합니다. 그렇지 않으면 이 명령에서 --aws-access-key-id--aws-secret-key 파라미터를 사용하여 자격 증명을 입력해야 합니다.

CloudWatch에 데이터를 게시하지 않고 간단한 테스트 실행을 수행하려면

Copy
./mon-put-instance-data.pl --mem-util --verify --verbose

사용 가능한 모든 메모리 측정치를 수집한 다음 CloudWatch에 전송하려면

Copy
./mon-put-instance-data.pl --mem-util --mem-used-incl-cache-buff --mem-used --mem-avail

CloudWatch에 보고되는 메트릭에 대한 Cron 일정을 설정하려면

  1. 다음 명령을 사용하여 crontab 편집을 시작합니다.

    Copy
    crontab -e
  2. 다음 명령을 추가하여 5분마다 메모리 및 디스크 공간 사용량을 CloudWatch에 보고합니다.

    Copy
    */5 * * * * ~/aws-scripts-mon/mon-put-instance-data.pl --mem-used-incl-cache-buff --mem-util --disk-space-util --disk-path=/ --from-cron

    스크립트 오류가 발생하면 스크립트에서는 시스템 로그에 오류 메시지를 기록합니다.

Auto Scaling 그룹에 대한 집계 측정치를 수집하여 개별 인스턴스 측정치를 보고하지 않고 Amazon CloudWatch에 전송하려면

Copy
./mon-put-instance-data.pl --mem-util --mem-used --mem-avail --auto-scaling=only

인스턴스 유형, AMI ID 및 리전에 대한 집계 측정치를 수집하여 개별 인스턴스 측정치를 보고하지 않고 Amazon CloudWatch에 전송하려면

Copy
./mon-put-instance-data.pl --mem-util --mem-used --mem-avail --aggregated=only

mon-get-instance-stats.pl

이 스크립트는 최근 시간 수를 사용하여 입력한 시간 간격 내에서 메모리, 스왑 및 디스크 공간 메트릭에 대한 통계를 CloudWatch에 쿼리합니다. 이 데이터는 스크립트가 실행된 Amazon EC2 인스턴스에 대해 제공됩니다.

옵션

이름 설명

--recent-hours=N

보고할 최근 시간 수를 지정합니다. 이 옵션은 N으로 표시되는데 여기서 N은 정수입니다.

--aws-credential-file=PATH

AWS 자격 증명이 들어 있는 파일의 위치를 제공합니다.

--aws-access-key-id=VALUE

호출자를 식별하는 데 사용할 AWS 액세스 키 ID를 지정합니다. --aws-secret-key 옵션과 함께 사용해야 합니다. 이 옵션은 --aws-credential-file 옵션과 함께 사용하지 마십시오.

--aws-secret-key=VALUE

CloudWatch에 대한 요청에 서명하는 데 사용할 AWS 보안 액세스 키를 지정합니다. --aws-access-key-id 옵션과 함께 사용해야 합니다. 이 옵션은 --aws-credential-file 옵션과 함께 사용하지 마십시오.

--aws-iam-role=VALUE

AWS 자격 증명을 제공하는 데 사용되는 IAM 역할을 지정합니다. =VALUE 값이 필요합니다. 자격 증명을 지정하지 않으면 EC2 인스턴스와 연결된 기본 IAM 역할이 적용됩니다. IAM 역할은 하나만 사용할 수 있습니다. IAM 역할이 없거나 IAM 역할이 두 개 이상 있는 경우 스크립트에서는 오류를 반환합니다.

이 옵션은 --aws-credential-file, --aws-access-key-id 또는 --aws-secret-key 매개 변수와 함께 사용하지 마십시오.

--verify

측정치를 수집하는 스크립트 실행을 테스트하고, 전체 HTTP 요청을 준비하지만 데이터를 보고하기 위해 CloudWatch를 실제로 호출하지는 않습니다. 이 옵션 역시 자격 증명이 제공되었는지 확인합니다. 자세한 정보 표시 모드에서 실행 중인 경우 이 옵션은 CloudWatch에 전송될 측정치를 출력합니다.

--verbose

스크립트가 수행한 작업에 대한 자세한 정보를 표시합니다.

--help

사용 정보를 표시합니다.

--version

스크립트의 버전 번호를 표시합니다.

지난 12시간에 대한 사용률 통계를 얻으려면 다음 명령을 실행합니다.

Copy
./mon-get-instance-stats.pl --recent-hours=12

다음은 응답의 예입니다.

Instance metric statistics for the last 12 hours.

CPU Utilization
    Average: 1.06%, Minimum: 0.00%, Maximum: 15.22%

Memory Utilization
    Average: 6.84%, Minimum: 6.82%, Maximum: 6.89%

Swap Utilization
    Average: N/A, Minimum: N/A, Maximum: N/A

Disk Space Utilization on /dev/xvda1 mounted as /
    Average: 9.69%, Minimum: 9.69%, Maximum: 9.69%

콘솔에서 사용자 지정 측정치 보기

mon-put-instance-data.pl 스크립트를 성공적으로 실행한 경우 Amazon CloudWatch 콘솔에서 사용자 정의 측정치를 확인할 수 있습니다.

사용자 지정 측정치를 보려면

  1. 앞에서 설명한 대로 mon-put-instance-data.pl을 실행합니다.

  2. https://console.aws.amazon.com/cloudwatch/에서 CloudWatch 콘솔을 엽니다.

  3. View Metrics를 선택합니다.

  4. 스크립트에 게시된 사용자 정의 측정치가 접두사 System/Linux와 함께 Viewing에 표시됩니다.

문제 해결

CloudWatchClient.pm 모듈은 인스턴스 메타데이터를 로컬 캐시에 저장합니다. 모니터링 스크립트를 실행한 인스턴스에서 AMI를 생성하는 경우 캐시 TTL(기본값: 6시간, Auto Scaling 그룹은 24시간) 내에 이 AMI에서 시작한 인스턴스는 원본 인스턴스의 ID를 사용하여 측정치를 내보냅니다. 캐시 TTL 시간이 지난 후에는 스크립트가 최신 데이터를 검색하고, 모니터링 스크립트는 현재 인스턴스의 ID를 사용합니다. 이를 즉시 수정하려면 다음 명령을 사용하여 캐시에 저장된 데이터를 제거하십시오.

Copy
rm /var/tmp/aws-mon/instance-id