supervisor进程管理程序

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

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

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

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

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

[supervisord]
logfile = /etc/supervisor/log/supervisord.log
logfile_maxbytes = 50MB
logfile_backups=10
loglevel = info
pidfile = /etc/supervisor/run/supervisord.pid
nodaemon = false
minfds = 1024
minprocs = 200
umask = 022
user = root
identifier = supervisor
directory = /etc/supervisor/
nocleanup = true
childlogdir = /etc/supervisor/log
strip_ansi = false

[supervisorctl]
serverurl = unix:///etc/supervisor/run/supervisord.sock
#serverurl = http://127.0.0.1:9001
prompt = supervisor
chmod = 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.源码编译安装nginx

测试手动可以正常启动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=nginx
directory=/usr/local/nginx
autostart=true
autorestart=true
startsecs=10
startretries=2
exitcodes=0,2
stopsignal=TERM
stopwaitsecs=10
user=root
redirect_stderr=true
stdout_logfile=NONE
redirect_stdout=true
stderr_logfile=NONE

3.启动服务,正常
[[email protected] conf.d]# supervisorctl update
[[email protected] conf.d]# supervisorctl status

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

1.安装java

2.安装tomcat
.

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 run
process_name=tomcat
numprocs=1
directory=/usr/local/apache-tomcat-8.5.53
autostart=true
autorestart=true
startsecs=10
startretries=2
exitcodes=0,2
stopsignal=TERM
stopwaitsecs=10
user=root
redirect_stderr=true
stdout_logfile=NONE
redirect_stdout=true
stderr_logfile=NONE
environment=JAVA_HOME="/usr/jdk/",JAVA_BIN="/usr/jdk/bin"

4.启动服务,正常
[[email protected] conf.d]# supervisorctl update
[[email protected] conf.d]# supervisorctl status

web界面

五.命令简介
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

原文地址:https://blog.51cto.com/anfishr/2483177

时间: 2024-10-15 09:17:38

supervisor进程管理程序的相关文章

详解Supervisor进程守护监控

Supervisor在百度百科上给的定义是超级用户,监管员.Supervisor是一个进程管理工具,当进程中断的时候Supervisor能自动重新启动它.可以运行在各种类unix的机器上,supervisor就是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启. v介绍Supervisor - supervisord 运行 Supervisor 时会启动一个进程 supervisord,它负责启动所管理的进程,并将所管

Supervisor 进程管理工具

Supervisor  进程管理工具时刻检测进程存活状态:可用来启动.重启.关闭进程: Supervisord(supervisor是一个C/S模型的程序,这是server端,对应的有client端:supervisorctl)和应用程序(即我们要管理的程序). 一.下载: https://pypi.python.org/packages/80/37/964c0d53cbd328796b1aeb7abea4c0f7b0e8c7197ea9b0b9967b7d004def/supervisor-3

docker supervisor进程管理

博主QQ:819594300 博客地址:http://zpf666.blog.51cto.com/ 有什么疑问的朋友可以联系博主,博主会帮你们解答,谢谢支持! 一.使用 Supervisor 来管理进程 Docker 容器在启动的时候开启单个进程,比如,一个 ssh 或者 apache 的 daemon 服务.但我们经常需要在一个机器上开启多个服务,这可以有很多方法,最简单的就是把多个启动命令放到一个启动脚本里面,启动的时候直接启动这个脚本. 例如:docker run  –d  镜像  /ru

SUPERVISOR进程管理器配置指南

SUPERVISOR进程管理器配置指南 1. supervisor简介 1.1. 官网 http://supervisord.org/ 1.2. 介绍 Supervisor是一个进程控制系统. 它是一个C/S系统(注意: 其提供WEB接口给用户查询和控制), 它允许用户去监控和控制在类UNIX系统的进程. 它的目标与launchd, daemontools和runit有些相似, 但是与它们不一样的是, 它不是作为init(进程号pid是1)运行. 它是被用来控制进程, 并且它在启动的时候和一般程

supervisor进程异常挂掉

不久前,线上有一批机器晚上的时候supervisor进程异常退出,早上业务部门反映了这个问题,同一类机器18台中有15台supervisor挂了,于是启动supervisor及其纳管应用,并开始定位根因: 查看发现这15台机器/var/log/system.log日志在今早06:28分有更新,06:28有如下异常信息: Supervisor WARN received SIGTERM indicating exit request 经Google,定位到15台机器/var/log/apt/his

.Net Core部署在Linux服务器:Nginx反向代理+Supervisor进程守护

前言:.Net Core 程序(网站)可以部署在windows IIS ,也可以部署在Linux系统(更加推荐) 本文部署,基于.net core 2.1,服务器CentOS 7, 需要安装的服务有2个:Nginx,SuperVisor(进程守护) 命令预览: Linux: 重启:reboot Nginx: 强杀: killall -9 nginx 测试配置是否正确: nginx -t 启动: nginx SuperVisor:停止:supervisorctl shutdown 启动: supe

supervisor——进程管理工具

Supervisor (http://supervisord.org) 是一个用 Python 写的进程管理工具,可以很方便的用来启动.重启.关闭进程(不仅仅是 Python 进程).除了对单个进程的控制,还可以同时启动.关闭多个进程,比如很不幸的服务器出问题导致所有应用程序都被杀死,此时可以用 supervisor 同时启动所有应用程序而不是一个一个地敲命令启动. 1.安装 Supervisor 可以运行在 Linux.Mac OS X 上.如前所述,supervisor 是 Python 编

supervisor进程管理工具

先说说supervisor是干什么的吧? supervisor这东西,其实就是用来管理进程的.咱们为什么要用supervisor呢?因为,相对于我们linux传统的进程管理方式来说, 它有很多的优势,要不然咱们也不会闲着没事去用supervisor了. OK,下面来看看supervisor有哪些好处吧. 简单 为啥简单呢?因为咱们通常管理linux进程的时候,一般来说都需要自己编写一个能够实现进程start/stop/restart/reload功能的脚本, 然后丢到/etc/init.d/下面

supervisor进程管理

install :  apt-get install supervisor crete  a  xxxx.conf  file at   /etc/supervisor/conf.d the content like this: ==== [program:app_name]command= python odoo.py -c local.confdirectory=/home/jon/workspace/odoo9user=jonautorestart=true ===== sudo supe