Amazon Web Services ブログ: 【AWS発表】Linux用CloudWatch監視スクリプトに3つの新機能を追加
というアナウンスが出てたので早速↓のページ見ながら導入してみた。
Amazon CloudWatch Monitoring Scripts for Linux - Amazon CloudWatch
事前準備
スクリプト自体はperlで書かれてるため、必要なPerlのモジュールをインストールする必要がある↓
(Can’t locate CPAN.pm inとかエラーが出る場合はcpanがインストールされてないので、yum install perl-CPAN する必要がある。)
$ cd / $ perl -MCPAN -e shell ... いろいろ聞かれるけど基本的にyesでOK ... cpan[1]> install Bundle::LWP5_837 LWP
ちなみにCrypt::SSLeayがインストールされてないとCloudWatchにデータ登録する際にhttpsプロトコルが使えずエラーになるので、こちらも事前にインストールしておく。
※export LANG=Cしてるのは、そうしないとCrypt::SSLeayのインストール時のテストでエラーになるため。
$ export LANG=C $ perl -MCPAN -e shell cpan[1]> install Crypt::SSLeay
スクリプトを入手
$ wget http://ec2-downloads.s3.amazonaws.com/cloudwatch-samples/CloudWatchMonitoringScripts-v1.1.0.zip $ unzip CloudWatchMonitoringScripts-v1.1.0.zip -d aws-scripts-mon $ cd aws-scripts-mon
アクセス情報の準備
スクリプトがCloudWatchにインスタンスの監視情報を登録できるようAWSのアクセスキーとシークレットアクセスキーを用意する。既に持ってるキーでも良いけど、IAMでスクリプトが必要とするCloudWatchのPutMetricDataオペレーションを許可するようパーミッションを設定した監視専用のユーザ作って、そのユーザのキー情報を使うのが良いかと思う。とりあえず↓なポリシーのユーザ作ってみた。
{ "Statement": [ { "Sid": "****************", "Action": [ "cloudwatch:PutMetricData" ], "Effect": "Allow", "Resource": [ "*" ] } ] }
↑の権限を持ったユーザのアクセスキーとシークレットアクセスキーをダウンロードしたawscreds.confに設定する。
AWSAccessKeyId=YourAccessKeyID
AWSSecretKey=YourSecretAccessKey
スクリプト
いよいよ監視。ダウンロードしたファイルの中のmon-put-instance-data.plというファイルが実際の監視スクリプトで、メモリ、ディスク、スワップの使用率を取得しCloudWatchにカスタムメトリクスとして登録が可能。どのデータを監視するかはオプションで指定する。
スクリプトを↓で実行すると実際にデータ取得できるか確認ができる(確認だけでこのコマンドでは実際にデータをCloudWatchには送ってない)
$ ./mon-put-instance-data.pl --mem-util --verify --verbose
実際にメモリ使用率を収集する際は↓なコマンド
$ ./mon-put-instance-data.pl --mem-util --mem-used --mem-avail
以下のようにcronに設定しておくと5分おきにメモリ使用率をCloudWatchに送信するようになる。--from-cronオプション指定することで標準出力へのアウトプットが抑制されエラー時のみエラー内容が出力されるようになるみたい。
*/5 * * * * ~/aws-scripts-mon/mon-put-instance-data.pl --mem-util --mem-used --mem-avail --from-cron
あとはManagementConsoleで↓な感じで登録されたメモリ使用率が確認できるようになる。
デフォルトのCloudWatchの監視内容はインスタンスの内部情報(今回のメモリ使用率みたいな)に関する監視はサポートされてなかったので、こういったスクリプトが増えてくると便利ね〜。