読者です 読者をやめる 読者になる 読者になる

notebook

都内でWEB系エンジニアやってます。

supervisor3

kibanaをデーモン化したときに使うことがあったのでメモ

kibanaのインストールに関してはここでは触れません

CentOSyumだと2系がインストールされるのでrpmを持ってきて直接インストールしました

インストール

--script-dirを入れているのはAmazonLinuxで/usr/local/binにコマンドが設置されてしまうため

起動スクリプトの方が/usr/binにしてあるのでそこに合わせています

余談ですがansibleでAmazonLinuxに対してplaybookを実行した時に環境変数がうまく読み込めずにsupervisorctlが実行できない問題も発生したためこういう形にしました

sudo yum install python-setuptools
easy_install --script-dir=/usr/bin supervisor

起動スクリプトの設置

supervisorの起動スクリプト

を参考(ほぼコピー)にして追加で設定ファイルを読み込むようにしました

  • 実行権限の付与
chmod 755 /etc/init.d/supervisord

ディレクトリの作成

ログファイルと各プログラムの設定ファイル用のディレクトリを作成

mkdir /var/log/supervisor
mkdir /etc/supervisor.d

設定ファイル

デフォルトの設定をします

echo_supervisord_conf > /etc/supervisord.conf
  • デーモン化する対象の設定はincludeで読み込ませるように設定
  • ログファイルとpidファイルが/tmpに出力するようになっているためそれぞれ修正

kibana.ini

supervisor2の時はlogfileの指定だけでよかったが3だとstdoutとstderrを分ける必要がある模様

[program:kibana4]
autorestart = True
log_stderr = True
stopsignal = QUIT
log_stdout = True
command = /usr/local/bin/kibana-4.1.3-linux-x64/bin/kibana
autostart = True
stderr_logfile = /var/log/supervisor/kibana4.err.log
stdout_logfile = /var/log/supervisor/kibana4.stdout.log

supervisorctl

デーモン化したプロセスの管理を行うコマンド

ステータス

supervisorctl status
kibana4                          RUNNING   pid 21363, uptime 0:49:17

停止

supervisorctl stop kibana4

開始

supervisorctl start kibana4

start,stopでプロセスがコントロールできている事を確かめて完了

他にもrestart,reload,rereadや他のコマンドもあるようだけど最低限はこれだけあればよさそう

fgでフォアグラウンドに繋げることも出来るようです、ログとか出力してなければ使うこともあるのかな...

まとめ

もともとkibanaをsupervisor2でデーモン化させるようなplaybookを書いていたものの、EC2のインスタンスをpvからhvmにして立て直したところsupervisorが動かなくなってしまったので3にしてしまえという事で3にしてみました

軽い気持ちでやり始めたもののpvとhvmで微妙に仕様が違う部分があったりして思った以上に時間がかかりました

計ってないのでなんとも言えないですがpythonのモジュール系で結構違うところがある模様

supervisorのコマンドもあまり使うことがなかったので改めてメモとして残しておきます

せっかくなのでsupervisorのインストール処理をansibleのroleにしました

ansible-role-supervisor3

広告を非表示にする