メニュー
Amazon Elastic Compute Cloud
Linux インスタンス用ユーザーガイド

Amazon EC2 Linux インスタンスのメモリとディスクのメトリクスのモニタリング

Amazon Elastic Compute Cloud (Amazon EC2) Linux ベースのインスタンス用の Amazon CloudWatch モニタリングスクリプトは、Amazon CloudWatch カスタムメトリクスを作成/利用する方法の実例を示しています。これらの Perl スクリプトのサンプルは、Linux インスタンスのメモリ、スワップ、およびディスクスペースの使用状況メトリクスをレポートする、完全に機能する例で構成されます。Amazon CloudWatch Monitoring Scripts for Linux は、AWS のサンプルコードライブラリからダウンロードできます。

重要

これらのスクリプトサンプルに過ぎません。これらはそのまま提供され、サポートはしていません。

Amazon CloudWatch 標準のカスタムメトリクスの利用料金が、これらのスクリプトの使用に適用されます。詳細については、Amazon CloudWatch 料金表ページを参照してください。

サポートされているシステム

これらのモニタリングスクリプトは、Linux を実行している Amazon EC2 インスタンスで使用することを目的として記述されています。これらのスクリプトは、以下の Amazon Machine Image (AMI) の 32 ビットおよび 64 ビットバージョンを使用してインスタンス上でテスト済みです。

  • Amazon Linux 2014.09.2

  • Red Hat Enterprise Linux 6.6

  • SUSE Linux Enterprise Server 12

  • Ubuntu Server 16.04 および 14.04

Windows を実行する Amazon EC2 インスタンスの EC2Config を使ってこのデータを CloudWatch Logs に送信することにより、メモリとディスクメトリクスを モニタリングすることができます。 詳細については、「CloudWatch へのパフォーマンスカウンターの送信と CloudWatch Logs へのログの送信」 (Windows インスタンスの Amazon EC2 ユーザーガイド) を参照してください。

パッケージの内容

モニタリングスクリプトのパッケージに、以下のファイルが含まれます。

  • CloudWatchClient.pm – 共通 Perl モジュール。これを使って、他のスクリプトから簡単に Amazon CloudWatch を呼び出すことができます。

  • mon-put-instance-data.pl – Amazon EC2 インスタンス (メモリ、スワップ、ディスクスペースの使用状況) のシステムメトリクスを収集し、Amazon CloudWatch に送信します。

  • mon-get-instance-stats.pl – Amazon CloudWatch に問い合わせて、このスクリプトが実行される EC2 インスタンスの最新の使用状況統計を表示します。

  • [awscreds.template] – お客様のアクセスキー ID とシークレットアクセスキーを格納する AWS 認証情報のファイルテンプレートです。

  • LICENSE.txt – Apache 2.0 のライセンスを含むテキストファイルです。

  • NOTICE.txt – 著作権表示です。

前提条件

Linux のバージョンによって、モニタリングスクリプトが動作するには事前に追加モジュールをインストールする必要があります。

Amazon Linux AMI

Amazon Linux AMI バージョン 2014.03 以降を実行している場合は、追加の Perl モジュールをインストールする必要があります。

To install the required packages

  1. Log on to your instance. For more information, see Linux インスタンスへの接続.

  2. At a command prompt, install packages as follows:

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

Red Hat Enterprise Linux

追加の Perl モジュールをインストールする必要があります。

To install the required packages on Red Hat Enterprise Linux

  1. Log on to your instance. For more information, see Linux インスタンスへの接続.

  2. At a command prompt, install packages as follows:

    Copy
    sudo yum install perl-Switch perl-DateTime perl-Sys-Syslog perl-LWP-Protocol-https perl-Digest-SHA -y sudo yum install zip unzip

SUSE Linux Enterprise Server

追加の Perl モジュールをインストールする必要があります。

To install the required packages on SUSE

  1. Log on to your instance. For more information, see Linux インスタンスへの接続.

  2. At a command prompt, install packages as follows:

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

Ubuntu Server

サーバーは以下のように設定する必要があります。

To install the required packages on Ubuntu

  1. Log on to your instance. For more information, see Linux インスタンスへの接続.

  2. At a command prompt, install packages as follows:

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

ご利用開始にあたって

以下の手順では、EC2 Linux インスタンスで CloudWatch Monitoring Scripts のダウンロード、解凍、構成を行う方法について示します。

