ServerspecでAmazon CloudWatch Monitoring Scripts for Linux をチェックしてみます

こんにちは!beardです!

Amazon CloudWatch Monitoring ScriptsはCloudWatchでは通常取得できないインスタンスのデータ(HDDの使用率やメモリの使用率)をCloudwatchに表示させることができます。

これを設定したあとServerspecでチェックします。

今回はCentOS6.5を使っています。Monitoring Scriptsを使う前の準備についてはこちらの AWSのドキュメント を参照してください。

  1. Amazon CloudWatch Monitoring Scriptsをダウンロードして設定します。

今回は/usr/local/scriptにスクリプトを配置します。

1cd /usr/local/script 2wget http://ec2-downloads.s3.amazonaws.com/cloudwatch-samples/CloudWatchMonitoringScripts-v1.1.0.zip3unzip CloudWatchMonitoringScripts-v1.1.0.zip4rm -rf CloudWatchMonitoringScripts-v1.1.0.zip
  1. 一度実行してみます。成功すると以下のような表示がされます。

またマネジメントコンソール上から正常に取得できているか確認してください。成功すると以下のような表示がされます。

Cloudwatchで正常に表示されるかどうかまではServerspecでは判定できませんので、マネジメントコンソール上から正常に取得できているか確認してください。

1/usr/local/script/aws-scripts-mon/mon-put-instance-data.pl --disk-path=/ --disk-space-util --mem-util ←HDDとメモリの使用率をCloudwatchへ報告する2Successfully reported metrics to CloudWatch. Reference Id: b25cd7f7-290d-11e4-806b-7fdac406de07 ←成功時の標準出力
  1. これを10分間隔で実行するようにcrontabに登録します。
1crontab -e23*/10 * * * * /usr/local/script/aws-scripts-mon/mon-put-instance-data.pl --disk-path=/ --disk-space-util --mem-util
  1. ここまでやったことをServerspecで確認するためのコードを書いていきます。「httpd_spec.rb」を編集します。
1require 'spec_helper'2#script34describe command("/etc/scripts/aws-scripts-mon/mon-put-instance-data.pl --disk-p                                                            ath=/ --disk-space-util --mem-util") do 5   it { should return_stdout /Successfully reported/ } 6end7#crontab8describe cron do910      it { should have_entry '*/10 * * * * /usr/local/script/aws-scripts-mon/mon -put-instance-data.pl --disk-path=/ --disk-space-util --mem-util' }11end
  1. Serverspecでテストします。
1rake spec2(in /usr/local/spec/i-26b8133f)3/opt/ruby-2.0.0/bin/ruby -S rspec spec/localhost/httpd_spec.rb4..5Finished in 0.62934 seconds62 examples, 0 failures

簡単に解説します。

Serverspecでは任意のコマンドを実行させ、その時の標準出力を判定することができます。

1describe command("実行するコマンド") do 2   it { should return_stdout /受け取る文字列/ } 3end

ServerspecにはcrontabのResouceTypeも用意されております。こちらは単純に

1describe cron do 2      it { should have_entry 'crontabに登録するべき内容' }3end

となります。

いかがでしたか?

今回は、ServerspecでAmazon CloudWatch Monitoring Scriptsをチェックしてみました。

ServerspecはOSや用途によってチェックする項目が変わってきますが、文法は変わりません。

また、サービスが無効になっているかの確認や、任意のコマンドについてもチェックを行うことができます。

次回もお楽しみに!!

この記事を書いた人

aws-recipe-user