1、简介
Supervisor是Linux/Unix系统下的一个进程管理工具。可以监控进程,启动、停止进程,重定向进程的log。可以对多个进程可以批量管理。当一个进程被意外杀死后,可以自动重启。
可以提供web界面管理进程。(开启inet_http_server,不推荐使用)
python语言开发。
2、如何安装
方法1:yum install supervisor
方法2:源码安装
方法3:如果安装了python
easy_install supervisor
echo_supervisord_conf >/你的路径/supervisord.conf
3、如何配置和使用
安装好后在/etc/会生成一个supervisord.conf文件及一个supervisord.d文件目录
配置sypervisord.conf
demo:(仅列出常用配置)
[unix_http_server]
file=/home/vibasic/supervisor/supervisor.sock ;UNIX socket 文件,supervisorctl 会使用
;[inet_http_server] ;HTTP服务器,提供web管理界面,不建议使用
;port=127.0.0.1:9001 ;Web管理后台运行的IP和端口,如果开放到公网,需要注意安全性,如果不限定IP,可以配置*:9001
;username=user ;登录管理后台的用户名
;password=123 ;登录管理后台的密码
[supervisord]
logfile=/home/vibasic/supervisor/supervisord.log ; 日志文件,
logfile_maxbytes=50MB ;日志文件大小,超出会rotate,如果设成0,表示不限制大小
logfile_backups=10 ;日志文件保留备份数量默认10,设为0表示不备份
loglevel=info ;日志级别,默认info,其它: debug,warn,trace
pidfile=/home/vibasic/supervisor/supervisord.pid ; pid 文件
nodaemon=false ;是否在前台启动,默认是false,即以 daemon 的方式启动
minfds=1024 ;可以打开的文件描述符的最小值,默认 1024
minprocs=200 ;可以打开的进程数的最小值,默认 200
childlogdir=/home/vibasic/supervisor/log ; ('AUTO' child log dir, default $TEMP)
[supervisorctl]
serverurl=unix:///home/vibasic/supervisor/supervisor.sock ; 通过UNIX socket连接supervisord,路径与unix_http_server部分的file一致,注意格式:unix:// + 路径
; [program:xxx]是被管理的进程配置参数,xxx是进程的名称,必须唯一
[program:test_vibasic]
command=/home/vibasic/bin/python /home/vibasic/test_vibasic.py ; 程序启动命令
directory=/home/vibasic/bin/ ;程序运行的目录
autostart=true ; 在supervisord启动的时候也自动启动
startsecs=5 ; 启动5秒后没有异常退出,就表示进程正常启动了,默认为1秒
autorestart=true ; 程序退出后自动重启,可选值:[unexpected,true,false],默认为unexpected,表示进程意外杀死后才重启
startretries=3 ; 启动失败自动重试次数,默认是3
user=vibasic ; 用哪个用户启动进程,默认是root
stdout_logfile_maxbytes=20MB ; stdout 日志文件大小,默认50MB
stdout_logfile_backups = 20 ; stdout 日志文件备份数,默认是10
; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)
stdout_logfile=/home/vibasic/supervisor/logs/test.out
stderr_logfile_maxbytes=50MB ; stderr 日志文件大小,默认50MB
stderr_logfile_backups=10 ; stderr 日志文件备份数,默认是10
stderr_logfile=/home/vibasic/supervisor/logs/test.err
;包含其它配置文件
[include]
files =/etc/supervisor.d/*.ini ;可以指定一个或多个以.ini结束的配置文件,路径可以换,后缀名也可以定制
启动:
你的路径/supervisord -c 你的路径/supervisord.conf
查看:
ps aux | grep supervisord
你的路径/supervisorctl status 查看所有的管理的进程的状态
test_vibasic RUNNING pid 1337, uptime 0:46:44
你的路径/supervisorctl stop test_vibasic 停止你的程序
test_vibasic: stopped
你的路径/supervisorctl start test_vibasic ;启动你的程序
你的路径/supervisorctl restart test_vibaisc ; 重启你的程序
你的路径/supervisorctl update ; 配置文件修改后可以使用该命令加载新的配置
...
其他可以参考官网。
测试:
ps aux | grep test_vibasic
kill -9 test_vibasic (当前你要运行的程序)
4、注意事项
(1)不建议使用配置默认的log地址路径,如/tmp路径
(2)不建议使用配置默认的sock 通信路径,如/tmp;
(3)不要使用kill -9的方式杀死supervisord进程;
(4)一般大公司用不到,OP都帮监控好了,但如果自运维的机器,通过此方法可以提升程序提供的服务稳定性。并辅以日志监控,做到相应的短信和邮件报警。
5、参考文献
(2)配置说明参考:http://supervisord.org/configuration.html#program-x-section-example