进程管理工科具supervisor教程及报告急察方配置

2019-10-11 05:45 来源:未知

四、安装

安装的不二等秘书籍有许三种,那么些是python开荒的,所以python意况必得有本身用mac演示,其余操作系统类似,固然有疑点,能够私信给笔者,笔者为你解答

brew install supervisor // 或 pip install supervisor

看一下安装了什么样文件

 youdi ~ brew list supervisor /usr/local/Cellar/supervisor/3.3.5/.bottle/etc/supervisord.ini // 配置文件/usr/local/Cellar/supervisor/3.3.5/bin/echo_supervisord_conf // 打印配置文件/usr/local/Cellar/supervisor/3.3.5/bin/pidproxy/usr/local/Cellar/supervisor/3.3.5/bin/supervisorctl // client工具/usr/local/Cellar/supervisor/3.3.5/bin/supervisord //后台daemon程序/usr/local/Cellar/supervisor/3.3.5/homebrew.mxcl.supervisor.plist/usr/local/Cellar/supervisor/3.3.5/libexec/bin/ /usr/local/Cellar/supervisor/3.3.5/libexec/lib/ (624 files)/usr/local/Cellar/supervisor/3.3.5/libexec/.Python

申明:服务的陈设文件/usr/local/Cellar/supervisor/3.3.5/.bottle/etc/supervisord.ini重在的也不用动当中二个加载对应配置的配置

