Supervisor 是一款使用 Python 开发的非常优秀的进程管理工具。它可以在类 UNIX 系统上让用户精确地监视与控制多组指定数量的服务进程。当监控的服务进程意外退出时,会尝试自动重启这些服务,以保持服务可用状态。
安装
Supervisor 官方 提供的安装方式较多,这里采用 pip 方式安装。
安装pip
yum install python-pip |
安装Supervisor
通过 pip 安装 Supervisor:
pip install supervisor |
安装 Supervisor 后,会出现 supervisorctl 和 supervisord 两个程序,其中 supervisorctl 为服务监控终端,而 supervisord 才是所有监控服务的大脑。查看 supervisord 是否安装成功:
supervisord -v |
开机启动
将 supervisord 配置成开机启动服务,下载官方 init 脚本。
修改关键路径配置:
PIDFILE=/var/run/supervisord.pid |
移到该文件到/etc/init.d
目录下,并重命名为 supervisor,添加可执行权限:
chmod 777 /etc/init.d/supervisor |
配置成开机启动服务:
chkconfig --add supervisor |
配置
生成配置文件
Supervisord 安装后,需要使用如下命令生成配置文件。
mkdir /etc/supervisor |
主配置部分
supervisord.conf
的主配置部分说明:
[unix_http_server] |
这部分我们不需要做太多的配置修改,如果需要开启 WEB 终端监控,则需要配置并开启 inet_http_server 项。
进程配置部分
Supervisor 需管理的进程服务配置,示例如下:
[program:work] ; 服务名,例如work |
通常将每个进程的配置信息配置成独立文件,并通过 include 模块包含,这样方便修改和管理配置文件。
启动
配置完成后,启动 supervisord 守护服务:
supervisord -c /etc/supervisor/supervisord.conf |
常用的命令参数说明:
- -c:指定配置文件路径
- -n:是否非守护态运行
- -l:日志文件目录
- -i:唯一标识
查看 supervisord 启动情况:
ps -ef | grep "supervisor" |
监控进程
Supervisor 提供了多种监控服务的方式,包括 supervisorctl 命令行终端、Web 端、XML_RPC 接口多种方式。
命令终端
直接使用 supervisorctl 即可在命令行终端查看所有服务的情况,如下:
supervisorctl |
supervisorctl 常用命令列表如下;
- status:查看服务状态
- update:重新加载配置文件
- restart:重新启动服务
- stop:停止服务
- pid:查看某服务的 pid
- tail:输出最新的 log 信息
- shutdown:关闭 supervisord 服务
Web
在配置中开启 inet_http_server 后,即可通过 Web 界面便捷地监控进程服务了。