To download, install, and configure the monitoring scripts

  1. At a command prompt, move to a folder where you want to store the monitoring scripts and run the following command to download them:

    Copy
    curl http://aws-cloudwatch.s3.amazonaws.com/downloads/CloudWatchMonitoringScripts-1.2.1.zip -O
  2. Run the following commands to install the monitoring scripts you downloaded:

    Copy
    unzip CloudWatchMonitoringScripts-1.2.1.zip rm CloudWatchMonitoringScripts-1.2.1.zip cd aws-scripts-mon
  3. Ensure that the scripts have permission to perform CloudWatch operations using one of the following options:

    • If you associated an AWS Identity and Access Management (IAM) role with your instance, verify that it grants permissions to perform the following operations:

      • cloudwatch:PutMetricData

      • cloudwatch:GetMetricStatistics

      • cloudwatch:ListMetrics

      • ec2:DescribeTags

    • Specify your AWS credentials in a credentials file. First, copy the awscreds.template file included with the monitoring scripts to awscreds.conf as follows:

      Copy
      cp awscreds.template awscreds.conf

      Add the following content to this file:

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

      For information about how to view your AWS credentials, see Understanding and Getting Your Security Credentials in the アマゾン ウェブ サービス全般のリファレンス.

mon-put-instance-data.pl

このスクリプトは、現行システムにあるメモリ、スワップ、ディスクスペースの使用状況のデータを収集します。その後、Amazon CloudWatch へのリモート呼び出しを行って、収集したデータをカスタムメトリクスとしてレポートします。

オプション

名前 説明

--mem-util

MemoryUtilization メトリクスをパーセント (%) 単位で収集し、送信します。このオプションは、アプリケーションとオペレーティングシステムによって割り当てられたメモリのみをレポートします。キャッシュとバッファにあるメモリは含まれません。

--mem-used

メガバイト (MB) 単位でレポートされる MemoryUsed メトリクスを収集し、送信します。このオプションは、アプリケーションとオペレーティングシステムによって割り当てられたメモリのみをレポートします。キャッシュとバッファにあるメモリは含まれません。

--mem-used-incl-cache-buff

メガバイト (MB) 単位でレポートされる MemoryUsed メトリクスを収集し、送信します。このオプションは、アプリケーションとオペレーティングシステムによって割り当てられたメモリのみをレポートします。キャッシュとバッファにあるメモリは含まれません。

--mem-avail

メガバイト (MB) 単位でレポートされる MemoryAvailable メトリクスを収集し、送信します。このオプションは、アプリケーションとオペレーティングシステムが使用できるメモリをレポートします。

--swap-util

パーセント (%) 単位でレポートされる SwapUtilization メトリクスを収集し、送信します。

--swap-used

メガバイト (MB) 単位でレポートされる SwapUsed メトリクスを収集し、送信します。

--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 メトリクスを収集し送信します。メトリクスは、デフォルトにより、ギガバイトでレポートされます。

Linux オペレーティングシステムには予約ディスクスペースがあるため、使用済みディスクスペースと使用可能なディスクスペースを合計しても正確なディスクスペースの合計にならないことがあります。

--disk-space-avail

選択したディスクについて、DiskSpaceAvailable メトリクスを収集し送信します。メトリクスはギガバイトでレポートされます。

Linux オペレーティングシステムには予約ディスクスペースがあるため、使用済みディスクスペースと使用可能なディスクスペースを合計しても正確なディスクスペースの合計にならないことがあります。

--memory-units=UNITS

メモリ使用量をレポートする単位を指定します。指定がない場合、メモリはメガバイト (MB) でレポートされます。UNITS は、バイト (B)、キロバイト (KB)、メガバイト (MB)、ギガバイト (GB) のいずれかになります。

--disk-space-units=UNITS

ディスクスペース使用量をレポートする単位を指定します。指定がない場合、ディスクスペースはギガバイト (GB) でレポートされます。UNITS は、バイト (B)、キロバイト (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 ロールは 1 つのみです。IAM ロールが検出されない場合、または 2 つ以上の 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

To set a cron schedule for metrics reported to CloudWatch

  1. Start editing the crontab using the following command:

    Copy
    crontab -e
  2. Add the following command to report memory and disk space utilization to CloudWatch every five minutes:

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

    If the script encounters an error, the script will write the error message in the system log.

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 ロールは 1 つのみです。IAM ロールが検出されない場合、または 2 つ以上の 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 コンソールでカスタムメトリクスを確認できます。

To view custom metrics

  1. Run mon-put-instance-data.pl as described previously.

  2. https://console.aws.amazon.com/cloudwatch/にある CloudWatch コンソールを開きます。

  3. Choose View Metrics.

  4. For Viewing, your custom metrics posted by the script are displayed with the prefix System/Linux.

トラブルシューティング

CloudWatchClient.pm モジュールは、インスタンスのメタデータをローカルでキャッシュします。モニタリングスクリプトを実行しているインスタンスから AMI を作成すると、キャッシュ TTL (デフォルト: 6 時間、Auto Scaling グループでは 24 時間) 以内にこの AMI から起動したすべてのインスタンスは、元のインスタンスのインスタンス ID を使用してメトリクスを出力します。キャッシュ TTL 期間が経過した後は、スクリプトは新しいデータを取得し、モニタリングスクリプトは現在のインスタンスのインスタンス ID を使用します。これをすぐに修正するには、次のコマンドを使用してキャッシュされたデータを削除します。

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