supervisor安装配置与使用

转自:http://blog.csdn.net/zyz511919766/article/details/43967793

supervisor:C/S架构的进程控制系统,可使用户在类UNIX系统中监控、管理进程。常用于管理与某个用户或项目相关的进程。

组成部分

supervisord:服务守护进程

supervisorctl:命令行客户端

Web Server:提供与supervisorctl功能相当的WEB操作界面

XML-RPC Interface:XML-RPC接口

安装

centos平台下可直接用过YUM源安装

yum info supervisor

sudo yum install supervisor

sudo chkconfig supervisord on

服务器启停

sudo /etc/init.d/supervisord {start|stop|status|restart|reload|force-reload|condrestart}

日志

/var/log/supervisor/supervisord.log

配置文件

sudo vim /etc/supervisord.conf

需要重点关注的是以部分

[program:x]中配置要监控的进程

配置样例

[plain] view
plain
 copy

  1. [supervisord]
  2. http_port=/var/tmp/supervisor.sock ; (default is to run a UNIX domain socket server)
  3. ;http_port=127.0.0.1:9001  ; (alternately, ip_address:port specifies AF_INET)
  4. ;sockchmod=0700              ; AF_UNIX socketmode (AF_INET ignore, default 0700)
  5. ;sockchown=nobody.nogroup     ; AF_UNIX socket uid.gid owner (AF_INET ignores)
  6. ;umask=022                   ; (process file creation umask;default 022)
  7. logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log)
  8. logfile_maxbytes=50MB       ; (max main logfile bytes b4 rotation;default 50MB)
  9. logfile_backups=10          ; (num of main logfile rotation backups;default 10)
  10. loglevel=info               ; (logging level;default info; others: debug,warn)
  11. pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
  12. nodaemon=false              ; (start in foreground if true;default false)
  13. minfds=1024                 ; (min. avail startup file descriptors;default 1024)
  14. minprocs=200                ; (min. avail process descriptors;default 200)
  15. ;nocleanup=true              ; (don‘t clean up tempfiles at start;default false)
  16. ;http_username=user          ; (default is no username (open system))
  17. ;http_password=123           ; (default is no password (open system))
  18. ;childlogdir=/tmp            ; (‘AUTO‘ child log dir, default $TEMP)
  19. ;user=chrism                 ; (default is current user, required if root)
  20. ;directory=/tmp              ; (default is not to cd during start)
  21. ;environment=KEY=value       ; (key value pairs to add to environment)
  22. [supervisorctl]
  23. serverurl=unix:///var/tmp/supervisor.sock ; use a unix:// URL  for a unix socket
  24. ;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket
  25. ;username=chris              ; should be same as http_username if set
  26. ;password=123                ; should be same as http_password if set
  27. ;prompt=mysupervisor         ; cmd line prompt (default "supervisor")
  28. ; The below sample program section shows all possible program subsection values,
  29. ; create one or more ‘real‘ program: sections to be able to control them under
  30. ; supervisor.
  31. ;[program:example]
  32. ;command=/bin/echo; the program (relative uses PATH, can take args)
  33. ;priority=999                ; the relative start priority (default 999)
  34. ;autostart=true              ; start at supervisord start (default: true)
  35. ;autorestart=true            ; retstart at unexpected quit (default: true)
  36. ;startsecs=10                ; number of secs prog must stay running (def. 10)
  37. ;startretries=3              ; max # of serial start failures (default 3)
  38. ;exitcodes=0,2               ; ‘expected‘ exit codes for process (default 0,2)
  39. ;stopsignal=QUIT             ; signal used to kill process (default TERM)
  40. ;stopwaitsecs=10             ; max num secs to wait before SIGKILL (default 10)
  41. ;user=chrism                 ; setuid to this UNIX account to run the program
  42. ;log_stdout=true             ; if true, log program stdout (default true)
  43. ;log_stderr=true             ; if true, log program stderr (def false)
  44. ;logfile=/var/log/supervisor.log    ; child log path, use NONE for none; default AUTO
  45. ;logfile_maxbytes=1MB        ; max # logfile bytes b4 rotation (default 50MB)
  46. ;logfile_backups=10          ; # of logfile backups (default 10)

