どうも、cloudpack のかっぱ (@inokara) です…
追記
chef-solo がオワコンという話を聞きまして代わりに chef-client の local mode を試してみました。
chef-client -z -c .solo.rb -j .nodeslocalhost.json
こんな感じで実行することで chef-solo のように利用することが出来ました。尚、local mode では chef-zero
と呼ばれる簡易的な Chef-Server を利用しています。
はじめに
前回の続きです。
sensu-client for Windows をそれなりに使う為に設定を幾つか追加してみました。
memo
それなりに使う為に
- プラグインの追加
- sensu-client のログローテーション
をやってみたいと思います。
プラグインの追加
まずは監視のプラグインを追加してみます。
include_recipe "sensu::default" include_recipe "sensu::client_service" sensu_client node.name do address node.ipaddress subscriptions node.roles + ["all"] #additional(:cluster => node.cluster) end # plugins = ['check-disk-windows.rb','check-windows-cpu-load.rb'] plugins.each do |plugin| cookbook_file "/opt/sensu/etc/plugins/#{plugin}" do source "sensu-community-plugins/plugins/windows/#{plugin}" action :create end end # gems = ['sensu-plugin','activesupport'] gems.each do |gem| gem_package "#{gem}" do gem_binary("/opt/sensu/embedded/bin/gem") options("--no-ri --no-rdoc") end end # sensu_check "check-disk-windows" do command "/opt/sensu/embedded/bin/ruby.exe /opt/sensu/etc/plugins/check-disk-windows.rb" handlers ["default"] subscribers ["windows"] interval 60 standalone true end # sensu_check "check-windows-cpu-load" do command "/opt/sensu/embedded/bin/ruby.exe /opt/sensu/etc/plugins/check-windows-cpu-load.rb" handlers ["default"] subscribers ["windows"] interval 60 standalone true end
プラグインはあらかじめ git clone しておきましょう。
cd C:\chef-repocookbookssensu-deployfilesdefault git clone https://github.com/sensu/sensu-community-plugins.git
そして chef-solo をかまします。
cd C:\chef-repo chef-solo -c .solo.rb -j .nodeslocalhost.json
以下のように出力されました。
もちろん、uchiwa を見ても…
プラグインの追加も Chef なら簡単っすな!
sensu-client.log のローテ
Windows 以外で動作する sensu-client のログは logrotate でローテーションされますが、残念ながら Windows 版ではバッチや powershell でやるしか無いのかなって思っていたら logrotatewin というツールを教えて頂いたので利用させて頂くことにしました。
このツールも chef でセットアップしてしまいますのでレシピは以下のように書きました。
windows_package "logrotatewin" do action :install source "http://softlayer-sng.dl.sourceforge.net/project/logrotatewin/logrotateSetup.msi" end # cookbook_file "/Program Files (x86)/Logrotate/Content/logrotate.conf" do source "logrotate.conf" action :create end # windows_task 'sensu-client logrotation' do user 'Administrator' password 'your_password' cwd 'C:Program Files (x86)Logrotate' command 'C:Program Files (x86)Logrotatelogrotate.exe C:Program Files (x86)LogrotateContentlogrotate.conf' frequency :daily frequency_modifier 1 end
ポイントは windows_task
で一日一回 logrotatewin を実行させる設定を行っているところです。Windows のタスクも chef で登録出来るのは素晴らしい!
ちなみに logrotatewin の設定は以下のような書式となります。
c:optsensuvarlogsensu-client.log { rotate 5 daily prerotate net stop sensu-client endscript postrotate net start sensu-client endscript }
どっかで見たことのある書式ですね…そう、logrotate の設定と似ていますね。
ということで、あらためて chef-solo を実行します。
cd C:\chef-repo chef-solo -c .solo.rb -j .nodeslocalhost.json
既に適用済みですので以下のように表示されました。
task に登録されているかは powershell から以下のように確認します。
schtasks.exe /Query /TN "sensu-client logrotation"
以下のように出力されました。
おお、ちゃんと登録されていますね。明日あたり改めて確認してみたいと思います。
〆
正直なところ Windows と Chef の組み合わせについては懐疑的でしたが sensu-client をセットアップしたり、ログのローテーション等の設定も Linux 環境と遜色無く行えました。
sensu-client については sensu-chef のリソースを使いまわすことが出来ますし、windows cookbook を利用することでパッケージのインストールやタスクの登録等も簡単でした。
ということで、引続き Windows と sensu と chef について色々と弄っていきたいと思います。
追伸:powershell サイコー!
元記事はこちらです。
「chef-solo で始める sensu-client for Windows(2)」