supervisorでQueue監視をしてみた時の話。
ちょっとハマったsupervisorのQueue監視。そもそも起動にすら失敗したのでクラウドメモ。
supervisord 起動までの手順
Queue管理といえばsupervisord。キュー管理といえばsupervisord。大事なことなので2回言いましたよ。
起動までに結構手間取ってしまったのでクラウドメモ。
supervisord インストール
epelリポジトリが入っているとyum でインストールが可能。
yum --enablerepo=epel install -y supervisor
/etc/supervisord.conf 設定変更
今回はLaravelのQueue管理として導入したので、対象となるコマンド、ディレクトリを設定します。
取り急ぎ、追記する形で対象のコマンドとディレクトリ、そしてログファイルを下の方に追記。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[program:hoge]<br> | |
command=/usr/local/bin/php /home/hoge/public_html/artisan queue:listen beanstalkd | |
directory=/home/hoge/public_html | |
priority=999 ; the relative start priority (default 999) | |
autostart=true ; start at supervisord start (default: true) | |
autorestart=true ; retstart at unexpected quit (default: true) | |
startsecs=10 ; number of secs prog must stay running (def. 10) | |
startretries=3 ; max # of serial start failures (default 3) | |
exitcodes=0,2 ; 'expected' exit codes for process (default 0,2) | |
stopsignal=QUIT ; signal used to kill process (default TERM) | |
stopwaitsecs=10 ; max num secs to wait before SIGKILL (default 10) | |
user=apache ; setuid to this UNIX account to run the program | |
log_stdout=true ; if true, log program stdout (default true) | |
log_stderr=true ; if true, log program stderr (def false) | |
logfile= /home/hoge/public_html/app/storage/logs/laravel-test-queue.log ; child log path, use NONE for none; default AUTO | |
logfile_maxbytes=10MB ; max # logfile bytes b4 rotation (default 50MB) | |
logfile_backups=10 ; # of logfile backups (default 10) |
supervisordを起動!!
service supervisord start
何かエラる!
socket が行方不明のようだ
http_port=/var/tmp/supervisor.sock ; (default is to run a UNIX domain socket server)
[FAILED]
[FAILED]
ソケットのありかを探す
find . -name "supervisor.sock" -ls
supervisor.sockなんてない!!!
なんかこういうの、MySQLのインストに失敗してmysql.sockが無いって言われるのとなんか似てるぞ。。?
困ったときは公式をチェック
sudo touch /var/run/supervisor.sock
sudo chmod 777 /var/run/supervisor.sock
sudo chmod 777 /var/run/supervisor.sock
(touchしてsockファイルを作れと。)
issuで作られたsockの場所がたまた/var/run/下な訳であって、必ずしもこのディレクトリに作ることは必須では無いと思われ。
私はとりあえずissuと同じディレクトリで作りました。
上記手順でsockを作ったら再度/etc/supervisord.confをひらいてsockのパスを修正。
supervisordを起動!!
[root@laravel]# service supervisord start
Starting supervisord: Unlinking stale socket /var/run/supervisor.sock
[ OK ]
Starting supervisord: Unlinking stale socket /var/run/supervisor.sock
[ OK ]
めでたしめでたし!
監視したい機能が他にもあったら[program:プログラム名称]でどんどん設定すればよろしいはず。
コマンドとディレクトリとログファイルを設定すればよし。