“;”为注释。各参数的含义都很明确。可以根据官方手册结合实验来进一步深入了解。重点说几个[program:example]中的参数

[plain] view
plain
 copy

  1. ;command=/bin/echo;         supervisor启动时将要开启的进程。相对或绝对路径均可。若是相对路径则会从supervisord的$PATH变中查找。命令可带参数。
  2. ;priority=999                   指明进程启动和关闭的顺序。低优先级表明进程启动时较先启动关闭时较后关闭。高优先级表明进程启动时启动时较后启动关闭时较先关闭。
  3. ;autostart=true                 是否随supervisord启动而启动
  4. ;autorestart=true               进程意外退出后是否自动重启
  5. ;startsecs=10                   进程持续运行多久才认为是启动成功
  6. ;startretries=3                 重启失败的连续重试次数
  7. ;exitcodes=0,2                  若autostart设置为unexpected且监控的进程并非因为supervisord停止而退出,那么如果进程的退出码不在exitcode列表中supervisord将重启进程
  8. ;stopsignal=QUIT                杀进程的信号
  9. ;stopwaitsecs=10                向进程发出stopsignal后等待OS向supervisord返回SIGCHILD 的时间。若超时则supervisord将使用SIGKILL杀进程

一个Rabbitmq项目中生产者和消费者进程使用supervisor监控的配置情况:(配置中的其他部分略)

[plain] view
plain
 copy

  1. </pre><p><pre name="code" class="plain">[program:worker_for_summary]
  2. command=/home/op1/scripts/rabbitmqclient/worker_for_summary.py
  3. priority=1
  4. log_stderr=true             ; if true, log program stderr (def false)
  5. [program:worker_for_detail_all]
  6. command=/home/op1/scripts/rabbitmqclient/worker_for_detail_all.py
  7. priority=1
  8. log_stderr=true             ; if true, log program stderr (def false)
  9. [program:worker_for_detail_recent_list]
  10. command=/home/op1/scripts/rabbitmqclient/worker_for_detail_recent_list.py
  11. priority=1
  12. log_stderr=true             ; if true, log program stderr (def false)
  13. [program:worker_for_detail_recent_sset]
  14. command=/home/op1/scripts/rabbitmqclient/worker_for_detail_recent_sset.py
  15. priority=1
  16. log_stderr=true             ; if true, log program stderr (def false)
  17. [program:publisher_for_summary]
  18. command=/home/op1/scripts/rabbitmqclient/publisher_for_summary.py
  19. priority=999
  20. log_stderr=true             ; if true, log program stderr (def false)
  21. [program:publisher_for_summary_nt]
  22. command=/home/op1/scripts/rabbitmqclient/publisher_for_summary_nt.py
  23. priority=999
  24. log_stderr=true             ; if true, log program stderr (def false)
  25. [program:publisher_for_detail]
  26. command=/home/op1/scripts/rabbitmqclient/publisher_for_detail.py
  27. priority=999
  28. log_stderr=true             ; if true, log program stderr (def false)
  29. [program:publisher_for_detail_nt]
  30. command=/home/op1/scripts/rabbitmqclient/publisher_for_detail_nt.py
  31. priority=999
  32. log_stderr=true             ; if true, log program stderr (def false)

配置完成后启动supervisord

[plain] view
plain
 copy

  1. sudo /etc/init.d/supervisord start

可以看到配置的各个进程在后台运行了起来。

停掉某个进程后supervisor会马上重启该进程

停止supervisor

[plain] view
plain
 copy

  1. sudo /etc/init.d/supervisord stop

可以看到配置的各个进程都停止运行了。

可以通过supervisorctl查看管理监控的进程情况:

