ServersMan@VPS ServersMan のプロセス監視 + 自動起動


ServersMan@VPS 標準装備の「ServersMan」ですが、Twitter で「いつのまにか落ちてる(ノД`)」っていうつぶやきをたまーに見かけるので、ServesManのプロセスを監視してお亡くなりになっていたら自動で起動する方法をまとめました。

実は、先日の Monit 記事 を書いていて「ServersManもやってみよう」と思ったら CLI から起動できるわけじゃないし、pid ファイルも吐いてないみたいで Monit では実現できそうにないため Python の自作スクリプトで強引に実現させてます。

いつもどおり DTI 非公認 かつ ServersMan の仕様が変わると動かなくなるので、自己責任でお願いします。


目次

必要なもの

  • Python ( ServersMan@VPS に最初からインストールされてるバージョンで大丈夫)
  • crontab の設定
  • 監視+自動起動スクリプト本番と多少の修正
  • ServersMan の管理ツールへログインして ServersMan の起動・停止が可能な人 ※1

※1 ServersMan管理ツールで起動・停止できない、そもそもログインできない人

最後に「おまけ」を用意したので、そこで確認してください。直るかもしれません。それでもだめなら初期化しか・・・。

監視+自動起動スクリプトの説明

やってることをざっくり説明

  • プロセス一覧から /opt/serversman/bin/serversman を探す
  • 存在しなかったら、http://localhost/serversman へ スクリプトがログイン
  • ログイン後、ServersMan を起動操作

監視+自動起動スクリプトのダウンロード

ダウンロード+展開します。

wget http://github.com/temog/ServersMan-VPS-Tool/tarball/master
tar zxvf temog-ServersMan-VPS-Tool-4f64da4.tar.gz
cd temog-ServersMan-VPS-Tool-4f64da4

スクリプトの置き場所はどこでもいいです。消えない場所に置くといいと思います。
例:ホーム直下に隠しディレクトリ( .serversman ) を作ってその中に置く

mkdir ~/.serversman
cp monitServersman.py ~/.serversman

監視+自動起動スクリプトの編集

以下、3点の設定をします。

  • ServersManの管理ツールのパスワード (管理ツールログインに使用)
  • ServersManのメールアドレス
  • ServersManのパスワード
cd ~/.serversman
vi monitServersman.py

#### 設定開始 #########################################

# ServersMan管理ツール
smAdminParam = {
    'passwd'   : '管理ツールのパスワード',
    'usr_name' : 'admin',
    'q'        : 'auth',
}

# ServersManのIDとパスワード
smAccParam = {
    'sm-account'  : 'ServersManのメールアドレス',
    'sm-password' : 'ServersManのパスワード',
    'q'           : 4,
    'setSMState'  : 0,
    'smSwitch'    : 1,
    'B1'          : '設定'
}

#### 設定終了 #########################################

crontab の設定

crontab を設定して監視スクリプトを定期的に実行するようにします。

crontab -e
# 以下の2行を追加
SM_MONIT_Path=設置先のパス(例だと /home/ユーザ名/.serversman )
*/10 * * * * python $SM_MONIT_Path/monitServersman.py 1>> $SM_MONIT_Path/restart.log 2>> $SM_MONIT_Path/error.log

※ 赤字の 10 の部分が「10分毎にチェックする」という意味です。

動作確認

ServersMan が起動してると何もしないので、動作確認するために管理ツールへログインして ServersMan を終了させてください。(プロセス Kill してもいいんですが、一応・・・)
マニュアルはこちら → http://dream.jp/vps/manual/mnl_sm.html#a_03

ServersMan を落としたあとに VPS へログインして、監視スクリプト設置先に移動します。

cd ~/.serversman

crontab が動きそうな時間が経過したらプロセスを見てみます。

ps -ef | grep serversman
daemon    3476     1  0 01:10 ?        00:00:00 /opt/serversman/bin/serversman

起動しました。

自動起動すると同ディレクトリに restart.log が作られ、起動時間が記録されます。

cat restart.log
2010-10-14 01:10:03

おまけ

ServersMan は apache の実行ユーザ/グループが daemon/daemon で動作するように作られているようで、apache の実行ユーザを daemon から変更したりすると、動かなくなります。

しかし、自分でPHPをインストールした場合など、apache の実行ユーザは、apache に設定しておかないとセッションが使えないなどの問題が起こるため httpd.conf を変更している人も多いはずなので、apache の実行ユーザを daemon から変更していても動作するようにする方法を紹介します。
(自分もこれではまりました。。)

※ くどいようですが、自己責任でお願いします。

ServersMan を停止。
もし起動してたら停止。

一時ファイルを消す

rm /tmp/serversman_tmp_1
rm /tmp/serversman_tmp_2

各ディレクトリ・ファイルの所有者を変更
httpd.conf で User/Group を apache に設定していると仮定します。

chown -R apache:apache /opt/serversman
chown -R apache:apache /var/www/data
chown -R apache:apache /var/www/cgi-bin

apache をリブート

/etc/init.d/httpd restart

ブラウザで ServersMan 管理ツールへログインして Serversman が起動・停止できるか確認して完了。

http://VPSのIPアドレス/serversman

One Response to ServersMan@VPS ServersMan のプロセス監視 + 自動起動

  1. […] ServersMan@VPS ServersMan のプロセス監視 + 自動起動 […]

コメントを残す

メールアドレスが公開されることはありません。

Top