概念
Supervisor
是一个类UNIX操作系统上的进程管理与监控工具,可以将命令行进程变成Deamon
进程,并监控其状态,在异常退出时可以自动启动进程。更为详细的介绍参见官网http://supervisord.org/
Supervisor组件:我们只介绍两个重要的组件, supervisord
和 supervisorctl
supervisord 主进程,它是负责管理进程的Server,它根据配置我们的配置文件通过fork/exec 的方式来创建子应用程序的子进程,管理其整个生命周期,对crash子进程进行重启,子进程变化发送事件通知等。
supervisorctl 客户端命令行工具,我们通过它来管理我们自己的应用进程 stop start restart update reload 等 ,这个命令行工具通过UNIX socket 或者TCP来和我们的supervisord进行通信。
安装
# 我们通过yum安装,先按照epel源
yum install -y epel-release
# 安装supervisor
yum install -y supervisor
安装位置默认在
/usr/bin/supervisorctl
配置文件默认在下面目录
cd /etc/supervisord.d
主配置文件修改
[root@mypc01 ~]# vim /etc/supervisord.conf
注意最后面有一行,表示引入副配置文件
[include] ;分离的配置文件,我们可以总是将我们应用的配置文件放到单独的目录文件下管理, 这样配置清晰,下面是配置的分离配置文件的路径,supervisord会加载我们配置到对于文件加 下的文件
files = /etc/supervisord.d/*.conf ; 匹配 /etc/supervisord.d/ 下所有以.conf 结尾的文件
服务项管理
# 创建pid文件
touch /var/run/supervisor/supervisord.pid
# 开机启动
systemctl enable supervisord
# 启动supervisord
systemctl start supervisord
# 查看启动状态
systemctl status supervisord
# 查看tcp端口是否在监听中
netstat -antp |grep 9001
# 如果看到9001 说明supervisord 已经正常工作
副配置文件
比如,利用supervisior
启动一个shell脚本.
# 创建一个配置文件.以conf结尾
#一般改下前两行就ok了
[root@mypc01 ~]# vim /etc/supervisord.d/xx.conf
配置内容为
[program:access-flume] ; 自定义一个名称
command=/opt/apps/collect-app/scripts/xx.sh
stderr_logfile=/var/log/supervisor/access-flume.err ;错误日志文件
stdout_logfile=/var/log/supervisor/access-flume.log ;标准输出日志文件,我们通过该文件查看运行日志
stdout_logfile_maxbytes=10MB ; 标准输出日志文件多大滚动一次
stdout_logfile_backups=10 ; 标准输出日志文件最多备份多少个
user=root ; 以什么用户启动
autostart=true ; 是否在supervisord启动时,直接就启动应用
autorestart=true ; crash 后是否自动重启
startsecs=10 ;应用进程启动多少秒之后,此时状态如果是running状态,就认为是成功
startretries=3 ; 当进程启动失败后,最大尝试启动的次数, 如果超过指定次数,应用会被标记为Fail状态
stopasgroup=true ; 是否停止由应用本身创建的子进程,此选项接受的停止信号是stop信号
killasgroup=true ; 是否停止由应用本身创建的子进程,此选项接受的停止信号是SIGKILL信号
redirect_stderr=false ; 如果是true,stderr的日志会被写入stdout日志文件中
启动
# 读取配置文件
supervisorctl reread
# 更新启动
supervisorctl update access-flume
# 查看启动状态
supervisorctl status access-flume
# 如果想停止
supervisorctl stop access-flume
# 如果想再次启动
supervisorctl start access-flume
# 注意一旦你修改了配置文件内容,一定要先reread,然后 update 就可以了
其他进程或者脚本类似的都可以交给supervisor
来管理.
关闭supervisor
总结
一般 配置下command和program这两个参数就够了