天天看点

进程监控工具supervisor配置supervisor使用supervisorctl

supervisor是一个python编写的进程管理工具, 可以方便的管理和监控进程. supervisor分为服务端supervisord和客户端supervisorctl.

supervisor由python编写, 可以使用pip安装:

pip install supervisor
           

也可以使用apt-get来安装:

apt-get install supervisor
           

配置supervisor

/etc/supervisor

目录下可以看到supervisord的主要配置文件

supervisord.conf

:

; supervisor config file

[unix_http_server]
file=/var/run/supervisor.sock   ; (the path to the socket file)
chmod=0700                       ; sockef file mode (default 0700)

[supervisord]
logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log)
pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
childlogdir=/var/log/supervisor            ; ('AUTO' child log dir, default $TEMP)


[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 = /etc/supervisor/conf.d/*.conf
           

为了便于管理, 我们将需要监控的进程写入

/etc/supervisor/conf.d/*.conf

中, 这些配置文件将被导入主配置文件.

新建一个blog.conf文件:

[program:blog]
directory=/home/www/Blog
command=uwsgi --ini wsgi.ini
user=www
autostart=true
autorestart=true
stdout_logfile=/home/www/Blog/log/supervisor.log
           

在启动blog子进程时supervisord会以user的身份在directory目录下执行command命令以启动子进程. 一般情况下, 每个program配置都要设置这三项.

autostart=true

表示在supervisord启动时该子进程会自动启动. 在服务器重启后只需要重启supervisord, 不再需要一个一个地启动进程.

autoresatrt=trus

表示若该子进程崩溃, supervisor会自动重启该进程.

使用supervisorctl

supervisorctrl客户端可以查看子进程的状态并进行控制:

  • supervisorctl status

    查看各子进程运行状态
  • supervisorctl start <program>

    根据program配置启动相应的子进程
  • supervisorctl stop <program>

    停止子进程
  • supervisorctl restart <program>

    重启子进程
  • supervisorctl reread

    重新读入配置文件, 但不会增加新的程序
  • supervisorctl update

    根据新读入配置文件, 更新程序配置

需要注意的一点是supervisor更新配置文件比较麻烦, 更新原有程序的配置需要

reread - update - restart

三个操作, 而添加新程序也需要

reread - update - start

.