CloudWatch Monitoring ScriptでDiskUsageやMemoryUsage等を取得
→これらのメトリクスはEC2上で動くOSに依存するメトリクスであるため、OS側からの補助なしでは取得できない。
Amazon CloudWatch Monitoring Scripts for Linux
↑Amazon EC2インスタンスのメモリとディスクスペースの使用率をモニタリングするためのサンプルスクリプト
CloudWatch Monitoring ScriptでDiskUsageやMemoryUsage等を取得
↑参考ですが2013年と古いので少し変更点がありました。
[AWS] Perlモジュールが見当たらない
↑Perlモジュールをインストールしないとエラーが出ます。(Can’t locate xxx.pmエラー)が出ます。
Amazon EC2 Linux インスタンスのメモリとディスクのメトリクスのモニタリング
↑公式document
Amazon CloudWatch Monitoring Scripts for Linuxの準備
mkdir cloudwatch
cd cloudwatch
wget http://aws-cloudwatch.s3.amazonaws.com/downloads/CloudWatchMonitoringScripts-1.2.1.zip
unzip CloudWatchMonitoringScripts-1.2.1.zip
rm CloudWatchMonitoringScripts-1.2.1.zip
cd aws-scripts-mon
関係モジュールのインストール
Perlモジュールが見当たらない(Can’t locate xxx.pmエラー)が出るので下記のコマンドでPerlモジュールをインストール
sudo yum install -y perl-Sys-Syslog
sudo yum install -y perl-URI-1.60-9.8.amzn1.noarch
sudo yum install –y perl-DateTime-TimeZone-1.63-2.9.amzn1.noarch
yum provides *Compress
sudo yum install -y perl-Compress-Raw-Zlib-2.061-4.1.amzn1.x86_64
sudo mv /usr/lib64/perl5/vendor_perl/Compress/Raw/Zlib.pm /usr/lib64/perl5/vendor_perl/Compress/Zlib.pm
sudo yum install -y perl-LWP-Protocol-https.noarch
IAM作成
OSの中からCloudWatch APIを叩いて値を送信するため、インスタンスに対してAPIへのアクセス権限を付与する必要があります
cwscript-policy を作成してください。ロールにアタッチしてメトリクスを取得、CloudWatchにを出力できるように設定
EC2にアタッチするロールを作成し、上記のcwscript-policyを割り当てる
cwscript-policy
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"cloudwatch:GetMetricStatistics",
"cloudwatch:PutMetricData"
],
"Effect": "Allow",
"Resource": [
"*"
]
}
]
}
test
実行環境が整いました。動作テスト –verifyをつけると実際にはCloudWatchには送信されない
./mon-put-instance-data.pl --mem-util --verify --verbose
option*
--mem-util :メモリ使用率 :Memory Utilization (%)
--mem-used :使用メモリ :Memory Used (MB)
--mem-avail :利用可能なメモリ :Memory Available (MB)
--swap-util :スワップ使用率 :Swap Utilization (%)
--swap-used :使用済みスワップ :Swap Used (MB)
--disk-space-util :ディスク容量使用率 :Disk Space Utilization (%)
--disk-space-used :使用ディスク容量 :Disk Space Used (GB)
--disk-space-avail :ディスク空き容量 :Disk Space Available (GB)
--verify :CloudWatchに送信しない
cron設定
crontab -eコマンドでエディタを開き、cron設定
ディスク使用量に関するメトリクスはパスを指定が必要 下記は/を指定
--disk-path=/
cronから呼び出す場合は、--from-cronというオプションが必要
--from-cron
* * * * * /home/ec2-user/cloudwatch/aws-scripts-mon/mon-put-instance-data.pl --mem-util --mem-used --mem-avail --swap-util --swap-used --disk-space-util --disk-space-used --disk-space-avail --disk-path=/ --from-cron
このサンプルについて
これらのスクリプトは、Linuxを実行しているAmazon EC2インスタンスで実行するように設計されています。ここで、メモリとディスクスペースの使用状況のメトリクスをAmazon CloudWatchに報告するようにスクリプトを設定できます。
メトリクスがCloudWatchに送信されると、CloudWatchコンソールでグラフを表示し、統計を計算し、それらにアラームを設定することができます。
スクリプトからCloudWatchに送信されるメトリックスは、個々のインスタンスまたは複数のインスタンスにわたって設定できます。
さらに、Amazon Auto Scaling利用者は、Auto Scalingポリシーにスクリプトによって報告されたメトリックスを使用できます。 スクリプトの認証にAWS IAMを使用し、IAMロールのサポートを含みます。
スクリプトは、Amazon CloudWatchカスタムメトリックスとしてメモリおよびディスクスペース使用量メトリックスを送信します。標準のAmazon CloudWatch無料利用枠の数量と価格が適用されます。 これはサポートされていないサンプルですが、AWSフォーラムに投稿したすべてのフィードバック、コメント、質問に受け付けます。
セットアップや設定など、スクリプトの使用方法の詳細については、Amazon CloudWatch開発者ガイドの「Linux用のAmazon CloudWatchモニタリングスクリプト」を参照してください