読者です 読者をやめる 読者になる 読者になる

okochangの馬鹿でありがとう

ふらふら適当に世間を生きる日々でございます

Linux用CloudWatch監視スクリプトを使う

Amazon Linux AWS

こんにちは。
AWSにはリソース監視としてCloudWatchがありますが、EC2インスタンスの内部情報(メモリやディスクの情報)は取得出来ません。
これはAWSが各ユーザーのインスタンス内部の情報が取得出来ないように設計されているからですが、その部分をサポートするツールが提供されています。

【AWS発表】Linux用CloudWatch監視スクリプトに3つの新機能を追加

リンクにある通り、最近アップデートがされました。
IAM Roleへの対応はインスタンスにアクセスキーIDとシークレットキーを保存する必要がなくなるので、嬉しいですね。
そんなわけで早速試してみました。
※ちなみにIAM Roleについてはこちらのブログが参考になるのかなと思います(ステマ)

環境

今回はAmazon Linuxでやりましたが、以下のようなディストリビューションでもOKみたいです。

ダウンロード、設置

スクリプトのダウンロードと設置は簡単です。
※必要に応じてPATHを通して下さい。

$ mkdir bin
$ wget http://ec2-downloads.s3.amazonaws.com/cloudwatch-samples/CloudWatchMonitoringScripts-v1.1.0.zip
$ unzip CloudWatchMonitoringScripts-v1.1.0.zip
$ ll
合計 24
-rw-rw-r-- 1 ec2-user ec2-user 17627  2月 23 18:17 2013 CloudWatchMonitoringScripts-v1.1.0.zip
drwxrwxr-x 2 ec2-user ec2-user  4096  2月 25 16:38 2013 aws-scripts-mon
$ mv ./aws-scripts-mon ./bin/
$ rm CloudWatchMonitoringScripts-v1.1.0.zip
$ cd ../bin/aws-scripts-mon/

動作確認

まずは動作確認として--verboseオプションをつけてデータを送ってみます。

$ ./mon-put-instance-data.pl --mem-util --verify --verbose
MemoryUtilization: 7.97691963933651 (Percent)
No credential methods are specified. Trying default IAM role.
Using IAM role <admin-role>
Endpoint: https://monitoring.ap-northeast-1.amazonaws.com/
Payload: 
==中略==

Verification completed successfully. No actual metrics sent to CloudWatch.

データをCloudWatchに送る

こんな感じでメモリの情報をCloudWatchに送れるようです。

$ ./mon-put-instance-data.pl --mem-util --mem-used --mem-avail

Successfully reported metrics to CloudWatch. Reference Id: 4c4cd2b7-7f6a-11e2-ac26-f1ace508115d

cronに登録すれば定期的にデータをCloudWatchに送れます。
以下のように--from-cronオプションをつけてログ出力の制御が出来るようです。

$ crontab -e
*/5 * * * * ~/bin/aws-scripts-mon/mon-put-instance-data.pl --mem-util --disk-space-util --disk-path=/ --from-cron

CloudWathcで確認

Management Consoleから確認する事も出来ます。
■Disk Utilization
f:id:okochang:20130226234651p:plain
■Memory Utilization
f:id:okochang:20130226234644p:plain

データを取得してみる

このように時間を指定して統計情報を取得する事も出来るようです。

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

Instance i-a12b12a2 statistics for the last 12 hours.

CPU Utilization
    Average: 1.85%, Minimum: 0.00%, Maximum: 33.33%

Memory Utilization
    Average: 8.49%, Minimum: 8.44%, Maximum: 8.99%

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

Disk Space Utilization for /dev/xvda1 mounted on /
    Average: 11.70%, Minimum: 11.70%, Maximum: 11.70%

まとめ

個人的にはZabbixとかのオープンソースの監視ツールが慣れていますが、CloudWatchに集約している方には良さそう。
今回は試していませんが、Auto Scalingとの連携なんかも出来るようです。
簡単に導入が出来るっていうのも良いですね。