频道栏目
首页 > 资讯 > 其他 > 正文

supervisor进程管理程序-运维-51CTO博客

20-05-14        来源:[db:作者]  
收藏   我要投稿

一.supervisor简介Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。它是通过fork/exec的方式把这些被管理的进程当作supervisor的子进程来启动,这样只要在supervisor的配置文件中,把要管理的进程的可执行文件的路径写进去即可。也实现当子进程挂掉的时候,父进程可以准确获取子进程挂掉的信息的,可以选择是否自己启动和报警。supervisor还提供了一个功能,可以为supervisord或者每个子进程,设置一个非root的user,这个user就可以管理它对应的进程。

注意:supervisor在docker里管理多个进程十分方便

二.安装1.通过python pip安装yum install python-setuptools -yeasy_install pippip install supervisor

2.创建配置文件夹mkdir /etc/supervisor 主配置文件夹mkdir /etc/supervisor/conf.d 子进程文件夹mkdir /etc/supervisor/log 主进程日志mkdir /etc/supervisor/run 主进程socket

3.创建supervisor 主配置文件vim /etc/supervisor/supervisord.conf

[supervisord]logfile = /etc/supervisor/log/supervisord.loglogfile_maxbytes = 50MBlogfile_backups=10loglevel = infopidfile = /etc/supervisor/run/supervisord.pidnodaemon = falseminfds = 1024minprocs = 200umask = 022user = rootidentifier = supervisordirectory = /etc/supervisor/nocleanup = truechildlogdir = /etc/supervisor/logstrip_ansi = false

[supervisorctl]serverurl = unix:///etc/supervisor/run/supervisord.sock#serverurl = http://127.0.0.1:9001prompt = supervisorchmod = 0777

[unix_http_server]file=/etc/supervisor/run/supervisord.sock

[inet_http_server]port=*:9001

