Linux用CloudWatch監視スクリプトを使う
こんにちは。
AWSにはリソース監視としてCloudWatchがありますが、EC2インスタンスの内部情報(メモリやディスクの情報)は取得出来ません。
これはAWSが各ユーザーのインスタンス内部の情報が取得出来ないように設計されているからですが、その部分をサポートするツールが提供されています。
【AWS発表】Linux用CloudWatch監視スクリプトに3つの新機能を追加
リンクにある通り、最近アップデートがされました。
IAM Roleへの対応はインスタンスにアクセスキーIDとシークレットキーを保存する必要がなくなるので、嬉しいですね。
そんなわけで早速試してみました。
※ちなみにIAM Roleについてはこちらのブログが参考になるのかなと思います(ステマ)
環境
今回はAmazon Linuxでやりましたが、以下のようなディストリビューションでもOKみたいです。
- Red Hat Enterprise Linux 6.3
- Ubuntu Server 12.04
- SUSE Linux Enterprise Server 11
ダウンロード、設置
スクリプトのダウンロードと設置は簡単です。
※必要に応じて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
■Memory Utilization
データを取得してみる
このように時間を指定して統計情報を取得する事も出来るようです。
$ ./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との連携なんかも出来るようです。
簡単に導入が出来るっていうのも良いですね。