Supervisor是一个c/s系统,被用来在类Unix系统中监控进程状态。Supervisor使用python开发。 服务端进程为supervisord,主要负责启动自身及其监控的子进程,响应客户端命令,重启异常退出的子进程,记录子进程stdout和stderr输出,生成和处理子进程生命周期中的事件。其配置文件一般为/etc/supervisord.conf,可以在配置文件中配置相关参数,包括supervisord自身的状态,其管理的各个子进程的相关属性等。Supervisor的客户端为supervisorctl,它提供了一个类shell的接口(即命令行)来操作supervisord服务端。通过supervisorctl,可以连接到supervisord服务进程,获得服务进程监控的子进程状态,启动和停止子进程,获得正在运行的进程列表。客户端通过Unix域套接字或者TCP套接字与服务进程进行通信,服务器端具有身份凭证认证机制,可以有效提升安全性。当客户端和服务端位于同一台机器上时,客户端与服务器共用同一个配置文件/etc/supervisord.conf,通过不同标签来区分两者的配置。
1.安装
下载压缩包源码安装
cd /usr/local/src
wget https://pypi.python.org/packages/80/37/964c0d53cbd328796b1aeb7abea4c0f7b0e8c7197ea9b0b9967b7d004def/supervisor-3.3.1.tar.gz
tar -zxvf supervisor-3.3.1.tar.gz
cd supervisor-3.3.1
python setup.py install
Supervisor安装完成后会生成三个执行程序:supervisortd、supervisorctl以及echo_supervisord_conf,它们分别是Supervisor的守护进程服务(用于接收进程管理命令)、客户端(用于和守护进程通信,发送管理进程的指令)以及生成初始配置文件程序。
2.生成配置文件
mkdir /etc/supervisor
echo_supervisord_conf > /etc/supervisor/supervisord.conf
创建项目的配置文件目录:
cd /etc/supervisor
mkdir conf.d
修改配置文件supervisord.conf中项目配置文件的存放位置为conf.d目录下以后缀.conf命名的所有配置文件。
vim /etc/supervisor/supervisord.conf
具体内容为:(注意去掉include前的分号)
[include]
files = conf.d/*.conf
3.创建项目配置文件
cd /etc/supervisor/conf.d
vim awesome.conf
加入如下配置:
此处配置/usr/local/bin/python3为python3的命令所在位置。command:进程要执行的命令;stdout_logfile:日志路径
4.启动
按指定配置文件启动服务端进程:
/usr/bin/python2 /usr/bin/supervisord -c /etc/supervisor/supervisord.conf
重新加载配置文件:
sudo supervisorctl reload
ps -ef|grep awesome 查看项目awesome进程有没有成功启动,若没有则执行:sudo supervisorctl start awesome
sudo supervisorctl status 查看进程状态
5.常见错误
(1) [app.py is not executable]没有权限 。
解决:chmod a+x /srv/awesome/www/app.py
(2) [root@localhost www]# sudo supervisord -c /etc/supervisor/supervisord.conf
Error: Another program is already listening on a port that one of our HTTP servers is configured to use. Shut this program down first before starting supervisord.
For help, use /bin/supervisord -h
解决:sudo unlink /tmp/supervisor.sock