PythonのSupervisorによるプロセスモニタリングおよび自動起動

2153 ワード

supervisorはPythonで開発された汎用的なプロセス管理プログラムで、普通のコマンドラインプロセスをバックグラウンドdaemonに変更し、プロセス状態を監視し、異常終了時に自動的に再起動することができます.
まず2つのコマンドを理解します.
supervisord:supervisorのサーバ側部分、supervisorを起動するとこのコマンドが実行されます
supervisorctl:start、stop、status、reloadなどの操作を実行できるsupervisorのコマンドラインウィンドウを起動します.
需要:redis-serverこのプロセスはredisを実行するサービスです.私たちはこのサービスが意外に停止した後に自動的に再起動することを要求します.
インストール(Centos):
yum install python-setuptools
easy_install supervisor
 
インストールに成功したかどうかをテストします.
echo_supervisord_conf
 
プロファイルの作成:
echo_supervisord_conf >/etc/supervisord.conf
 
プロファイルの変更:
supervisord.conf最終増加:
[program:redis]
command=redis-server//実行するコマンド
Autostart=true//supervisor起動時に同時に起動するかどうか
Autorestart=true//プログラムがexitを飛び出したとき、このプログラムは自動的に再起動します
startsecs=3//プログラム再起動時にruning状態にとどまる秒数
 
コマンドの実行:
supervisord//supervisorの起動
supervisorctl//コマンドラインを開く
[root@vm14211 ~]# supervisorctl  redis                            RUNNING    pid 24068, uptime 3:41:55
ctl中:help//表示コマンド
ctl中:status//ステータス表示
 
問題:
1 redisが現れるのはrunningではなくFATAL状態
ロゴを見に行くべきだ
logは/tmp/supervisord.log
 
2ログに表示されます.
gave up: redis entered FATAL state, too many start retries too quickly
redisを変更します.confのdaemonizeはno
supervisorを使用すると、自分で勝手にサービスを再起動することはできません.そうしないと、supervisorの監視に影響し、supervisorctlのstart/stop/reloadコマンドを使用してサービス管理操作を行います.
検証の完了:
1 ps aux | grep redis
[root@vm1~]# ps aux | grep redis  root     30582  0.0  0.0   9668  1584 ?        S    14:12   0:00 redis-server
2 kill 30582
3
[root@vm1 ~]# ps aux | grep redis  root     30846  0.0  0.0   9668  1552 ?        S    15:19   0:00 redis-server
この時pidが更新されたのを見ました.
Web管理インタフェース:
supervisord.confの[img_http_server]セクションでは、supervisorctlでreloadを使用するとWeb管理インタフェースが起動します.
[inet_http_server]         ; inet (TCP) server disabled by default
port=*:9001        ; (ip_address:port specifier, *:port for all iface)
username=user              ; (default is no username (open server))
password=123               ; (default is no password (open server))