目录
一、基础知识
0.1、什么是Supervisor?
Supervisor是由python语言编写的一款服务器管理工具,用以监控服务器的运行,发现问题能立即自动预警及自动重启等功能。可以运行在大多数类UNIX系统上,比如Linux、MAC OS X、Solaris、FreeBSD。
除了对单个进程的控制,还可以同时启动、关闭多个进程,比如很不幸的服务器出问题导致所有应用程序都被杀死,此时可以用 Supervisor 同时启动所有应用程序而不是一个一个地敲命令启动。
Supervisor目前支持Python2.4以及之后的版本,但不支持Python3。
0.2、Supervisor的特性
简单
Supervisor通过INI格式配置文件进行配置,很容易掌握,它为每个进程提供了很多配置选项,可以使你很容易的重启进程或者自动的轮转日志。
统一
Supervisor提供了一种统一的方式来start、stop、monitor你的进程,进程可以单独控制,也可以成组的控制。你可以在本地或者远程命令行或者web接口来配置Supervisor。
有效
Supervisor通过fork/exec启动它的子进程,子进程并不是守护进程。当一个进程终止的时候,操作系统会立即给Supervisor发送一个信号,而不是像其他解决方案依赖PID文件。
可扩展
Supervisor包含一个简单的事件通知协议,因此任何程序都可以监控它,而且提供一个XML-RPC控制接口。
0.3、Supervisor有哪些组件?
Supervisord
服务会启动Supervisord服务,它负责调用自己启动子程序,响应来自客户端的命令,重启crash或者退出的进程,记录进程的输出信息,收集事件信息。该服务的配置文件在/etc/supervisor/supervisord.conf。
Supervisorctl
客户端的命令行工具,提供一个类shell接口,通过它你可以连接到不同的supervisord进程上来管理它们各自的子程序。客户端命令通过UNIX socket或者TCP来和服务通讯,服务端可以要求客户端提供身份验证之后才能进行操作([supervisorctl])。
Web Server
一个小的web接口被集成进了supervisorctl,重启supervisord之后就可以访问了([inet_http_server])。
XML-RPC Interface:
就像HTTP提供WEB UI一样,同时还提供了XML-RPC接口来控制supervisor和由它运行的程序。
0.4、Supervisor的官网在哪里?
0.5、如何安装?
在官网中介绍 Supervisor 支持以下几种安装方法:
- easy_install
easy_install supervisor
- pip
pip install supervisor
- apt-get (Debian/Ubuntu)
apt-cache show supervisor
apt-get update
apt-get install supervisor
- yum(CentOS)
yum info supervisor
apt-get install supervisor
- brew(Mac OS)
➜ /Users/lion >brew install supervisor
==> Downloading > https://homebrew.bintray.com/bottles/supervisor-3.2.1.yosemite.bottle.tar.gz
######################################################################## 100.0%
==> Pouring supervisor-3.2.1.yosemite.bottle.tar.gz
==> Caveats
To have launchd start supervisor at login:
ln -sfv /usr/local/opt/supervisor/*.plist ~/Library/LaunchAgents
Then to load supervisor now:
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.supervisor.plist
Or, if you don't want/need launchctl, you can just run:
supervisord -c /usr/local/etc/supervisord.ini
==> Summary
/usr/local/Cellar/supervisor/3.2.1: 107 files, 1.3M
二、使用Supervisor对系统进程进行管理
0.1、Supervisord的配置文件
在Mac下使用brew安装完以后,可以看到,文件是安装到了/usr/local/Cellar/supervisor/3.2.1目录下面。
安装完以后,我们可以使用 echo_supervisord_conf 命令查看配置项,也可以将配置项保存到文件中
➜ /usr/local/Cellar/supervisor/3.2.1 git:(master)>echo_supervisord_conf > supervisord.ini
去掉注释和不相关的部分,我们可以看下配置文件的内容(部分注释被我修改过):
➜ /usr/local/Cellar/supervisor/3.2.1 git:(master)>cat supervisord.ini
[unix_http_server]
file=/usr/local/var/run/supervisor.sock ; UNIX socket 文件,supervisorctl 会使用
;chmod=0700 ; socket 文件的 mode,默认是 0700
;chown=nobody:nogroup ; socket的拥有者和组名
;username=user ; 默认不需要登陆用户 (open server)
;password=123 ; 默认不需要登陆密码 (open server)
;[inet_http_server]