Supervisor是一款专注于进程管理与监控的工具,由Geoffrey Talvola开发,采用Python语言编写,尤其适合在类UNIX系统(像Linux和macOS)中使用。Supervisor设计初衷是为了简化进程管理流程,确保即便进程出现崩溃或意外退出的情况,也能自动将其重启,进而保障系统的稳定性和服务的持续运行。
一、Supervisor特点
由于Linux操作系统本身就内置了Python运行环境,而且Supervisor没有过多的第三方依赖包,整个离线源码安装压缩包仅500k左右,因此使用和安装门槛较低,无需我们为安装该软件投入过多精力或引入额外的第三方依赖。
Supervisor拥有大量的使用者,开源项目活跃度高,当遇到问题时,很容易就能搜索到相关资料,避免了用户独自摸索、踩坑的情况。项目成熟度高,经过了市场的长期验证,大家可以放心使用。
二、Supervisor安装教程
1、Supervisor在线安装
(1)pip安装:
pip install supervisor
(2)centos yum安装
yum install epel-release -y
再执行:
yum install supervisor -y。
2、Supervisor离线安装
在pypi上搜索supervisor包并下载源码包,地址为:
https://files.pythonhosted.org/packages/ce/37/517989b05849dd6eaa76c148f24517544704895830a50289cbbf53c7efb9/supervisor-4.2.5.tar.gz
或也可通过wget命令下载:
“https://files.pythonhosted.org/packages/ce/37/517989b05849dd6eaa76c148f24517544704895830a50289cbbf53c7efb9/supervisor-4.2.5.tar.gz”
运行python3 setup.py install进行安装。若过程中提示缺少某些package,补充相应package即可。这些package的安装方式类似,也是下载源码包后通过python执行setup.py安装。
三、Supervisor基本架构说明
Supervisor运行架构以客户端/服务器(Client/Server)模型为基础,核心组件包括supervisord守护进程、supervisorctl客户端工具,此外还提供了一个HTTP服务器,用于远程管理和监控。
1、supervisord服务端
supervisord是Supervisor的核心组件,作为守护进程在服务器上运行,主要职责如下:
(1)读取配置文件:从配置文件中获取被监控进程的列表及相关参数。
(2)管理进程:启动、停止和重启配置文件中定义的进程。
(3)监控进程状态:实时监视进程的运行状态,一旦进程因某种原因退出,会根据配置自动重启。
(4)日志管理:收集被监控进程的输出,并将其重定向到日志文件。
(5)事件通知:当进程状态发生变化时,能够触发预定义的事件处理程序。
2、supervisorctl客户端
supervisorctl是一款命令行工具,作为客户端与supervisord守护进程进行通信,可执行以下操作:
(1)管理进程:实现进程的启动、停止、重启,并能显示进程状态。
(2)配置管理:在不重启supervisord的情况下更新配置文件。
(3)事件管理:查看和管理事件处理程序。
(4)连接服务端:通过与supervisord建立RPC连接来发送命令和接收响应,因此只要网络可达且权限合适,可在任何地方对supervisord进行管理。
四、Supervisor使用教程
启动supervisord守护进程,启动后默认在后台运行,并监听一个本地socket文件。主配置文件默认位于/ect/supervisord/supervisord.conf,我们通常在supervisord.d目录下定义管理进程的.ini配置文件,文件格式大致如下:
[program:mysql] # mysql,程序名称
directory = /data/mysql/ # 程序所处工作路径
command=/data/mysql/bin/mysqld # 程序启动完整命令
autostart=true # 是否挂掉后自动拉起
autorestart=true # 是否挂掉后自动拉起
startretries=3 #重试拉起次数
startsecs=20 #多少秒后没挂,认为程序是正常运行的
redirect_stderr=true #是否重定向错误输出到标准输出
stdout_logfile=/data/mysql/supervisor-run.log #标准输出日志路径
1、执行supervisorctl reread重新读取新的配置信息。
2、运行supervisor update mysql启动托管的mysql任务。
3、输入supervisor status查看任务运行情况。
此时若进程意外退出,比如手动执行kill -9 $pid,过一会儿会发现该进程会被supervisor重新拉起,从而保证进程的正常运行。
五、supervisorctl常见子命令详解
1、start/stop/restart/status
start用于启动任务、stop用于停止任务、restart用于重启任务、status用于查看任务运行状态列表。
针对单个任务:
supervisorctl start mysql
supervisorctl stop mysql
supervisorctl restart mysql
针对所有任务:
supervisorctl stop all
查看托管的程序运行状态列表:
supervisorctl status
2、update
该命令用于更新Supervisor的配置,并重启所有需要重启的进程,通常在更改配置文件后使用:
supervisorctl update mysql
3、Reread
重新读取配置文件,但不会重启任何进程,一般用于检查配置文件的更改是否有效:
supervisorctl reread
4、reload
结合了reread和update的功能,重新读取配置文件并更新进程:
supervisorctl reload
5、remove
用于移除对一个或多个进程的监控:
supervisorctl remove mysql
6、tail
显示进程的最近日志输出,其中-f表示跟随日志的实时输出:
supervisorctl tail -f myapp
-
广告合作
-
QQ群号:4114653




