项目中经常会已守护进程执行一些脚本文件或者是监控某些服务的健康状态需要crontab定时去检查比较麻烦,搜索发现可以用Supervisor来管理这些进程,这里做一个使用记录。
安装:这里只展示一种方法,应该还有其他方法,本人没有测试不做展示了。
pip install supervisor //安装
echo_supervisord_conf > /etc/supervisord.conf //生成配置文件路径可以自定义。
配置文件里参数很多这里也不做详细记录了,不设置也不会影响程序运行,在配置文件结尾我们需要放开一段注释来引入我们自定义的配置文件,我把每一个需要监控的进程创建了一个配置文件放在了/etc/supervisord/。
[include]
files = /etc/supervisord/*.conf
接下贴一下/etc/supervisord下的详细配置文件,这些参数基本够用了,详细的参数在主配置文件里都有,可以去查看。
[program:beanstalk] ; :后边是给要监听某个服务起了个名字
command=/usr/local/bin/beanstalkd -b /data/server/binlog/ -l 0.0.0.0 ;这是我们启动的命令,
stdout_logfile=/opt/run.log ;日志文件
autostart=true ;如果设置为true,当supervisord启动的时候,进程会自动启动
autorestart=true ;设置为随 supervisord 重启而重启,值可以是false、true
startsecs=60 ;程序启动后等待多长时间后才认为程序启动成功,默认是10秒
stopasgroup=true
killasgroup=true
startretries=1
redirect_stderr=true
接下来就是启动supervisor了。
supervisord -c /etc/supervisord.conf
管理我们的进程就需要另一个命令了。
supervisorctl status:查看所有进程的状态
supervisorctl stop beanstalk:停止beanstalk
supervisorctl start es:启动beanstalk
supervisorctl restart beanstalk: 重启beanstalk
supervisorctl update :配置文件修改后可以使用该命令加载新的配置
supervisorctl reload: 重新启动配置中的所有程序
贴张图我管理了两个进程。
image.png
如果需要新增配置文件或者有改动直接运行
supervisorctl update
更新就可以了。
对了还有一个比较人性的功能就是可以web页面管理,在配置文件里开启。
[inet_http_server] ; inet (TCP) server disabled by default
port=*:9502 ; ip_address:port specifier, *:port for all iface
username=user ; default is no username (open server)
password=123 ; default is no password (open server)
image.png
可以停止,重启进程很方便。
在supervisor安装启动过程中还是遇到了一些问题,比如启动报错,如果在启动或重新加载配置文件有报错大家自行解决下吧,因为我坚信自己解决的问题才会记忆深刻,提高自己的水平。
网友评论