概要
- serverspec を定期的に実行することでサーバーの監視が出来るんぢゃないかと思い試してみた
準備
今回試す環境は CentOS 5.9
に jenkins と serverspec をインストールして環境を構築する。
トポロジ
以下のような構成となる。
jenkins のインストール
wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key yum install jenkins yum install java-1.6.0-openjdk.x86_64
インストール後に jenkins
を起動。
/etc/init.d jenkins start
通常は 8080
で起動するが /etc/sysconfig/jenkins
で JENKINS_PORT
で指定しているポート番号を修正することで任意のポート番号で jenkins
を起動することが出来る。
JENKINS_PORT="18080"
ruby をソースコードからインストール
wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p429.tar.gz tar zxvf ruby-1.9.3-p429.tar.gz cd ruby-1.9.3-p429 ./configure make && make install
ソースからインストールすると見た目はインストールに成功するが、gem
を叩くと大体 zlib
と openssl
あたりではまる。CentOS
だと zlib-devel
と openssl-devel
を yum install
した後でソースコードのディレクトリに移動して…
cd ${path_to_ruby}/ext/zlib/ ruby extconf.rb make && make install
serverspec のインストール
gem
からインストールする。
/usr/local/bin/gem install serverspec --no-ri --no-rdoc
監視用のテストを書く
MySQL の稼働状況
MySQL
の稼働状況を下記のように作成した。
他にも Apache
が稼働していたら Apache
用のテストを書く。
spec_helper.rb を修正する
Advanced Tips に書かれているようにテスト先(監視先)ホストでのパスを指定する。
c.path = '/sbin:/usr/sbin'
を追加。
テスト先ホストの設定
sshd_config の設定
sudo
で利用出来るパスと jenkins
ユーザーがパスワード入力無しで sudo
コマンドが利用出来るように設定する。
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
この設定が必要なのは CentOS
だけなのかな…。
jenkins に監視ジョブを登録する
serverspec を jenkins の workspace にコピーする
/var/lib/jenkis/workspace
以下に jenkins
に実行させたいスクリプトを置くことで jenkins
のジョブとして登録することが出来る。
ジョブ登録
新規ジョブ作成
をクリックして フリースタイル・プロジェクトのビルド
を選択する。
ビルド・トリガ
は 定期的に実行
にチェックを入れて スケジュール
を設定する。
また、 シェルの実行
に以下のコマンドを記載する。また、必要に応じて ビルド後の処理
を設定する。
監視を開始
図のようにジョブ(テストと称した監視)が登録されている。
コンソール出力は下記の通り。
まとめ
...ということで serverspec と jenkins を組み合わせたサーバー監視のメリットとデメリットについて考えてみた。
メリット
- サーバー、クライアント共に小難しい監視システムを構築する手間が省ける
- ssh のポートが空いていれば監視出来る(監視システム用のポートを考慮する必要が無い)
- クライアント側からの push 監視も可能(cron の結果を post で受け取る)
- お手軽
デメリット
- jenkins ユーザーでのログインを許可するなどセキュリティ面を検討する必要がある
- リソース監視は不可能では無いが手間が増える
- 残念ながらグラフとか書けない
- OS の設定に依存する部分がある
お手軽にサーバーの監視をするなら serverspec
と jenkins
は個人的にオススメ。