[plain] view
plain
 copy

  1. [[email protected] ~]$ sudo supervisorctl
  2. publisher_for_detail RUNNING    pid 27557, uptime 0:00:45
  3. publisher_for_detail_nt RUNNING    pid 27567, uptime 0:00:45
  4. publisher_for_summary RUNNING    pid 27566, uptime 0:00:45
  5. publisher_for_summary_nt RUNNING    pid 27568, uptime 0:00:45
  6. worker_for_detail_all RUNNING    pid 27581, uptime 0:00:45
  7. worker_for_detail_recent RUNNING    pid 27582, uptime 0:00:45
  8. worker_for_summary RUNNING    pid 27559, uptime 0:00:45
  9. #可通过help了解命令的更多用法
  10. supervisor> help
  11. Documented commands (type help <topic>):
  12. ========================================
  13. EOF    exit  maintail  quit    restart   start   stop
  14. clear  help  open      reload  shutdown  status  tail
  15. supervisor> help stop
  16. stop <processname>            Stop a process.
  17. stop <processname> <processname>    Stop multiple processes
  18. stop all                Stop all processes
  19. When all processes are stopped, they are stopped in
  20. reverse priority order (see config file)
  21. supervisor> help status
  22. status          Get all process status info.
  23. status <name>     Get status on a single process by name.
  24. status <name> <name>    Get status on multiple named processes.
  25. #停止某个进程
  26. supervisor> stop publisher_for_summary
  27. publisher_for_summary: stopped
  28. #查看此时此刻的状态
  29. supervisor> status
  30. publisher_for_detail RUNNING    pid 27557, uptime 0:05:41
  31. publisher_for_detail_nt RUNNING    pid 27567, uptime 0:05:41
  32. publisher_for_summary STOPPED    Feb 27 02:48 PM
  33. publisher_for_summary_nt RUNNING    pid 27568, uptime 0:05:41
  34. worker_for_detail_all RUNNING    pid 27581, uptime 0:05:41
  35. worker_for_detail_recent RUNNING    pid 27582, uptime 0:05:41
  36. worker_for_summary RUNNING    pid 27559, uptime 0:05:41
  37. #发现被supervisorctl停掉的进程不会被自动重启
  38. #开启刚才停掉的进程
  39. supervisor> start publisher_for_summary
  40. publisher_for_summary: started
  41. supervisor> status
  42. publisher_for_detail RUNNING    pid 27557, uptime 0:08:02
  43. publisher_for_detail_nt RUNNING    pid 27567, uptime 0:08:02
  44. publisher_for_summary RUNNING    pid 3035, uptime 0:00:04
  45. publisher_for_summary_nt RUNNING    pid 27568, uptime 0:08:02
  46. worker_for_detail_all RUNNING    pid 27581, uptime 0:08:02
  47. worker_for_detail_recent RUNNING    pid 27582, uptime 0:08:02
  48. worker_for_summary RUNNING    pid 27559, uptime 0:08:02
  49. #停掉所有进程
  50. supervisor> stop all
  51. worker_for_detail_recent: stopped
  52. worker_for_detail_all: stopped
  53. publisher_for_summary_nt: stopped
  54. publisher_for_detail_nt: stopped
  55. publisher_for_summary: stopped
  56. worker_for_summary: stopped
  57. publisher_for_detail: stopped
  58. supervisor> status
  59. publisher_for_detail STOPPED    Feb 27 02:51 PM
  60. publisher_for_detail_nt STOPPED    Feb 27 02:51 PM
  61. publisher_for_summary STOPPED    Feb 27 02:51 PM
  62. publisher_for_summary_nt STOPPED    Feb 27 02:51 PM
  63. worker_for_detail_all STOPPED    Feb 27 02:51 PM
  64. worker_for_detail_recent STOPPED    Feb 27 02:51 PM
  65. worker_for_summary STOPPED    Feb 27 02:51 PM
  66. #开启所有进程
  67. supervisor> start all
  68. publisher_for_detail: started
  69. worker_for_summary: started
  70. publisher_for_summary: started
  71. publisher_for_detail_nt: started
  72. publisher_for_summary_nt: started
  73. worker_for_detail_all: started
  74. worker_for_detail_recent: started
  75. supervisor> status
  76. publisher_for_detail RUNNING    pid 5111, uptime 0:00:15
  77. publisher_for_detail_nt RUNNING    pid 5141, uptime 0:00:15
  78. publisher_for_summary RUNNING    pid 5135, uptime 0:00:15
  79. publisher_for_summary_nt RUNNING    pid 5147, uptime 0:00:15
  80. worker_for_detail_all RUNNING    pid 5153, uptime 0:00:15
  81. worker_for_detail_recent RUNNING    pid 5159, uptime 0:00:14
  82. worker_for_summary RUNNING    pid 5112, uptime 0:00:15

