ようへいの日々精進XP

よかろうもん

serverspec と jenkis でサーバー監視が出来ないか試行錯誤してみた

概要

  • serverspec を定期的に実行することでサーバーの監視が出来るんぢゃないかと思い試してみた

準備

今回試す環境は CentOS 5.9 に jenkins と serverspec をインストールして環境を構築する。

トポロジ

以下のような構成となる。

f:id:inokara:20130617171257p:plain

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/jenkinsJENKINS_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 を叩くと大体 zlibopenssl あたりではまる。CentOS だと zlib-developenssl-develyum 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 のジョブとして登録することが出来る。

ジョブ登録

新規ジョブ作成 をクリックして フリースタイル・プロジェクトのビルド を選択する。

f:id:inokara:20130609131007p:plain

ビルド・トリガ定期的に実行 にチェックを入れて スケジュール を設定する。

f:id:inokara:20130609130911p:plain

また、 シェルの実行 に以下のコマンドを記載する。また、必要に応じて ビルド後の処理 を設定する。

監視を開始

図のようにジョブ(テストと称した監視)が登録されている。

f:id:inokara:20130609131036p:plain

コンソール出力は下記の通り。

f:id:inokara:20130609131115p:plain

まとめ

...ということで serverspec と jenkins を組み合わせたサーバー監視のメリットとデメリットについて考えてみた。

メリット

  • サーバー、クライアント共に小難しい監視システムを構築する手間が省ける
  • ssh のポートが空いていれば監視出来る(監視システム用のポートを考慮する必要が無い)
  • クライアント側からの push 監視も可能(cron の結果を post で受け取る)
  • お手軽

デメリット

  • jenkins ユーザーでのログインを許可するなどセキュリティ面を検討する必要がある
  • リソース監視は不可能では無いが手間が増える
  • 残念ながらグラフとか書けない
  • OS の設定に依存する部分がある

お手軽にサーバーの監視をするなら serverspecjenkins は個人的にオススメ。