【简介】

supervisord的官网:http://supervisord.org。看懂英文的可以不用看我的博客,直接看文档就行了,文档写得非常好。点个赞!!  

Supervisor是一个客户/服务器系统,它可以在类Unix系统中管理控制大量进程。Supervisor使用python开发,有多年历史,目前很多生产环境下的服务器都在使用Supervisor。

Supervisor的服务器端称为supervisord,主要负责在启动自身时启动管理的子进程,响应客户端的命令,重启崩溃或退出的子进程,记录子 进程stdout和stderr输出,生成和处理子进程生命周期中的事件。可以在一个配置文件中配置相关参数,包括Supervisord自身的状态,其 管理的各个子进程的相关属性。配置文件一般位于/etc/supervisord.conf。

Supervisor的客户端称为supervisorctl,它提供了一个类shell的接口(即命令行)来使用supervisord服务端提供的功 能。通过supervisorctl,用户可以连接到supervisord服务器进程,获得服务器进程控制的子进程的状态,启动和停止子进程,获得正在 运行的进程列表。客户端通过Unix域套接字或者TCP套接字与服务端进行通信,服务器端具有身份凭证认证机制,可以有效提升安全性。当客户端和服务器位 于同一台机器上时,客户端与服务器共用同一个配置文件/etc/supervisord.conf,通过不同标签来区分两者的配置。

Supervisor也提供了一个web页面来查看和管理进程状态,这个功能用得人比较少。

【平台要求】

Supervisor可以运行在大多数Unix系统上,但不支持在Windows系统上运行

Supervisor需要Python2.4及以上版本,但任何Python 3版本都不支持

【安装】

当前Supervisor的最高版本是3.0,之前尝试使用2.x版本管理实验集群中的若干mdrill进程,发现使用客户端无法有效启动和停止服务器 端管理的各个子进程,从网上搜索错误发现2.x版本有一些bug,建议升级到3.0版本。因此我卸载了2.x版本,重新安装了3.0版本,发现3.0版本 很好使。3.0版本相对2.x版本,配置文件不同部分的配置项都发生了变化,详见官方文档。

我使用的操作系统是CentOS 6.4, 默认已经安装了Python,且是2.6.6版本。如果Python没有安装,请自行安装符合要求的版本。

1. 安装easy_install

  1. sudo yum install python-setuptools-devel

2. 安装Supervisor

  1. easy_install supervisor

   3. 生成配置文件

  1. echo_supervisord_conf > /etc/supervisord.conf

经过上面两步,Supervisor就安装好了。配置 文件模版已经在/etc/supervisord.conf中生成。当然配置文件的位置不一定放在/etc/supervisord.conf中。在不指 定配置文件位置的情况下,supervisord和supervisorctl会按照以下三个顺序来搜索配置文件的位置。

  1. $CWD/supervisord.conf
  2. $CWD/etc/supervisord.conf
  3. /etc/supervisord.conf

接下来就可以根据需要修改配置文件中的相应部分,对需要管理的进程进行配置了。具体的配置可以参考下一部分。

【配置】

我在一个三个结点的集群中部署了mdrill,三台主机名称分别为cma01, cma02, cma03,在cma01和cma02上打算启动Supervisor进程(这里的Supervisor进程是storm的进程,与supervisor 进程管理工具不是一回事),在cma03上打算启动NimbusServer,Mdrillui和Supervisor三个进程。在三台主机上都安装 supervisor进程控制系统后,分别在每台主机的/etc/supervisord.conf文件中配置每台主机要管理的进程。具体配置如下,其中 以;开始的行为注释行:

[cma01  /etc/supervisord.conf]

  1. ; Sample supervisor config file.
  2. ;
  3. ; For more information on the config file, please see:
  4. ; http://supervisord.org/configuration.html
  5. ;
  6. ; Note: shell expansion ("~" or "$HOME") is not supported. Environment
  7. ; variables can be expanded using this syntax: "%(ENV_HOME)s".
  8.  
  9. [unix_http_server]
  10. file=/tmp/supervisor.sock ; (the path to the socket file)
  11. ;chmod=0700 ; socket file mode (default 0700)
  12. ;chown=nobody:nogroup ; socket file uid:gid owner
  13. ;username=user ; (default is no username (open server))
  14. ;password=123 ; (default is no password (open server))
  15.  
  16. [inet_http_server] ; inet (TCP) server disabled by default
  17. port=cma01:9001 ; (ip_address:port specifier, *:port for all iface)
  18. ;username=user ; (default is no username (open server))
  19. ;password=123 ; (default is no password (open server))
  20.  
  21. [supervisord]
  22. logfile=/tmp/supervisord.log ; (main log file;default $CWD/supervisord.log)
  23. logfile_maxbytes=50MB ; (max main logfile bytes b4 rotation;default 50MB)
  24. logfile_backups=10 ; (num of main logfile rotation backups;default 10)
  25. loglevel=info ; (log level;default info; others: debug,warn,trace)
  26. pidfile=/tmp/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
  27. nodaemon=false ; (start in foreground if true;default false)
  28. minfds=1024 ; (min. avail startup file descriptors;default 1024)
  29. minprocs=200 ; (min. avail process descriptors;default 200)
  30. ;umask=022 ; (process file creation umask;default 022)
  31. ;user=chrism ; (default is current user, required if root)
  32. ;identifier=supervisor ; (supervisord identifier, default is 'supervisor')
  33. ;directory=/tmp ; (default is not to cd during start)
  34. ;nocleanup=true ; (don't clean up tempfiles at start;default false)
  35. ;childlogdir=/tmp ; ('AUTO' child log dir, default $TEMP)
  36. ;environment=KEY="value" ; (key value pairs to add to environment)
  37. ;strip_ansi=false ; (strip ansi escape codes in logs; def. false)
  38.  
  39. ; the below section must remain in the config file for RPC
  40. ; (supervisorctl/web interface) to work, additional interfaces may be
  41. ; added by defining them in separate rpcinterface: sections
  42. [rpcinterface:supervisor]
  43. supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
  44.  
  45. [supervisorctl]
  46. serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL for a unix socket
  47. ;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket
  48. ;username=chris ; should be same as http_username if set
  49. ;password=123 ; should be same as http_password if set
  50. ;prompt=mysupervisor ; cmd line prompt (default "supervisor")
  51. ;history_file=~/.sc_history ; use readline history if available
  52.  
  53. ; The below sample program section shows all possible program subsection values,
  54. ; create one or more 'real' program: sections to be able to control them under
  55. ; supervisor.
  56.  
  57. ;[program:theprogramname]
  58. ;command=/bin/cat ; the program (relative uses PATH, can take args)
  59. ;process_name=%(program_name)s ; process_name expr (default %(program_name)s)
  60. ;numprocs=1 ; number of processes copies to start (def 1)
  61. ;directory=/tmp ; directory to cwd to before exec (def no cwd)
  62. ;umask=022 ; umask for process (default None)
  63. ;priority=999 ; the relative start priority (default 999)
  64. ;autostart=true ; start at supervisord start (default: true)
  65. ;autorestart=unexpected ; whether/when to restart (default: unexpected)
  66. ;startsecs=1 ; number of secs prog must stay running (def. 1)
  67. ;startretries=3 ; max # of serial start failures (default 3)
  68. ;exitcodes=0,2 ; 'expected' exit codes for process (default 0,2)
  69. ;stopsignal=QUIT ; signal used to kill process (default TERM)
  70. ;stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)
  71. ;stopasgroup=false ; send stop signal to the UNIX process group (default false)
  72. ;killasgroup=false ; SIGKILL the UNIX process group (def false)
  73. ;user=chrism ; setuid to this UNIX account to run the program
  74. ;redirect_stderr=true ; redirect proc stderr to stdout (default false)
  75. ;stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO
  76. ;stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
  77. ;stdout_logfile_backups=10 ; # of stdout logfile backups (default 10)
  78. ;stdout_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
  79. ;stdout_events_enabled=false ; emit events on stdout writes (default false)
  80. ;stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO
  81. ;stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
  82. ;stderr_logfile_backups=10 ; # of stderr logfile backups (default 10)
  83. ;stderr_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
  84. ;stderr_events_enabled=false ; emit events on stderr writes (default false)
  85. ;environment=A="1",B="2" ; process environment additions (def no adds)
  86. ;serverurl=AUTO ; override serverurl computation (childutils)
  87.  
  88. [program:spvs-01]
  89. command=/root/alimama/adhoc-core/bin/bluewhale supervisor
  90. process_name=%(program_name)s
  91. numprocs=1
  92. user=root
  93. autostart=true
  94. autorestart=true
  95. startsecs=5
  96. startretries=3
  97. redirect_stderr=true
  98. stdout_logfile=/root/alimama/adhoc-core/bin/supervisor.log
  99. stdout_logfile_maxbytes=20MB
  100. stdout_logfile_backups=10
  101. stopasgroup=true
  102.  
  103. ; The below sample eventlistener section shows all possible
  104. ; eventlistener subsection values, create one or more 'real'
  105. ; eventlistener: sections to be able to handle event notifications
  106. ; sent by supervisor.
  107.  
  108. ;[eventlistener:theeventlistenername]
  109. ;command=/bin/eventlistener ; the program (relative uses PATH, can take args)
  110. ;process_name=%(program_name)s ; process_name expr (default %(program_name)s)
  111. ;numprocs=1 ; number of processes copies to start (def 1)
  112. ;events=EVENT ; event notif. types to subscribe to (req'd)
  113. ;buffer_size=10 ; event buffer queue size (default 10)
  114. ;directory=/tmp ; directory to cwd to before exec (def no cwd)
  115. ;umask=022 ; umask for process (default None)
  116. ;priority=-1 ; the relative start priority (default -1)
  117. ;autostart=true ; start at supervisord start (default: true)
  118. ;autorestart=unexpected ; whether/when to restart (default: unexpected)
  119. ;startsecs=1 ; number of secs prog must stay running (def. 1)
  120. ;startretries=3 ; max # of serial start failures (default 3)
  121. ;exitcodes=0,2 ; 'expected' exit codes for process (default 0,2)
  122. ;stopsignal=QUIT ; signal used to kill process (default TERM)
  123. ;stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)
  124. ;stopasgroup=false ; send stop signal to the UNIX process group (default false)
  125. ;killasgroup=false ; SIGKILL the UNIX process group (def false)
  126. ;user=chrism ; setuid to this UNIX account to run the program
  127. ;redirect_stderr=true ; redirect proc stderr to stdout (default false)
  128. ;stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO
  129. ;stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
  130. ;stdout_logfile_backups=10 ; # of stdout logfile backups (default 10)
  131. ;stdout_events_enabled=false ; emit events on stdout writes (default false)
  132. ;stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO
  133. ;stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
  134. ;stderr_logfile_backups ; # of stderr logfile backups (default 10)
  135. ;stderr_events_enabled=false ; emit events on stderr writes (default false)
  136. ;environment=A="1",B="2" ; process environment additions
  137. ;serverurl=AUTO ; override serverurl computation (childutils)
  138.  
  139. ; The below sample group section shows all possible group values,
  140. ; create one or more 'real' group: sections to create "heterogeneous"
  141. ; process groups.
  142.  
  143. ;[group:thegroupname]
  144. ;programs=progname1,progname2 ; each refers to 'x' in [program:x] definitions
  145. ;priority=999 ; the relative start priority (default 999)
  146.  
  147. ; The [include] section can just contain the "files" setting. This
  148. ; setting can list multiple files (separated by whitespace or
  149. ; newlines). It can also contain wildcards. The filenames are
  150. ; interpreted as relative to this file. Included files *cannot*
  151. ; include files themselves.
  152.  
  153. ;[include]
  154. ;files = relative/directory/*.ini

关键部分是program:spvs-01,该部分为主机cma01配置了让supervisord管理的storm进程Supervisor。

[cma02  /etc/supervisord.conf]

  1. ; Sample supervisor config file.
  2. ;
  3. ; For more information on the config file, please see:
  4. ; http://supervisord.org/configuration.html
  5. ;
  6. ; Note: shell expansion ("~" or "$HOME") is not supported. Environment
  7. ; variables can be expanded using this syntax: "%(ENV_HOME)s".
  8.  
  9. [unix_http_server]
  10. file=/tmp/supervisor.sock ; (the path to the socket file)
  11. ;chmod=0700 ; socket file mode (default 0700)
  12. ;chown=nobody:nogroup ; socket file uid:gid owner
  13. ;username=user ; (default is no username (open server))
  14. ;password=123 ; (default is no password (open server))
  15.  
  16. [inet_http_server] ; inet (TCP) server disabled by default
  17. port=cma02:9001 ; (ip_address:port specifier, *:port for all iface)
  18. ;username=user ; (default is no username (open server))
  19. ;password=123 ; (default is no password (open server))
  20.  
  21. [supervisord]
  22. logfile=/tmp/supervisord.log ; (main log file;default $CWD/supervisord.log)
  23. logfile_maxbytes=50MB ; (max main logfile bytes b4 rotation;default 50MB)
  24. logfile_backups=10 ; (num of main logfile rotation backups;default 10)
  25. loglevel=info ; (log level;default info; others: debug,warn,trace)
  26. pidfile=/tmp/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
  27. nodaemon=false ; (start in foreground if true;default false)
  28. minfds=1024 ; (min. avail startup file descriptors;default 1024)
  29. minprocs=200 ; (min. avail process descriptors;default 200)
  30. ;umask=022 ; (process file creation umask;default 022)
  31. ;user=chrism ; (default is current user, required if root)
  32. ;identifier=supervisor ; (supervisord identifier, default is 'supervisor')
  33. ;directory=/tmp ; (default is not to cd during start)
  34. ;nocleanup=true ; (don't clean up tempfiles at start;default false)
  35. ;childlogdir=/tmp ; ('AUTO' child log dir, default $TEMP)
  36. ;environment=KEY="value" ; (key value pairs to add to environment)
  37. ;strip_ansi=false ; (strip ansi escape codes in logs; def. false)
  38.  
  39. ; the below section must remain in the config file for RPC
  40. ; (supervisorctl/web interface) to work, additional interfaces may be
  41. ; added by defining them in separate rpcinterface: sections
  42. [rpcinterface:supervisor]
  43. supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
  44.  
  45. [supervisorctl]
  46. serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL for a unix socket
  47. ;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket
  48. ;username=chris ; should be same as http_username if set
  49. ;password=123 ; should be same as http_password if set
  50. ;prompt=mysupervisor ; cmd line prompt (default "supervisor")
  51. ;history_file=~/.sc_history ; use readline history if available
  52.  
  53. ; The below sample program section shows all possible program subsection values,
  54. ; create one or more 'real' program: sections to be able to control them under
  55. ; supervisor.
  56.  
  57. ;[program:theprogramname]
  58. ;command=/bin/cat ; the program (relative uses PATH, can take args)
  59. ;process_name=%(program_name)s ; process_name expr (default %(program_name)s)
  60. ;numprocs=1 ; number of processes copies to start (def 1)
  61. ;directory=/tmp ; directory to cwd to before exec (def no cwd)
  62. ;umask=022 ; umask for process (default None)
  63. ;priority=999 ; the relative start priority (default 999)
  64. ;autostart=true ; start at supervisord start (default: true)
  65. ;autorestart=unexpected ; whether/when to restart (default: unexpected)
  66. ;startsecs=1 ; number of secs prog must stay running (def. 1)
  67. ;startretries=3 ; max # of serial start failures (default 3)
  68. ;exitcodes=0,2 ; 'expected' exit codes for process (default 0,2)
  69. ;stopsignal=QUIT ; signal used to kill process (default TERM)
  70. ;stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)
  71. ;stopasgroup=false ; send stop signal to the UNIX process group (default false)
  72. ;killasgroup=false ; SIGKILL the UNIX process group (def false)
  73. ;user=chrism ; setuid to this UNIX account to run the program
  74. ;redirect_stderr=true ; redirect proc stderr to stdout (default false)
  75. ;stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO
  76. ;stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
  77. ;stdout_logfile_backups=10 ; # of stdout logfile backups (default 10)
  78. ;stdout_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
  79. ;stdout_events_enabled=false ; emit events on stdout writes (default false)
  80. ;stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO
  81. ;stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
  82. ;stderr_logfile_backups=10 ; # of stderr logfile backups (default 10)
  83. ;stderr_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
  84. ;stderr_events_enabled=false ; emit events on stderr writes (default false)
  85. ;environment=A="1",B="2" ; process environment additions (def no adds)
  86. ;serverurl=AUTO ; override serverurl computation (childutils)
  87.  
  88. [program:spvs-02]
  89. command=/root/alimama/adhoc-core/bin/bluewhale supervisor
  90. process_name=%(program_name)s
  91. numprocs=1
  92. user=root
  93. autostart=true
  94. autorestart=true
  95. startsecs=5
  96. startretries=3
  97. redirect_stderr=true
  98. stdout_logfile=/root/alimama/adhoc-core/bin/supervisor.log
  99. stdout_logfile_maxbytes=20MB
  100. stdout_logfile_backups=10
  101. stopasgroup=true
  102.  
  103. ; The below sample eventlistener section shows all possible
  104. ; eventlistener subsection values, create one or more 'real'
  105. ; eventlistener: sections to be able to handle event notifications
  106. ; sent by supervisor.
  107.  
  108. ;[eventlistener:theeventlistenername]
  109. ;command=/bin/eventlistener ; the program (relative uses PATH, can take args)
  110. ;process_name=%(program_name)s ; process_name expr (default %(program_name)s)
  111. ;numprocs=1 ; number of processes copies to start (def 1)
  112. ;events=EVENT ; event notif. types to subscribe to (req'd)
  113. ;buffer_size=10 ; event buffer queue size (default 10)
  114. ;directory=/tmp ; directory to cwd to before exec (def no cwd)
  115. ;umask=022 ; umask for process (default None)
  116. ;priority=-1 ; the relative start priority (default -1)
  117. ;autostart=true ; start at supervisord start (default: true)
  118. ;autorestart=unexpected ; whether/when to restart (default: unexpected)
  119. ;startsecs=1 ; number of secs prog must stay running (def. 1)
  120. ;startretries=3 ; max # of serial start failures (default 3)
  121. ;exitcodes=0,2 ; 'expected' exit codes for process (default 0,2)
  122. ;stopsignal=QUIT ; signal used to kill process (default TERM)
  123. ;stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)
  124. ;stopasgroup=false ; send stop signal to the UNIX process group (default false)
  125. ;killasgroup=false ; SIGKILL the UNIX process group (def false)
  126. ;user=chrism ; setuid to this UNIX account to run the program
  127. ;redirect_stderr=true ; redirect proc stderr to stdout (default false)
  128. ;stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO
  129. ;stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
  130. ;stdout_logfile_backups=10 ; # of stdout logfile backups (default 10)
  131. ;stdout_events_enabled=false ; emit events on stdout writes (default false)
  132. ;stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO
  133. ;stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
  134. ;stderr_logfile_backups ; # of stderr logfile backups (default 10)
  135. ;stderr_events_enabled=false ; emit events on stderr writes (default false)
  136. ;environment=A="1",B="2" ; process environment additions
  137. ;serverurl=AUTO ; override serverurl computation (childutils)
  138.  
  139. ; The below sample group section shows all possible group values,
  140. ; create one or more 'real' group: sections to create "heterogeneous"
  141. ; process groups.
  142.  
  143. ;[group:thegroupname]
  144. ;programs=progname1,progname2 ; each refers to 'x' in [program:x] definitions
  145. ;priority=999 ; the relative start priority (default 999)
  146.  
  147. ; The [include] section can just contain the "files" setting. This
  148. ; setting can list multiple files (separated by whitespace or
  149. ; newlines). It can also contain wildcards. The filenames are
  150. ; interpreted as relative to this file. Included files *cannot*
  151. ; include files themselves.
  152.  
  153. ;[include]
  154. ;files = relative/directory/*.ini

关键部分是program:spvs-02,该部分为主机cma02配置了让supervisord管理的storm进程Supervisor。

[cma03  /etc/supervisord.conf]

  1. ; Sample supervisor config file.
  2. ;
  3. ; For more information on the config file, please see:
  4. ; http://supervisord.org/configuration.html
  5. ;
  6. ; Note: shell expansion ("~" or "$HOME") is not supported. Environment
  7. ; variables can be expanded using this syntax: "%(ENV_HOME)s".
  8.  
  9. [unix_http_server]
  10. file=/tmp/supervisor.sock ; (the path to the socket file)
  11. ;chmod=0700 ; socket file mode (default 0700)
  12. ;chown=nobody:nogroup ; socket file uid:gid owner
  13. ;username=user ; (default is no username (open server))
  14. ;password=123 ; (default is no password (open server))
  15.  
  16. [inet_http_server] ; inet (TCP) server disabled by default
  17. port=cma03:9001 ; (ip_address:port specifier, *:port for all iface)
  18. ;username=user ; (default is no username (open server))
  19. ;password=123 ; (default is no password (open server))
  20.  
  21. [supervisord]
  22. logfile=/tmp/supervisord.log ; (main log file;default $CWD/supervisord.log)
  23. logfile_maxbytes=50MB ; (max main logfile bytes b4 rotation;default 50MB)
  24. logfile_backups=10 ; (num of main logfile rotation backups;default 10)
  25. loglevel=info ; (log level;default info; others: debug,warn,trace)
  26. pidfile=/tmp/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
  27. nodaemon=false ; (start in foreground if true;default false)
  28. minfds=1024 ; (min. avail startup file descriptors;default 1024)
  29. minprocs=200 ; (min. avail process descriptors;default 200)
  30. ;umask=022 ; (process file creation umask;default 022)
  31. ;user=chrism ; (default is current user, required if root)
  32. ;identifier=supervisor ; (supervisord identifier, default is 'supervisor')
  33. ;directory=/tmp ; (default is not to cd during start)
  34. ;nocleanup=true ; (don't clean up tempfiles at start;default false)
  35. ;childlogdir=/tmp ; ('AUTO' child log dir, default $TEMP)
  36. ;environment=KEY="value" ; (key value pairs to add to environment)
  37. ;strip_ansi=false ; (strip ansi escape codes in logs; def. false)
  38.  
  39. ; the below section must remain in the config file for RPC
  40. ; (supervisorctl/web interface) to work, additional interfaces may be
  41. ; added by defining them in separate rpcinterface: sections
  42. [rpcinterface:supervisor]
  43. supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
  44.  
  45. [supervisorctl]
  46. serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL for a unix socket
  47. ;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket
  48. ;username=chris ; should be same as http_username if set
  49. ;password=123 ; should be same as http_password if set
  50. ;prompt=mysupervisor ; cmd line prompt (default "supervisor")
  51. ;history_file=~/.sc_history ; use readline history if available
  52.  
  53. ; The below sample program section shows all possible program subsection values,
  54. ; create one or more 'real' program: sections to be able to control them under
  55. ; supervisor.
  56.  
  57. ;[program:theprogramname]
  58. ;command=/bin/cat ; the program (relative uses PATH, can take args)
  59. ;process_name=%(program_name)s ; process_name expr (default %(program_name)s)
  60. ;numprocs=1 ; number of processes copies to start (def 1)
  61. ;directory=/tmp ; directory to cwd to before exec (def no cwd)
  62. ;umask=022 ; umask for process (default None)
  63. ;priority=999 ; the relative start priority (default 999)
  64. ;autostart=true ; start at supervisord start (default: true)
  65. ;autorestart=unexpected ; whether/when to restart (default: unexpected)
  66. ;startsecs=1 ; number of secs prog must stay running (def. 1)
  67. ;startretries=3 ; max # of serial start failures (default 3)
  68. ;exitcodes=0,2 ; 'expected' exit codes for process (default 0,2)
  69. ;stopsignal=QUIT ; signal used to kill process (default TERM)
  70. ;stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)
  71. ;stopasgroup=false ; send stop signal to the UNIX process group (default false)
  72. ;killasgroup=false ; SIGKILL the UNIX process group (def false)
  73. ;user=chrism ; setuid to this UNIX account to run the program
  74. ;redirect_stderr=true ; redirect proc stderr to stdout (default false)
  75. ;stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO
  76. ;stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
  77. ;stdout_logfile_backups=10 ; # of stdout logfile backups (default 10)
  78. ;stdout_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
  79. ;stdout_events_enabled=false ; emit events on stdout writes (default false)
  80. ;stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO
  81. ;stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
  82. ;stderr_logfile_backups=10 ; # of stderr logfile backups (default 10)
  83. ;stderr_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
  84. ;stderr_events_enabled=false ; emit events on stderr writes (default false)
  85. ;environment=A="1",B="2" ; process environment additions (def no adds)
  86. ;serverurl=AUTO ; override serverurl computation (childutils)
  87.  
  88. [program:nmbs]
  89. command=/root/alimama/adhoc-core/bin/bluewhale nimbus
  90. process_name=%(program_name)s
  91. numprocs=1
  92. user=root
  93. priority=700
  94. autostart=true
  95. autorestart=true
  96. startsecs=5
  97. startretries=3
  98. redirect_stderr=true
  99. stdout_logfile=/root/alimama/adhoc-core/bin/nimbus.log
  100. stdout_logfile_maxbytes=20MB
  101. stdout_logfile_backups=10
  102. stopasgroup=true
  103.  
  104. [program:spvs-03]
  105. command=/root/alimama/adhoc-core/bin/bluewhale supervisor
  106. process_name=%(program_name)s
  107. numprocs=1
  108. user=root
  109. priority=800
  110. autostart=true
  111. autorestart=true
  112. startsecs=5
  113. startretries=3
  114. redirect_stderr=true
  115. stdout_logfile=/root/alimama/adhoc-core/bin/supervisor.log
  116. stdout_logfile_maxbytes=20MB
  117. stdout_logfile_backups=10
  118. stopasgroup=true
  119.  
  120. [program:ui]
  121. command=/root/alimama/adhoc-core/bin/bluewhale mdrillui 1107 /root/alimama/adhoc-core/lib/adhoc-web-0.18-beta.jar
  122. process_name=%(program_name)s
  123. numprocs=1
  124. user=root
  125. priority=900
  126. autostart=true
  127. autorestart=true
  128. startsecs=5
  129. startretries=3
  130. redirect_stderr=true
  131. stdout_logfile=/root/alimama/adhoc-core/bin/ui.log
  132. stdout_logfile_maxbytes=20MB
  133. stdout_logfile_backups=10
  134. stopasgroup=true
  135.  
  136. ; The below sample eventlistener section shows all possible
  137. ; eventlistener subsection values, create one or more 'real'
  138. ; eventlistener: sections to be able to handle event notifications
  139. ; sent by supervisor.
  140.  
  141. ;[eventlistener:theeventlistenername]
  142. ;command=/bin/eventlistener ; the program (relative uses PATH, can take args)
  143. ;process_name=%(program_name)s ; process_name expr (default %(program_name)s)
  144. ;numprocs=1 ; number of processes copies to start (def 1)
  145. ;events=EVENT ; event notif. types to subscribe to (req'd)
  146. ;buffer_size=10 ; event buffer queue size (default 10)
  147. ;directory=/tmp ; directory to cwd to before exec (def no cwd)
  148. ;umask=022 ; umask for process (default None)
  149. ;priority=-1 ; the relative start priority (default -1)
  150. ;autostart=true ; start at supervisord start (default: true)
  151. ;autorestart=unexpected ; whether/when to restart (default: unexpected)
  152. ;startsecs=1 ; number of secs prog must stay running (def. 1)
  153. ;startretries=3 ; max # of serial start failures (default 3)
  154. ;exitcodes=0,2 ; 'expected' exit codes for process (default 0,2)
  155. ;stopsignal=QUIT ; signal used to kill process (default TERM)
  156. ;stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)
  157. ;stopasgroup=false ; send stop signal to the UNIX process group (default false)
  158. ;killasgroup=false ; SIGKILL the UNIX process group (def false)
  159. ;user=chrism ; setuid to this UNIX account to run the program
  160. ;redirect_stderr=true ; redirect proc stderr to stdout (default false)
  161. ;stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO
  162. ;stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
  163. ;stdout_logfile_backups=10 ; # of stdout logfile backups (default 10)
  164. ;stdout_events_enabled=false ; emit events on stdout writes (default false)
  165. ;stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO
  166. ;stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
  167. ;stderr_logfile_backups ; # of stderr logfile backups (default 10)
  168. ;stderr_events_enabled=false ; emit events on stderr writes (default false)
  169. ;environment=A="1",B="2" ; process environment additions
  170. ;serverurl=AUTO ; override serverurl computation (childutils)
  171.  
  172. ; The below sample group section shows all possible group values,
  173. ; create one or more 'real' group: sections to create "heterogeneous"
  174. ; process groups.
  175.  
  176. ;[group:thegroupname]
  177. ;programs=progname1,progname2 ; each refers to 'x' in [program:x] definitions
  178. ;priority=999 ; the relative start priority (default 999)
  179.  
  180. ; The [include] section can just contain the "files" setting. This
  181. ; setting can list multiple files (separated by whitespace or
  182. ; newlines). It can also contain wildcards. The filenames are
  183. ; interpreted as relative to this file. Included files *cannot*
  184. ; include files themselves.
  185.  
  186. ;[include]
  187. ;files = relative/directory/*.ini

关键部分是program:nmbs, program:spvs-03和program:ui,这三部分为主机cma03配置了让supervisord管理的storm进程NimbusServer, Supervisor和Mdrillui。

有几个配置项值得解释一下,可以根据需要自行设置。

1. stopasgroup=true。这一配置项的作用是:如果supervisord管理的进程px又产生了若干子进程,使用supervisorctl 停止px进程,停止信号会传播给px产生的所有子进程,确保子进程也一起停止。这一配置项对希望停止所有进程的需求是非常有用的。

2. autostart=true。这一配置项的作用是:当启动supervisord的时候会将该配置项设置为true的所有进程自动启动。

【启动supervisord】

  确保配置无误后可以在每台主机上使用下面的命令启动supervisor的服务器端supervisord

  1. supervisord

【停止supervisord】

  1. supervisorctl shutdown

【重新加载配置文件】

  1. supervisorctl reload

【进程管理】

1. 启动supervisord管理的所有进程

  1. supervisorctl start all

2. 停止supervisord管理的所有进程

  1. supervisorctl stop all

3. 启动supervisord管理的某一个特定进程

  1. supervisorctl start program-name // program-name为[program:xx]中的xx

4.  停止supervisord管理的某一个特定进程

  1. supervisorctl stop program-name // program-name为[program:xx]中的xx

5.  重启所有进程或所有进程

  1. supervisorctl restart all // 重启所有
  2. supervisorctl reatart program-name // 重启某一进程,program-name为[program:xx]中的xx

6. 查看supervisord当前管理的所有进程的状态

  1. supervisorctl status

【遇到问题及解决方案】

在使用命令supervisorctl start all启动控制进程时,遇到如下错误

unix:///tmp/supervisor.sock no such file

出现上述错误的原因是supervisord并未启动,只要在命令行中使用命令sudo supervisord启动supervisord即可。

【遗留问题】

当集群规模扩大后,登录到每台主机使用supervior控制进程也是很麻烦的,能不能用一台主机作为客户端,同时连接集群中的所有主机,以一种中 心化的方式统一管理集群中的所有进程?之前一直使用的方式是使用交互式工具expect。supervisor本身有没有提供一种机制实现集群中所有进程 的中央化管理?

目前测试成功的是使用一台主机作为客户端(supervisorctl),控制另一台服务器(supervisord)主机上的状态。方法是在服务 器端配置[inet_http_server]部分,开启TCP端口监听。客户端配置[supervisorctl]部分,指定服务器端的 serverurl,连接服务器端监听的端口。但是一个客户端只能连接一个服务器,无法指定多个服务器。

supervisord的更多相关文章

  1. docker-9 supervisord 参考docker从入门到实战

    参考docker从入门到实战 使用 Supervisor 来管理进程 Docker 容器在启动的时候开启单个进程,比如,一个 ssh 或者 apache 的 daemon 服务.但我们经常需要在一个机 ...

  2. supervisord安装使用简记

    What is supervisor Supervisor is a client/server system that allows its users to monitor and control ...

  3. Monitoring Processes with Supervisord

    If you're interested in more of this type of content, check out the Servers for Hackers eBook! As so ...

  4. supervisord 小记

    此篇仅用作supervisord的用法,不涉及理论说明和基础介绍 supervisor(一)基础篇 使用supervisord来管理process 进程的守护神 - Supervisor superv ...

  5. nginx+uwsgi+django+celery+supervisord环境部署

    前言 很久没更博客了,最近新写了一个小项目,后边有时间把一些心得放上来,先把环境的部署方式整理出来. 部署过程 先将环境的python升级为2.7 保证有pip 安装了nginx并配置 vim /Da ...

  6. 用Supervisord管理Python进程

    http://feilong.me/2011/03/monitor-processes-with-supervisord Supervisord是用Python实现的一款非常实用的进程管理工具,类似于 ...

  7. python之supervisord启动脚本

    Supervisord是用Python实现的一款非常实用的进程管理工具,在批量服务化管理时特别有效.可以将非Daemon的应用转为daemon程序.关于supervisord的安装和配置,在网上已经有 ...

  8. Supervisord管理

    原文地址:http://blog.csdn.net/fyh2003/article/details/6837970 学习笔记 Supervisord可以通过sudo easy_install supe ...

  9. 在使用supervisord 管理tomcat时遇到的小问题

    使用 supervisord  监控管理的进程必须以 nodaemon 启动,而 tomcat 的 startup.sh 脚本是daemon方式的,假设不做改动的话,supervisord 会一直报错 ...

随机推荐

  1. 天大acm 题号1002 Maya Calendar

    Description 上周末,M.A. Ya教授对古老的玛雅有了一个重大发现.从一个古老的节绳(玛雅人用于记事的工具)中,教授发现玛雅人使用了一个一年有365天的叫做Haab的历法.这 个Haab历 ...

  2. http://www.bejson.com/go.html?u=http://www.bejson.com/demo2.html

    json 解析工具http://www.bejson.com/go.html?u=http://www.bejson.com/demo2.html

  3. YTU 2295: KMP模式匹配 一(串)

    2295: KMP模式匹配 一(串) 时间限制: 1 Sec  内存限制: 128 MB 提交: 32  解决: 22 题目描述 求子串的next值,用next数组存放,全部输出 输入 输入一个字符串 ...

  4. PHP之验证码类

    <?php /** * Created by PhpStorm. * User: Administrator * Date: 2016/6/20 * Time: 14:29 */ Class c ...

  5. Robot Motion 分类: POJ 2015-06-29 13:45 11人阅读 评论(0) 收藏

    Robot Motion Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 11262 Accepted: 5482 Descrip ...

  6. nylg 小M的因子和

    小M的因子和 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 小M在上课时有些得意忘形,老师想出道题目难住他.小M听说是求因子和,还是非常得意,但是看完题目是求A的B ...

  7. DBCP连接Oracle,数据库重启后现OALL8 is in an inconsistent state异常

    最近,DBCP连接Oracle,数据库重启后现OALL8 is in an inconsistent state异常. 版本说明 commons-dbcp-1.4.jar commons-pool-1 ...

  8. POJ 2533 Longest Ordered Subsequence 最长递增序列

      Description A numeric sequence of ai is ordered if a1 < a2 < ... < aN. Let the subsequenc ...

  9. 用Maonry如何实现UIScrollView

    一,使用UIScrollView 与其他View 布局不同的地方在于, ScrollView的高度/宽度不固定: ScrollView的高度和宽度由其内容决定(即 Scroll View 的 cont ...

  10. 动手动脑final

    1.回答问题 1. 下边的程序运行结果是什么? 2.   你如何解释会得到这样的输出? 3.   计算机是不会出错的,之所以得到这样的运行结果也是有原因的,那么从这些运行结果中,你能总结出Java的哪 ...