ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

supervisor安装、配置及分析

2021-03-10 20:32:33  阅读:273  来源: 互联网

标签:10 supervisor supervisord 配置 stderr false logfile 安装


目标环境为 :centos7

1. 安装

pip install supervisor

 

ln -sv /usr/local/python3.7/bin/supervisorctl /usr/bin/supervisorctl

ln -sv /usr/local/python3.7/bin/supervisord /usr/bin/supervisord

 

2. 使用

配置文件

supervisord.conf

; Sample supervisor config file.
;
; For more information on the config file, please see:
; http://supervisord.org/configuration.html
;
; Notes:
;  - Shell expansion ("~" or "$HOME") is not supported.  Environment
;    variables can be expanded using this syntax: "%(ENV_HOME)s".
;  - Comments must have a leading space: "a=b ;comment" not "a=b;comment".


[unix_http_server]
file=/var/run/supervisor.sock   ; (the path to the socket file)

[inet_http_server]
port = 127.0.0.1:9001
;username = user
;password = 123


[supervisord]
logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log)
logfile_maxbytes=5MB        ; (max main logfile bytes b4 rotation;default 50MB)
logfile_backups=2            ; (num of main logfile rotation backups;default 10)
loglevel=info                ; (log level;default info; others: debug,warn,trace)
pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
nodaemon=true               ; (start in foreground if true;default false)
minfds=1024                  ; (min. avail startup file descriptors;default 1024)
minprocs=200                 ; (min. avail process descriptors;default 200)



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

[supervisorctl]
serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL  for a unix socket


[include]
files = httpd.conf

httpd.conf

[program:httpd]
command=nginx -g "daemon off;" ; the program (relative uses PATH, can take args)
numprocs=1                     ; number of processes copies to start (def 1)
autostart=true                 ; start at supervisord start (default: true)
startsecs=1                    ; # of secs prog must stay up to be running (def. 1)
autorestart=true               ; when to restart if exited after running (def: unexpected)
stdout_logfile=/var/log/supervisor/httpd.log      ; stdout log path, NONE for none; default AUTO
stdout_logfile_maxbytes=5MB    ; max # logfile bytes b4 rotation (default 50MB)
stdout_logfile_backups=2       ; # of stdout logfile backups (default 10)
stderr_logfile=/var/log/supervisor/httpd_err.log   ; stderr log path, NONE for none; default AUTO
stderr_logfile_maxbytes=5MB    ; max # logfile bytes b4 rotation (default 50MB)
stderr_logfile_backups=2       ; # of stderr logfile backups (default 10)

将上面两个脚本放到同一个目录,然后执行下面的命令

mkdir /var/log/supervisor

supervisord -c supervisord.conf

结果如下 :

通过supervisorctl status能看到httpd进程已经被supervisor接管并正常启动了。

 

3. 配置解释

Supervisor的使用主要在于配置

http://supervisord.org/configuration.html 这是官网多配置的解释了示例。

 

3.1 unix_http_server

侦听HTTP / XML-RPC请求的UNIX域套接字的路径。Supervisorctl使用XML-RPC通过该端口与Supervisor通信。此选项可以包含值%(here)s,该值将扩展到找到监管配置文件的目录。

[unix_http_server]

file = /tmp/supervisor.sock ;UNIX域套接字的路径,一般要改下路径

chmod = 0777 ;UNIX权限模式, 可注释

chown= nobody:nogroup ;将套接字文件的用户和组更改为此值, 可注释

username = user ;对此HTTP服务器进行认证的用户名, 可注释

password = 123 ;对此HTTP服务器进行认证的密码, 可注释

 

3.2 inet_http_server

侦听HTTP / XML-RPC请求的TCP host:port值或(例如127.0.0.1:9001)。 supervisorctl将使用XML-RPC通过此端口与supervisor通信。

[inet_http_server]

port = 127.0.0.1:9001 ;监听端口

username = user ;认证用户名 可注释

password = 123 ;认证密码 可注释

 

3.3 supervisorctl

该配置文件可能包含 supervisorctl交互式shell程序的设置。

[supervisorctl]

serverurl = unix:///tmp/supervisor.sock ;于访问受管服务器的UR

username = chris ;认证用户名 可注释

password = 123 ;认证密码 可注释

prompt = mysupervisor ;用户提示的字符串 可注释

 

​​​​​​​3.4 supervisord

supervisord全局设置。

[supervisord]

logfile = /tmp/supervisord.log ;日志文件保存路径

logfile_maxbytes = 50MB ;日志文件的最大大小

logfile_backups=10 ;最多多少个日志文件supervisord.log1 2 3 ...

loglevel = info ;日志级别critical/error/warn/info/debug/trace/blather

pidfile = /tmp/supervisord.pid ;进程pid文件

nodaemon = false ;false为后台运行

minfds = 1024 ;可用的最小文件描述符数目

minprocs = 200 ;可用的最小数量的过程描述符

umask = 022 ;supervisord进程的umask

user = chrism ;在执行任何有意义的处理之前,将用户切换到这个UNIX用户帐户

identifier = supervisor ;此管理程序进程的标识符字符串,由RPC接口使用。

directory = /tmp ;当supervisord守护进程时,切换到该目录

nocleanup = true ;防止 在启动时清除任何现有的AUTO子日志文

