メニュー
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 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 モジュールをインストールする必要があります。

必要なパッケージをインストールするには

  1. インスタンスにログオンします。詳細については、「Linux インスタンスへの接続」を参照してください。

  2. コマンドプロンプトで以下のようにパッケージをインストールします。

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

Red Hat Enterprise Linux

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

Red Hat Enterprise Linux に必要なパッケージをインストールするには

  1. インスタンスにログオンします。詳細については、「Linux インスタンスへの接続」を参照してください。

  2. コマンドプロンプトで以下のようにパッケージをインストールします。

    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 モジュールをインストールする必要があります。

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 Monitoring Scripts のダウンロード、解凍、構成を行う方法について示します。

モニタリングスクリプトのダウンロード、インストール、設定を行うには

  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 認証情報を表示する方法については、『アマゾン ウェブ サービス全般のリファレンス』の「認証情報の理解および取得」を参照してください。

mon-put-instance-data.pl

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

オプション

名前 説明

--mem-util

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

--mem-used

メガバイト (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 --mem-avail

CloudWatch にレポートするメトリクスの cron スケジュールを設定するには

  1. 次のコマンドを使用して crontab の編集を開始します。

    Copy
    crontab -e
  2. 5 分ごとにメモリとディスクスペースの使用状況を CloudWatch にレポートするには、以下のコマンドを追加します。

    Copy
    */5 * * * * ~/aws-scripts-mon/mon-put-instance-data.pl --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 ロールは 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

以下に、応答の例を示します。

Copy
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. [Viewing] では、スクリプトによって投入されたカスタムメトリクスが System/Linux というプレフィックス付きで表示されます。

トラブルシューティング

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

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