こんにちは!beardです!
Amazon CloudWatch Monitoring ScriptsはCloudWatchでは通常取得できないインスタンスのデータ(HDDの使用率やメモリの使用率)をCloudwatchに表示させることができます。
これを設定したあとServerspecでチェックします。
今回はCentOS6.5を使っています。Monitoring Scriptsを使う前の準備についてはこちらのAWSのドキュメントを参照してください。
1. Amazon CloudWatch Monitoring Scriptsをダウンロードして設定します。
今回は/usr/local/scriptにスクリプトを配置します。
1 2 3 4 |
cd /usr/local/script wget http://ec2-downloads.s3.amazonaws.com/cloudwatch-samples/CloudWatchMonitoringScripts-v1.1.0.zip unzip CloudWatchMonitoringScripts-v1.1.0.zip rm -rf CloudWatchMonitoringScripts-v1.1.0.zip |
2. 一度実行してみます。成功すると以下のような表示がされます。
またマネジメントコンソール上から正常に取得できているか確認してください。成功すると以下のような表示がされます。
Cloudwatchで正常に表示されるかどうかまではServerspecでは判定できませんので、マネジメントコンソール上から正常に取得できているか確認してください。
1 2 |
/usr/local/script/aws-scripts-mon/mon-put-instance-data.pl --disk-path=/ --disk-space-util --mem-util ←HDDとメモリの使用率をCloudwatchへ報告する Successfully reported metrics to CloudWatch. Reference Id: b25cd7f7-290d-11e4-806b-7fdac406de07 ←成功時の標準出力 |
3. これを10分間隔で実行するようにcrontabに登録します。
1 2 |
crontab -e */10 * * * * /usr/local/script/aws-scripts-mon/mon-put-instance-data.pl --disk-path=/ --disk-space-util --mem-util |
4. ここまでやったことをServerspecで確認するためのコードを書いていきます。「httpd_spec.rb」を編集します。
1 2 3 4 5 6 7 8 9 |
require 'spec_helper' #script describe command("/etc/scripts/aws-scripts-mon/mon-put-instance-data.pl --disk-p ath=/ --disk-space-util --mem-util") do it { should return_stdout /Successfully reported/ } end #crontab describe cron do it { should have_entry '*/10 * * * * /usr/local/script/aws-scripts-mon/mon -put-instance-data.pl --disk-path=/ --disk-space-util --mem-util' } end |
5. Serverspecでテストします。
1 2 3 4 5 6 |
rake spec (in /usr/local/spec/i-26b8133f) /opt/ruby-2.0.0/bin/ruby -S rspec spec/localhost/httpd_spec.rb .. Finished in 0.62934 seconds 2 examples, 0 failures |
簡単に解説します。
Serverspecでは任意のコマンドを実行させ、その時の標準出力を判定することができます。
1 2 3 |
describe command("実行するコマンド") do it { should return_stdout /受け取る文字列/ } end |
ServerspecにはcrontabのResouceTypeも用意されております。こちらは単純に
1 2 3 |
describe cron do it { should have_entry 'crontabに登録するべき内容' } end |
となります。
いかがでしたか?
今回は、ServerspecでAmazon CloudWatch Monitoring Scriptsをチェックしてみました。
ServerspecはOSや用途によってチェックする項目が変わってきますが、文法は変わりません。
また、サービスが無効になっているかの確認や、任意のコマンドについてもチェックを行うことができます。
次回もお楽しみに!!