[rpcinterface:supervisor]supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[include]files=/etc/supervisor/conf.d/*.conf

4.启动服务supervisord -c /etc/supervisor/supervisord.conf

三.创建nginx服务,使用supervisor监控服务进程1.源码编译安装nginxsupervisor进程管理程序

测试手动可以正常启动nginx

2.在/etc/supervisor/conf.d 创建nginx服务进程配置文件vim /etc/supervisor/conf.d/nginx.conf[program:nginx]command=/usr/local/nginx/sbin/nginx -g 'daemon off;'process_name=nginxdirectory=/usr/local/nginxautostart=trueautorestart=truestartsecs=10startretries=2exitcodes=0,2stopsignal=TERMstopwaitsecs=10user=rootredirect_stderr=truestdout_logfile=NONEredirect_stdout=truestderr_logfile=NONE

3.启动服务,正常[root@server2 conf.d]# supervisorctl update[root@server2 conf.d]# supervisorctl statussupervisor进程管理程序

supervisor进程管理程序

四.创建tomcat服务,使用supervisor监控服务进程

1.安装javasupervisor进程管理程序supervisor进程管理程序

2.安装tomcat.supervisor进程管理程序

3.在/etc/supervisor/conf.d 创建tomcat服务进程配置文件vim /etc/supervisor/conf.d/tomcat.conf[program:tomcat]command=/usr/local/apache-tomcat-8.5.53/bin/catalina.sh runprocess_name=tomcatnumprocs=1directory=/usr/local/apache-tomcat-8.5.53autostart=trueautorestart=truestartsecs=10startretries=2exitcodes=0,2stopsignal=TERMstopwaitsecs=10user=rootredirect_stderr=truestdout_logfile=NONEredirect_stdout=truestderr_logfile=NONEenvironment=JAVA_HOME="/usr/jdk/",JAVA_BIN="/usr/jdk/bin"

4.启动服务,正常[root@server2 conf.d]# supervisorctl update[root@server2 conf.d]# supervisorctl statussupervisor进程管理程序

web界面supervisor进程管理程序

五.命令简介supervisorctl status //查看所有进程的状态supervisorctl stop nginx //停止nginx supervisorctl start nginx //启动nginx supervisorctl restart nginx //重启nginx supervisorctl update //配置文件修改后使用该命令加载新的配置supervisorctl reload //重新启动配置中的所有程序

六.program配置讲解

command:启动程序使用的命令,可以是绝对路径或者相对路径 process_name:一个python字符串表达式,用来表示supervisor进程启动的这个的名称,默认值是%(program_name)s numprocs:Supervisor启动这个程序的多个实例,如果numprocs>1,则process_name的表达式必须包含%(process_num)s,默认是1 numprocs_start:一个int偏移值,当启动实例的时候用来计算numprocs的值 priority:权重,可以控制程序启动和关闭时的顺序,权重越低:越早启动,越晚关闭。默认值是999 autostart:如果设置为true,当supervisord启动的时候,进程会自动重启。 autorestart:值可以是false、true、unexpected。false:进程不会自动重启,unexpected:当程序退出时的退出码不是exitcodes中定义的时,进程会重启,true:进程会无条件重启当退出的时候。 startsecs:程序启动后等待多长时间后才认为程序启动成功 startretries:supervisord尝试启动一个程序时尝试的次数。默认是3 exitcodes:一个预期的退出返回码,默认是0,2。 stopsignal:当收到stop请求的时候,发送信号给程序,默认是TERM信号,也可以是 HUP, INT, QUIT, KILL, USR1, or USR2。 stopwaitsecs:在操作系统给supervisord发送SIGCHILD信号时等待的时间 stopasgroup:如果设置为true,则会使supervisor发送停止信号到整个进程组 killasgroup:如果设置为true,则在给程序发送SIGKILL信号的时候,会发送到整个进程组,它的子进程也会受到影响。 user:如果supervisord以root运行,则会使用这个设置用户启动子程序 redirect_stderr:如果设置为true,进程则会把标准错误输出到supervisord后台的标准输出文件描述符。 stdout_logfile:把进程的标准输出写入文件中,如果stdout_logfile没有设置或者设置为AUTO,则supervisor会自动选择一个文件位置。 stdout_logfile_maxbytes:标准输出log文件达到多少后自动进行轮转,单位是KB、MB、GB。如果设置为0则表示不限制日志文件大小 stdout_logfile_backups:标准输出日志轮转备份的数量,默认是10,如果设置为0,则不备份 stdout_capture_maxbytes:当进程处于stderr capture mode模式的时候,写入FIFO队列的最大bytes值,单位可以是KB、MB、GB stdout_events_enabled:如果设置为true,当进程在写它的stderr到文件描述符的时候,PROCESS_LOG_STDERR事件会被触发 stderr_logfile:把进程的错误日志输出一个文件中,除非redirect_stderr参数被设置为true stderr_logfile_maxbytes:错误log文件达到多少后自动进行轮转,单位是KB、MB、GB。如果设置为0则表示不限制日志文件大小 stderr_logfile_backups:错误日志轮转备份的数量,默认是10,如果设置为0,则不备份 stderr_capture_maxbytes:当进程处于stderr capture mode模式的时候,写入FIFO队列的最大bytes值,单位可以是KB、MB、GB stderr_events_enabled:如果设置为true,当进程在写它的stderr到文件描述符的时候,PROCESS_LOG_STDERR事件会被触发 environment:一个k/v对的list列表 directory:supervisord在生成子进程的时候会切换到该目录 umask:设置进程的umask serverurl:是否允许子进程和内部的HTTP服务通讯,如果设置为AUTO,supervisor会自动的构造一个url
相关TAG标签
上一篇:mariadb服务器断电重启之后Missing MLOG_CHECKPOINT的解决办法-坚持到所有人都放弃!!!-51CTO博客
下一篇:四、创建、删除、复制、移动目录-12926780-51CTO博客
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站