childlogdir = /tmp ;用于AUTO子日志文件的目录

strip_ansi = false ;从子日志文件中删除所有ANSI转义序列

environment = KEY1="value1",KEY2="value2" ;键/值对的列表环境变量,子进程全部继承。

 

​​​​​​​3.5 program:x

Supervisor监控的子进程

[program:httpd] ;httpd为supervisor显示进程名名字

command=nginx -g "daemon off;" ;进程运行命令,只能前台运行的

process_name=%(program_name) ;一个Python字符串表达式,默认注释

numprocs=1 ;启动的进程数

directory=/tmp ;进程运行后切换的目录

umask=022 ;进程的umask

priority=999 ;优先级

autostart=true ;在supervisor启动时候自动启动

autorestart=unexpected ;如果异常退出,则重启

startsecs=10 ;进程必须running 10秒才算成功

startretries=3 ;进程启动失败的重试次数

exitcodes=0 ;进程退出时候的预期code码

stopsignal=TERM ;终止信号

stopwaitsecs=10 ;向程序发送停止信号后,等待操作系统返回SIGCHLD给主进程的秒

stopasgroup=false ;如果为true,将导致管理器向整个进程组发送停止信号

killasgroup=false ;如果为true,把它发送给它的整个进程组

user=chrism ;用该用户帐户作为运行程序的帐户

redirect_stderr=false

stdout_logfile=/a/path ;日志文件

stdout_logfile_maxbytes=1MB ;日志文件的大小

stdout_logfile_backups=10 ;最多10个日志文件滚动

stdout_capture_maxbytes=1MB

stdout_events_enabled=false

stderr_logfile=/a/path ;错误日志文件

stderr_logfile_maxbytes=1MB ;日志文件的大小

stderr_logfile_backups=10;最多10个日志文件滚动

stderr_capture_maxbytes=1MB

stderr_events_enabled=false

environment=A="1",B="2" ;进程的环境变量

serverurl=AUTO

 

​​​​​​​3.6 nclude

用于包含其他的conf文件,一般一个进程对应一个conf文件,然后用include来包含

[include]

files = /an/absolute/filename.conf /an/absolute/*.conf foo.conf config??.conf

 

​​​​​​​3.7 rpcinterface:x

[rpcinterface:supervisor]部分必须保留在配置中,以便标准设置的supervisor能够正常工作。如果你不想让主管做任何它没有开箱即用的事情。

[rpcinterface:supervisor]

supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

 

​​​​​​​3.8 ventlistener:x

管理器允许在配置文件中定义专用的同构流程组(“事件侦听器池”)。这些池包含用于接收和响应来自管理器事件系统的事件通知的进程

[eventlistener:theeventlistenername]

command=/bin/eventlistener

process_name=%(program_name)s_%(process_num)02d

numprocs=5

events=PROCESS_STATE

buffer_size=10 ;事件队列缓冲区大小

directory=/tmp ;

umask=022 ;

priority=-1 ;优先级

autostart=true  ;自动运行

autorestart=unexpected ;异常退出重启

startsecs=1 ;运行超过1秒才算成功

startretries=3 ;启动失败重试次数

exitcodes=0 ;正常退出的code码

stopsignal=QUIT ;退出信号

stopwaitsecs=10 ;退出时间

stopasgroup=false

killasgroup=false

user=chrism

redirect_stderr=false

stdout_logfile=/a/path

stdout_logfile_maxbytes=1MB

stdout_logfile_backups=10

stdout_events_enabled=false

stderr_logfile=/a/path

stderr_logfile_maxbytes=1MB

stderr_logfile_backups=10

stderr_events_enabled=false

environment=A="1",B="2"

serverurl=AUTO

 

​​​​​​​3.9 fcgi-program:x


[fcgi-program:fcgiprogramname]

command=/usr/bin/example.fcgi

socket=unix:///var/run/supervisor/%(program_name)s.sock

socket_owner=chrism

socket_mode=0700

process_name=%(program_name)s_%(process_num)02d

numprocs=5

directory=/tmp

umask=022

priority=999

autostart=true

autorestart=unexpected

startsecs=1

startretries=3

exitcodes=0

stopsignal=QUIT

stopasgroup=false

killasgroup=false

stopwaitsecs=10

user=chrism

redirect_stderr=true

stdout_logfile=/a/path

stdout_logfile_maxbytes=1MB

stdout_logfile_backups=10

stdout_events_enabled=false

stderr_logfile=/a/path

stderr_logfile_maxbytes=1MB

stderr_logfile_backups=10

stderr_events_enabled=false

environment=A="1",B="2"

serverurl=AUTO

 

​​​​​​​3.10 group:x

将多个子进程归并到同一个组,从而可以进行统一控制。

[group:foo]

programs=bar,baz

priority=999

 

4. 避坑

  • Supervisor 不能接管后台运行的进程,只能接管前台运行的进程

例如

nginx -g "daemon off;" 是一条前台运行的命令,能够正常接管

如果command=nginx, 实际上nginx已经运行了,但是会supervisor会提示报错,一直再重启。

 

标签:10,supervisor,supervisord,配置,stderr,false,logfile,安装
来源: https://blog.csdn.net/dengshengli123/article/details/114645305

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有