[include]files = /usr/local/etc/supervisor.d/*.ini

代表只对.ini生效, conf的也行,只是贰个文本后缀,在类unix系统上,后缀不在乎。作者在ubuntu上正是conf配置的。具体单个的进度处理正是在 /usr/local/etc/supervisor.d/*.ini在那间写配置的

类Unix 操作系统进程监察和控制调节工具 Supervisor

Supervisor 是三个顾客端服务器系统,允许客户监督和决定类 Unix 操作系统上的进度数。

官网

安装

  1. easy_install supervisor
  2. setuptools (latest) from .
    meld3 (latest) from .
    elementtree (latest) from .

创设布局文件
echo_supervisord_conf > /etc/supervisord.conf
指虞升卿顿文件
supervisord -c supervisord.conf

搜索配置文件路经
-c 内定布置文件
无钦定布署文件时,查找顺序:
1 $CWD/supervisord.conf
2 $CWD/etc/supervisord.conf
3 /etc/supervisord.conf

布局文件表达

HTTP/XML-RPC 相关布置
[unix_http_server]
file = /tmp/supervisor.sock
chmod = 0777
chown= nobody:nogroup
username = user
password = 123

Web管理分界面配置
[inet_http_server]
port = 127.0.0.1:9001
username = user
password = 123

[supervisorctl]
serverurl = unix:///tmp/supervisor.sock 和[unix_http_server]匹配
username = chris
password = 123
prompt = mysupervisor

日志 遭遇等铺排
[supervisord]
logfile = /tmp/supervisord.log
logfile_maxbytes = 50MB
logfile_backups=10
loglevel = info
pidfile = /tmp/supervisord.pid
nodaemon = false
minfds = 1024
minprocs = 200
umask = 022
user = chrism
identifier = supervisor
directory = /tmp
nocleanup = true
childlogdir = /tmp
strip_ansi = false
environment = KEY1="value1",KEY2="value2"

铺排单个进度
[program:theprogramname]
command=/bin/cat ; the program (relative uses PATH, can take args)
process_name=%(program_name)s ; process_name expr (default %(program_name)s)
numprocs=1 ; number of processes copies to start (def 1)
directory=/tmp ; directory to cwd to before exec (def no cwd)
umask=022 ; umask for process (default None)
priority=999 ; the relative start priority (default 999)
autostart=true ; start at supervisord start (default: true)
autorestart=unexpected ; whether/when to restart (default: unexpected)
startsecs=1 ; number of secs prog must stay running (def. 1)
startretries=3 ; max # of serial start failures (default 3)
exitcodes=0,2 ; 'expected' exit codes for process (default 0,2)
stopsignal=QUIT ; signal used to kill process (default TERM)
stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)
stopasgroup=false ; send stop signal to the UNIX process group (default false)
killasgroup=false ; SIGKILL the UNIX process group (def false)
user=chrism ; setuid to this UNIX account to run the program
redirect_stderr=true ; redirect proc stderr to stdout (default false)
stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO
stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
stdout_logfile_backups=10 ; # of stdout logfile backups (default 10)
stdout_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
stdout_events_enabled=false ; emit events on stdout writes (default false)
stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO
stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
stderr_logfile_backups=10 ; # of stderr logfile backups (default 10)
stderr_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
stderr_events_enabled=false ; emit events on stderr writes (default false)
environment=A="1",B="2" ; process environment additions (def no adds)
serverurl=AUTO ; override serverurl computation (childutils)

其他配置还应该有
[fcgi-program:x]

[eventlistener:x]

[rpcinterface:x]

包罗钦赐的安排文件
[include]
files = /an/absolute/filename.conf /an/absolute/*.conf foo.conf config??.conf

本文恒久更新链接地址:

操作系统进度监察和控制控制工具 Supervisor Supervisor 是五个顾客端服务器系统,允许客户监督和调控类 Unix 操作系统上的进程数。 官方网站 htt...

六、告警

报告急察方是为了局部新鲜情状企图的,通常程序挂了, supersor会自动挂起,这里是愿意会报警。 通过邮件、钉钉或微信等。告知程序重启了只怕直接从未运转起来等等新闻。告急必要捕获supervisor的event事件。然后发邮件。 小编就不间接叁次开拓了, 我们应用 superlance.

superlance正是依照supervisor的风云机制落到实处的一连串命令行的工具集,它完结了成都百货上千supervisor本人未有落到实处的实用的进度监察和控制和管理的特征,包蕴内部存款和储蓄器监察和控制,http接口监察和控制,邮件和短信文告机制等。同样的,superlance自身也是利用python编写的

总结:

supervisor使用很简短, 也很有益于。学习的难度异常的低。别的,代码架构以至规划相当多足以参见的点, 后一次会照望一篇有关supervisor源码的学习。

五、使用

  1. 第一运营daemon进度
brew services start supervisor==> Successfully started `supervisor` (label: homebrew.mxcl.supervisor)
  1. 能够使用client工具进行查看
supervisorctl
  1. 配置要求管住的历程

看一下安顿首先是daemon的布置/usr/local/etc/supervisord.ini

; 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: "%s".; - Quotes around values are not supported, except in the case of; the environment= options as shown below.; - Comments must have a leading space: "a=b ;comment" not "a=b;comment".; - Command will be truncated if it looks like a config file comment, e.g.; "command=bash -c 'foo ; bar'" will truncate to "command=bash -c 'foo ".[unix_http_server]file=/usr/local/var/run/supervisor.sock ; the path to the socket file;chmod=0700 ; socket file mode (default 0700);chown=nobody:nogroup ; socket file uid:gid owner;username=user ; default is no username (open server);password=123 ; default is no password (open server);[inet_http_server] ; inet  server disabled by default;port=127.0.0.1:9001 ; ip_address:port specifier, *:port for all iface;username=user ; default is no username (open server);password=123 ; default is no password (open server)[supervisord]logfile=/usr/local/var/log/supervisord.log ; main log file; default $CWD/supervisord.loglogfile_maxbytes=50MB ; max main logfile bytes b4 rotation; default 50MBlogfile_backups=10 ; # of main logfile backups; 0 means none, default 10loglevel=info ; log level; default info; others: debug,warn,tracepidfile=/usr/local/var/run/supervisord.pid ; supervisord pidfile; default supervisord.pidnodaemon=false ; start in foreground if true; default falseminfds=1024 ; min. avail startup file descriptors; default 1024minprocs=200 ; min. avail process descriptors;default 200;umask=022 ; process file creation umask; default 022;user=chrism ; default is current user, required if root;identifier=supervisor ; supervisord identifier, default is 'supervisor';directory=/tmp ; default is not to cd during start;nocleanup=true ; don't clean up tempfiles at start; default false;childlogdir=/tmp ; 'AUTO' child log dir, default $TEMP;environment=KEY="value" ; key value pairs to add to environment;strip_ansi=false ; strip ansi escape codes in logs; def. false; The rpcinterface:supervisor section must remain in the config file for; RPC (supervisorctl/web interface) to work. Additional interfaces may be; added by defining them in separate [rpcinterface:x] sections.[rpcinterface:supervisor]supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface; The supervisorctl section configures how supervisorctl will connect to; supervisord. configure it match the settings in either the unix_http_server; or inet_http_server section.[supervisorctl]serverurl=unix:///usr/local/var/run/supervisor.sock ; use a unix:// URL for a unix socket;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket;username=chris ; should be same as in [*_http_server] if set;password=123 ; should be same as in [*_http_server] if set;prompt=mysupervisor ; cmd line prompt (default "supervisor");history_file=~/.sc_history ; use readline history if available; The sample program section below shows all possible program subsection values.; Create one or more 'real' program: sections to be able to control them under; supervisor.;[program:theprogramname];command=/bin/cat ; the program (relative uses PATH, can take args);process_name=%(program_name)s ; process_name expr (default %(program_name)s);numprocs=1 ; number of processes copies to start ;directory=/tmp ; directory to cwd to before exec (def no cwd);umask=022 ; umask for process (default None);priority=999 ; the relative start priority (default 999);autostart=true ; start at supervisord start (default: true);startsecs=1 ; # of secs prog must stay up to be running ;startretries=3 ; max # of serial start failures when starting (default 3);autorestart=unexpected ; when to restart if exited after running (def: unexpected);exitcodes=0,2 ; 'expected' exit codes used with autorestart (default 0,2);stopsignal=QUIT ; signal used to kill process (default TERM);stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10);stopasgroup=false ; send stop signal to the UNIX process group (default false);killasgroup=false ; SIGKILL the UNIX process group (def false);user=chrism ; setuid to this UNIX account to run the program;redirect_stderr=true ; redirect proc stderr to stdout (default false);stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO;stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB);stdout_logfile_backups=10 ; # of stdout logfile backups (0 means none, default 10);stdout_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0);stdout_events_enabled=false ; emit events on stdout writes (default false);stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO;stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB);stderr_logfile_backups=10 ; # of stderr logfile backups (0 means none, default 10);stderr_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0);stderr_events_enabled=false ; emit events on stderr writes (default false);environment=A="1",B="2" ; process environment additions (def no adds);serverurl=AUTO ; override serverurl computation (childutils); The sample eventlistener section below shows all possible eventlistener; subsection values. Create one or more 'real' eventlistener: sections to be; able to handle event notifications sent by supervisord.;[eventlistener:theeventlistenername];command=/bin/eventlistener ; the program (relative uses PATH, can take args);process_name=%(program_name)s ; process_name expr (default %(program_name)s);numprocs=1 ; number of processes copies to start ;events=EVENT ; event notif. types to subscribe to ;buffer_size=10 ; event buffer queue size (default 10);directory=/tmp ; directory to cwd to before exec (def no cwd);umask=022 ; umask for process (default None);priority=-1 ; the relative start priority (default -1);autostart=true ; start at supervisord start (default: true);startsecs=1 ; # of secs prog must stay up to be running ;startretries=3 ; max # of serial start failures when starting (default 3);autorestart=unexpected ; autorestart if exited after running (def: unexpected);exitcodes=0,2 ; 'expected' exit codes used with autorestart (default 0,2);stopsignal=QUIT ; signal used to kill process (default TERM);stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10);stopasgroup=false ; send stop signal to the UNIX process group (default false);killasgroup=false ; SIGKILL the UNIX process group (def false);user=chrism ; setuid to this UNIX account to run the program;redirect_stderr=false ; redirect_stderr=true is not allowed for eventlisteners;stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO;stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB);stdout_logfile_backups=10 ; # of stdout logfile backups (0 means none, default 10);stdout_events_enabled=false ; emit events on stdout writes (default false);stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO;stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB);stderr_logfile_backups=10 ; # of stderr logfile backups (0 means none, default 10);stderr_events_enabled=false ; emit events on stderr writes (default false);environment=A="1",B="2" ; process environment additions;serverurl=AUTO ; override serverurl computation (childutils); The sample group section below shows all possible group values. Create one; or more 'real' group: sections to create "heterogeneous" process groups.;[group:thegroupname];programs=progname1,progname2 ; each refers to 'x' in [program:x] definitions;priority=999 ; the relative start priority (default 999); The [include] section can just contain the "files" setting. This; setting can list multiple files (separated by whitespace or; newlines). It can also contain wildcards. The filenames are; interpreted as relative to this file. Included files *cannot*; include files themselves.[include]files = /usr/local/etc/supervisor.d/*.ini

地方配置也就几块

[unix_http_server] // http服务[supervisord] // daemon服务[rpcinterface:supervisor] // rpc接口的,[supervisorctl] // client配置[program:theprogramname] // 配置进程管理[eventlistener:theeventlistenername] // 事件监听[group:thegroupname] // 组程序[include] //别的配置文件

配置表明:一些比较常用的,上边斯拉维尼亚语有写

[unix_http_server]file=/usr/local/var/run/supervisor.sock ;UNIX socket 文件,supervisorctl 会使用;chmod=0700 ;socket文件的mode,默认是0700;chown=nobody:nogroup ;socket文件的owner,格式:uid:gid ;[inet_http_server] ;HTTP服务器,提供web管理界面;port=127.0.0.1:9001 ;Web管理后台运行的IP和端口,如果开放到公网,需要注意安全性;username=user ;登录管理后台的用户名;password=123 ;登录管理后台的密码 [supervisord]logfile=/usr/local/var/log/supervisord.log ;日志文件,默认是 $CWD/supervisord.loglogfile_maxbytes=50MB ;日志文件大小,超出会rotate,默认 50MB,如果设成0,表示不限制大小logfile_backups=10 ;日志文件保留备份数量默认10,设为0表示不备份loglevel=info ;日志级别,默认info,其它: debug,warn,tracepidfile=/usr/local/var/run/supervisord.pid ;pid 文件nodaemon=false ;是否在前台启动,默认是false,即以 daemon 的方式启动minfds=1024 ;可以打开的文件描述符的最小值,默认 1024minprocs=200 ;可以打开的进程数的最小值,默认 200 [supervisorctl]serverurl=unix:///usr/local/var/run/supervisor.sock ;通过UNIX socket连接supervisord,路径与unix_http_server部分的file一致;serverurl=http://127.0.0.1:9001 ; 通过HTTP的方式连接supervisord ; [program:xx]是被管理的进程配置参数,xx是进程的名称 ;包含其它配置文件[include]files = /usr/local/etc/supervisor.d/*.ini ;可以指定一个或多个以.ini结束的配置文件

经过的安排样例

八个轻便易行的例证如下

 ;设置进程的名称,使用supervisorctl来管理进程时需要使用该进程名 [program:your_program_name] command=python server.py --port=9000 ;numprocs=1 ;默认为1 ;process_name=%(program_name)s ;默认为 %(program_name)s,即[program:x]中的x directory=/home/python/tornado_server;执行command之前,先切换到工作目录 user=oxygen ;使用oxygen用户来启动该进程 ;程序崩溃时自动重启,重启次数是有限制的,默认为3次 autorestart=**true** redirect_stderr=**true** ;重定向输出的日志 stdout_logfile = /var/log/supervisord/tornado_server.log loglevel=info

设置日志等级

loglevel 内定了日记的等第,用 Python 的 print 语句输出的日志是不会被记录到日志文件中的,需求搭配 Python 的 logging 模块来输出有钦点品级的日志。五个进程依据官方文书档案的定义,一个 [program:x] 实际上是意味一组同样特征或同类的进程组,约等于说七个 [program:x] 能够运转四个进度。这组经过的分子是通过 numprocs 和 process_name 那四个参数来规定的,那句话怎么意思啊,大家来看那几个例子。

 ;设置进程的名称,使用supervisorctl来管理进程时需要使用该进程名 [program:foo] ;可以在command这里用python表达式传递不同的参数给每个进程 command=python server.py --port=90%(process_num)02d directory=/home/python/tornado_server;执行command之前,先切换到工作目录 ;若numprocs不为1,process_name的表达式中一定要包含process_num来区分不同的进程 numprocs=2 process_name=%(program_name)s_%(process_num)02d; user=oxygen ;使用oxygen用户来启动该进程 autorestart=**true** ;程序崩溃时自动重启 redirect_stderr=**true** ;重定向输出的日志 stdout_logfile = /var/log/supervisord/tornado_server.log loglevel=info

地点这么些例子会运营三个进度,process_name 分别为 foo:foo_01 和 foo:foo_02。通过那样一种方式,就足以用二个 [program:x] 配置项,来运维一组非常相近的长河。

再介绍四个布局项 stopasgroup 和 killasgroup

;默认为false,倘若设置为true,当进程收到stop时限信号时,会自行将该时限信号发给该进度的子进度。倘若那么些布局项为true,那么也包罗killasgroup为true。比方在Debug格局应用Flask时,Flask不会将吸收接纳到的stop复信号也传递给它的子进度,因而就要求安装那个布局项。

stopasgroup=false ;send stop signalto the UNIX process

;默认为false,假若设置为true,当进度收到kill确定性信号时,会自行将该时限信号发给该进程的子进度。假若那些程序行使了python的multiprocessing时,就能够自行终止它的子线程。

killasgroup=false ;SIGKILL the UNIX process group(def****false)

更详尽的配备例子,能够参照如下,官方文书档案在那间(

;[program:theprogramname]

;command=/bin/cat ;the program(relative uses PATH,can take args)

;process_name=%(program_name)s;process_name expr(default %(program_name)s)

;numprocs=1 ;number of processes copies to start(def1)

;directory=/tmp ;directory to cwd to before exec(defno cwd)

;umask=022 ;umask forprocess(default None)

;priority=999 ;the relative start priority(default999)

;autostart=true ;start at supervisord start(default: true)

;autorestart=unexpected ;whether/when to restart(default: unexpected)

;startsecs=1 ;number of secs prog must stay running(def.1)

;startretries=3 ;max# of serial start failures (default 3)

;exitcodes=0,2 ;'expected'exit codes forprocess(default0,2)

;stopsignal=QUIT ;signalused to kill process(default TERM)

;stopwaitsecs=10 ;maxnum secs to wait b4 SIGKILL(default10)

;stopasgroup=false ;send stop signalto the UNIX process group(default false)

;killasgroup=false ;SIGKILL the UNIX process group(def****false)

;user=chrism ;setuid to this UNIX account to run the program

;redirect_stderr=true ;redirect proc stderr to stdout(default false)

;stdout_logfile=/a/path ;stdout log path,NONE****for****none;default AUTO

;stdout_logfile_maxbytes=1MB ;max# logfile bytes b4 rotation (default 50MB)

;stdout_logfile_backups=10 ;# of stdout logfile backups (default 10)

;stdout_capture_maxbytes=1MB ;number of bytes in'capturemode'

;stdout_events_enabled=false ;emit events on stdout writes(default false)

;stderr_logfile=/a/path ;stderr log path,NONE****for****none;default AUTO

;stderr_logfile_maxbytes=1MB ;max# logfile bytes b4 rotation (default 50MB)

;stderr_logfile_backups=10 ;# of stderr logfile backups (default 10)

;stderr_capture_maxbytes=1MB ;number of bytes in'capturemode'

;stderr_events_enabled=false ;emit events on stderr writes(default false)

;environment=A="1",B="2" ;process environment additions(defno adds)

;serverurl=AUTO ;override serverurl computation(childutils)

将多少个经过按组管理

Supervisor 同临时间还提供了别的一种进程组的军管情势,通过这种方法,能够利用 supervisorctl 命令来管理一组经过。跟 [program:x] 的长河组不一样的是,这里的进程是叁个个的 [program:x] 。

[group:thegroupname]programs=progname1,progname2 ;each refers to'x'**in**[program:x]definitionspriority=999 ;the relative start priority(default999)

增加了上述配置后,progname1 和 progname2 的长河名就能成为thegroupname:progname1 和 thegroupname:progname2 现在就要用这些名字来治本过程了,实际不是事先的 progname1。

以往实践 supervisorctl stop thegroupname: 就会并且终止 progname1 和 progname2,试行 supervisorctl stop thegroupname:progname1 就会了事 progname1。supervisorctl 的通令我们稍后介绍。

启动 supervisord实行 supervisord 命令,将会运转 supervisord 进度,相同的时候大家在配备文件中装置的历程也会相应运转。

# 使用默许的布置文件 /etc/supervisord.confsupervisord# 显明指定安顿文件supervisord -c /etc/supervisord.conf# 使用 user 顾客运营 supervisordsupervisord -uuser

更加多参数请参见文书档案

supervisorctl 命令介绍

# 结束某多个经过,program_name 为 [program:x] 里的 xsupervisorctl stop program_name# 运转某些进度supervisorctl start program_name# 重启某些进度supervisorctl restart program_namesupervisorctl restart program_name# 甘休全数属于名称叫groupworker 那一个分组的历程 (start,restart 同理)supervisorctl stop groupworker:# 停止 groupworker:name1 那些进程 (start,restart 同理)supervisorctl stop groupworker:name1# 停止任何历程,注:start、restart、stop 都不会载入最新的布局文件supervisorctl stop all# 载入最新的铺排文件,截至原有进程并按新的安插运行、管理全体进度supervisorctl reload# 依据新型的布署文件,运维新安顿或有改造的长河,配置未有改变的进度不会受影响而重启supervisorctl update

只顾:展现用 stop 结束掉的历程,用 reload 也许 update 都不会活动重启。也足以参照他事他说加以考察这里(

开机自动运维 Supervisord

Supervisord 暗中认可意况下并不曾棉被服装置成服务,它本人也是三个经过。官方已经付诸了剧本能够将 Supervisord 安装成服务,可以参考这里( Ubuntu 脚本却敬谢不敏运转。

一、介绍

法定介绍说: Supervisor: A Process Control SystemSupervisor是二个顾客端/服务器系统,允许其顾客监视和调整类UNIX操作系统上的居多进程。

二、优点

1. 简单

Supervisor通过简单的INI样式配置文件举行配备,该文件易于学习。它提供了无数各样进度选项,让你的生存更自在,如再一次启航败北的经过和机关日志轮换。

2.集中

主进度为你提供八个起步,截至和监察和控制流程的岗位。流程可以单独主宰,也得以成组调控。您能够将Supervisor配置为提供地点或远程命令行和Web分界面。

3.高效

主进程经过fork / exec运营其子过程,子进度不实行护理。当进程终止时,操作系统会马上向Supervisor发出时限信号,那与某个信赖麻烦的PID文件和按时轮询重新起动退步进度的缓慢解决方案差异。

4.扩展

Supervisor有叁个大约的平地风波通报左券,用其余语言编写的顺序可用来监视它,以至用于调节的XML-RPC接口。它还使用可由Python开荒职员利用的扩展点创设。

5.兼容

除开Windows之外,Supervisor差非常的少能够管理全体业务。它在Linux,Mac OS X,Solaris和FreeBSD上通过测量检验和支撑。它完全用Python编写,因而安装没有须求C编写翻译器。

6.久经考验

虽说Supervisor以往不行活跃,但它不是新软件。已在好些个劳动器线上运用多年了。

图片 1

三、架构

架构采纳C/S架构, 首假设有client和server,通信使用rpc进行通讯。首要有如下组件:

服务器主进度名称为supervisord。它承受在友好的调用中运行子程序,响应来自客商端的命令,重新起动崩溃或剥离的子进程,记录其子进度stdout和stderr 输出,以至更动和管理与子过程生命周期中的点相对应的“事件”。

服务器进度使用布署文件。那日常位于/etc/supervisord.conf中。此布署文件是“Windows-INI”样式配置文件。通过适当的文件系统权限保持此文件的安全非常首要,因为它可能带有未加密的客户名和密码。

主进程的指令行顾客端部分名称为supervisorctl。它为supervisord提供的功能提供了近乎shell的分界面。从 supervisorctl,顾客可以连绵起伏到分化的 supervisord进程,获取由子进度序调节制的意况,结束和运维子进度,并得到supervisord的运作进度列表。

指令行客商机通过UNIX域套接字或internet 套接字与服务器通讯。服务器能够断言顾客机的顾客应该在试行命令从前提供身份验证凭据。顾客机进度常常使用与服务器同样的布局文件,然而里面积攒[supervisorctl]一些的别的配置文件都得以干活。

若是您针对internet套接字运行了adminord,那么能够经过浏览器采访具备与supervise orctl类似效率的web顾客分界面。在激活配置文件的[inet_http_server]部分之后,访谈服务器UENVISIONL(举个例子

图片 2

劳动于web UI的同三个HTTP服务器提供二个XML-RPC接口,该接口可用以询问和决定处理器及其运转的次序。参见XML-RPC API文书档案。

superlance命令

superlance是一多样命令行工具的成团,其满含以下这么些命令:

httpok

经过按期对三个HTTP接口进行GET央浼,依照诉求是还是不是中标来推断三个进程是不是处在平常情况,假诺不平日则对过程展开重启。

crashmail

当二个进度意外退出时,发送邮件告急。

memmon

当一个进程的内部存款和储蓄器占用超越了设定阈值时,发送邮件告急。

crashmailbatch

看似于crashmail的告急,然则一段时间内的邮件将会被合成起来发送,以制止邮件轰炸。

fatalmailbatch

当二个进程未有得逞运维数次后会步入FATAL状态,此时出殡和埋葬邮件告警。与crashmailbatch同样交易会开合成报告急方。

crashsms

当一个进度意外退出时发送短信报告急察方,这些短信也是透过email网关来发送的

  1. 当supervisord运行的时候,纵然我们的listener配置为autostart=true的话,listener就能够作为supervisor的子进度被运维。
  2. listener被运营今后,会向自个儿的stdout写一个"READY"的音信,此时父进程也正是supervisord读取到这条新闻后,会感到listener处于就绪状态。
  3. listener处于就绪状态后,当supervisord产生的event在listener的布局的可承受的events中时,supervisord就能够把该event发送给该listener。
  4. listener接收到event后,大家就能够根据event的head,body里面包车型大巴数量,做一名目好些个的拍卖了。大家遵照event的剧情,判断,提取,报告急察方等等操作。
  5. 该干的活都干完未来,listener供给向友好的stdout写一个音讯"RESULTnOK",supervisord接受到那条消息后。就领会listener管理event达成了。

Supervisord支持的Event

PROCESS_STATE 进程状态发生改变PROCESS_STATE_STARTING 进程状态从其他状态转换为正在启动(Supervisord的配置项中有startsecs配置项, 是指程序启动时需要程序至少稳定运行x秒才认为程序运行正常,在这x秒中程序状态为正在启动)PROCESS_STATE_RUNNING 进程状态由正在启动转换为正在运行PROCESS_STATE_BACKOFF 进程状态由正在启动转换为失败PROCESS_STATE_STOPPING 进程状态由正在运行转换为正在停止PROCESS_STATE_EXITED 进程状态由正在运行转换为退出PROCESS_STATE_STOPPED 进程状态由正在停止转换为已经停止(exited和stopped的区别是exited是程序自行退出,而stopped为人为控制其退出)PROCESS_STATE_FATAL 进程状态由正在运行转换为失败PROCESS_STATE_UNKNOWN 未知的进程状态REMOTE_COMMUNICATION 使用Supervisord的RPC接口与Supervisord进行通信PROCESS_LOG 进程产生日志输出,包括标准输出和标准错误输出PROCESS_LOG_STDOUT 进程产生标准输出PROCESS_LOG_STDERR 进程产生标准错误输出PROCESS_COMMUNICATION 进程的日志输出包含 和PROCESS_COMMUNICATION_STDOUT 进程的标准输出包含 和PROCESS_COMMUNICATION_STDERR 进程的标准错误输出包含 和SUPERVISOR_STATE_CHANGE_RUNNING Supervisord 启动SUPERVISOR_STATE_CHANGE_STOPPING Supervisord 停止TICK_5 每隔5秒触发TICK_60 每隔60秒触发TICK_3600 每隔3600触发PROCESS_GROUP Supervisord的进程组发生变化PROCESS_GROUP_ADDED 新增了Supervisord的进程组PROCESS_GROUP_REMOVED 删除了Supervisord的进程组

安装 superlance

pip install superlance

作者上面选取 发送邮件的的点子演示配置和选用, 假设, 想发送到别的平台都是足以的, 我专门的职业中发送到alertover上的。 如若感兴趣,能够驾驭一下。

cat /usr/local/etc/supervisor.d/email.ini[eventlistener:email]command=/usr/local/bin/crashmail -a -s "/usr/sbin/sendmail -f xxx@163.com -t xxxx@qq.com -s smtp.163.com -u 'supervisord' -xu xxxx@163.com -xp xxxxxx -m" -m xxx@qq.comevents=PROCESS_STATE_EXITEDredirect_stderr=false

上边当程序退出的时候,就能触发那几个发送邮件, 发送邮件选用 sendmail 工具, 具体选择自身google一下。

大家看一下:

图片 3

假若程序退出了,就尚可邮件。

版权声明:本文由彩民之家高手论坛发布于编程技术,转载请注明出处:进程管理工科具supervisor教程及报告急察方配置