更多内容请参考官方手册

http://supervisord.org/

时间: 2024-10-12 19:51:01

supervisor安装配置与使用的相关文章

Linux 后台进程管理器 supervisor 安装配置(使用httpd来做被监控进程)

在linux服务需要可靠的运行,并且服务exit后,需要自动重新启动起来,还可以监控进程状态,supervisor就是个不错的选项,supervisor是用python开发的一个进程管理器.下面是安装配置过程. 1.安装supervisor easy_install supervisor     SetupTool安装方法 apt-get install supervisor    Debian/Ubuntu安装方法 yum install supervisor     RedHat/Cento

【资料整理】supervisor安装配置

supervisor 安装 [[email protected] download]# wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py -O - | python [[email protected] download]# easy_install supervisor [[email protected] download]# echo_supervisord_conf > /etc/supervisor

supervisor 安装配置

Supervisor介绍 Supervisor 允许其用户在UNIX类操作系统上控制多个进程. 块如下: 方便 需要为每个进程实例编写rc.d脚本通常是不方便的. rc.d脚本是进程初始化/自动启动/管理的常用形式,但写入和维护可能会很痛苦.此外,rc.d脚本不能自动重新启动崩溃的进程,并且许多程序在崩溃时不会正常重新启动.Supervisord启动进程作为其子进程,并可以配置为在崩溃时自动重新启动它们.它也可以自动配置为在其自身的调用中启动进程. 准确性 在UNIX上的进程通常很难获得准确的上

supervisor安装配置

系统环境: CentOS7 supervisor版本:supervisor-3.1.4-1.el7.noarch 安装: yum -y install supervisor 启动服务: supervisord -c /etc/supervisord.conf 用systemctl管理supervisord服务 进入目录 /usr/lib/systemd/system/,增加文件 supervisord.service,来使得机器启动的时候启动supervisor,文件内容 # superviso

supervisor 安装配置实战

1·Supervisor介绍Supervisor是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统.它可以很方便的监听.启动.停止.重启一个或多个进程.用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制.这个工具主要就两个命令: supervisord : supervisor的服务器端部

supervisor安装及其配置

一.supervisor概述 supervisor是一个c/s系统,被用来在类Unix系统中监控进程状态.supervisor使用python开发. 服务端进程为supervisord,主要负责启动自身及其监控的子进程,响应客户端命令,重启异常退出的子进程,记录子进程stdout和stderr输出,生成和处理子进程生命周期中的事件.其配置文件一般为/etc/supervisord.conf,可以在配置文件中配置相关参数,包括supervisord自身的状态,其管理的各个子进程的相关属性等.sup

supervisor安装和配置指南

supervisor:是用python写的一个进程管理工具,用来启动,重启,关闭进程.注意:Supervisor只能管理非daemon的进程,也就是说Supervisor不能管理守护进程.否则提示Exited too quickly (process log may have details)异常.好比Tomcat默认是以守护进程启动的,所以要改成了catalina.sh run,以前台进程的方式运行,关于守护进程和非daemon进程这里不做详细讲解,可自行百度.具体关于supervisor的相

mac下supervisor安装及简单配置

supervisor是一个用 Python 写的进程管理工具,可以很方便的用来启动.重启.关闭进程(守护进程).可以用他来管理自己的"服务程序". 安装 首先安装Python,Mac系统好像自带. 执行 sudo pip install supervisor 安装 安装pip 下载get-pip.py,然后执行.具体请查看文档 $ wget https://raw.githubusercontent.com/pypa/pip/master/contrib/get-pip.py ...

Storm on Yarn 安装配置

1.背景知识 在不修改Storm任何源代码的情况下,让Storm运行在YARN上,最简单的实现方法是将Storm的各个服务组件(包括Nimbus和Supervisor),作为单独的任务运行在YARN上,当前比较有名的“Storm On YARN”实现是由yahoo!开源的,它基本实现了上述描述的功能,下面具体进行说明:(1) YARN-Storm Client提供了一系列Shell命令供用户控制YARN上的Storm服务,比如构建一个Storm集群命令如下:storm-yarn launch <