一、简介
Supervisor是一个进程控制系统,它使用户能够监视和控制类unix操作系统进程。它通过提供基于配置或事件启动、停止和重新启动进程的机制,帮助管理应该在系统中连续运行的进程。对于需要控制和监视Linux或其他类unix操作系统上多个进程的状态的开发人员和系统管理员来说,Supervisor特别有用。
监督程序通常作为后台守护进程运行,并充当负责管理多个进程的集中实体。它可用于管理各种类型的进程,例如web服务器、数据库服务器、任务队列和自定义应用程序。
在UNIX上,通常很难获得进程的准确的上/下状态。Pidfiles经常说谎。Supervisord将进程作为子进程启动,因此它总是知道其子进程的真正up/down状态,并且可以方便地查询这些数据。
Supervisor特性:
-
简单:Supervisor是通过一个简单的ini风格的配置文件来配置的,它很容易学习。它提供了许多每个进程的选项,如重新启动失败的进程和自动日志轮换。
-
集中管理:Supervisor提供了一个启动、停止和监视进程的位置。进程可以单独控制,也可以分组控制。也可以配置Supervisor提供本地或远程命令行和web界面。
-
高效:Supervisor通过fork/exec启动它的子进程,子进程不被daemon化。当进程终止时,操作系统会立即向Supervisor发送信号,不像某些解决方案依赖麻烦的PID文件和定期轮询来重新启动失败的进程。
-
可扩展性:Supervisor有一个简单的事件通知协议,用任何语言编写的程序都可以用它来监视它,还有一个用于控制的XML-RPC接口。它还使用扩展点构建,Python开发人员可以利用这些扩展点。
-
兼容性:除了Windows, Supervisor几乎可以在所有设备上工作。它在Linux、Mac OS X、Solaris和FreeBSD上进行了测试和支持。它完全用Python编写,因此安装不需要C编译器。
Supervisor的主要功能包括:
-
进程控制:Supervisor可以启动、停止和重新启动进程。它确保指定的进程正在运行,如果它们意外崩溃或终止,它可以自动重新启动它们。
-
监视:Supervisor不断地监视被管理流程的状态。它可以跟踪进程是否正在运行、是否已退出或是否遇到任何错误。这种监视功能允许Supervisor根据进程状态采取适当的操作。
-
日志记录和输出捕获:Supervisor捕获子进程的标准输出和标注错误流。这样就可以存储和分析日志,帮助进行故障排除和调试。
-
配置管理:Supervisor通常提供配置文件或配置管理系统来定义要管理的进程、启动参数和其他相关设置。这允许从一个中心位置轻松地管理和配置多个进程。
-
Web界面和命令行:Supervisor提供基于web的用户界面和命令行界面,用于管理和监控进程。
-
分组:它允许对可以一起控制的进程进行分组,这在管理包含多个部分的微服务或应用程序时非常有用。
-
事件通知:当被管理进程的状态发生变化时,Supervisor可以发出事件,这些事件可用于与其他监视或警报系统集成。
Supervisor组件
- supervisord:Supervisor的服务器部分被命名为supervisord。它负责在自己的调用时启动子程序,响应来自客户端的命令,重新启动崩溃或退出的子进程,记录其子进程的标准输出和标准错误输出,以及生成和处理与子进程生命周期中的的“事件”。
服务器进程使用配置文件。它通常位于/etc/supervisord.conf文件中。这个配置文件是一个“Windows-INI”风格的配置文件。通过适当的文件系统权限来保证这个文件的安全是很重要的,因为它可能包含未加密的用户名和密码。
-
supervisorctl:Supervisor的命令行客户端部分命名为supervisorctl。它为supervisord提供的特性提供了一个类似shell的接口。通过supervisorctl,用户可以连接到不同的supervisord进程(一次一个),获取被控制的子进程的状态,停止和启动子进程,以及获取正在运行的supervisord进程的列表。
-
Web Server:启用internet socket,则可以通过浏览器访问Web用户界面。启用配置文件的[inet_http_server]部分后,访问服务器URL(例如http://localhost:9001/),通过web界面查看和控制进程状态。
-
XML-RPC Interface:提供web UI的同一个HTTP服务器同时提供了一个XML-RPC接口,该接口可用于查询和控制管理程序及其运行的程序。
二、安装方法
- 通过pip安装
pip install supervisor
- Linux Debian系
sudo apt-get install supervisor
- Linux CentoOS系
sudo yum install -y supervisor
- MacOS
brew install supervisor
- Windows不支持
Supervisor的发布包的一个特点是,它们通常已经集成到发布的服务管理基础设施中,例如,允许在系统启动时自动启动Supervisor,一般都自动配置到了systemd服务中。
如果没有自动创建配置文件,则使用如下命令创建:
echo_supervisord_conf > /etc/supervisord.conf
echo_supervisord_conf 会打印supervisord的配置信息,然后写到/etc/supervisord.conf中
三、运行supervisord
supervisord
supervisord默认会作为守护进程来运行,运行的日志可以在supervisor.log中查看,也可以通过 -n 选项来指定supervisord在前台运行,一般用于查看debug信息。
supervisord的常用的命令行选项有:
-
-c [FILE], --configuration=[FILE]:指supervisord使用的配置文件。 -
-n, --nodaemon:在前台运行。 -
-s, --silent:静音模式,没有输出定向到标准输出。 -
-h, --help:打印帮助信息。 -
-d [PATH], --directory=[PATH]:当supervisord作为守护进程运行时,在守护进程之前切换到该目录。 -
-l FILE, --logfile=FILE:指定supervisord的日志文件路径。 -
-y BYTES, --logfile_maxbytes=BYTES:轮换发生前 Supervisord 活动日志文件的最大大小。该值是后缀相乘的,例如“1”是一个字节,“1MB”是 1 MB,“1GB”是 1 GB。 -
-z NUM, --logfile_backups=NUM:要保留的 Supervisord 活动日志的备份副本数量。每个日志文件的大小为 logfile_maxbytes。 -
-e LEVEL, --loglevel=LEVEL:日志记录级别,分别有:trace, debug, info, warn, error, critical。 -
-j FILE, --pidfile=FILE:Supervisord 应将其 pid 文件写入的文件名。 -
-i STRING, --identifier=STRING:此Supervisor实例的各种客户端 UI 公开的任意字符串标识符。 -
-a NUM, --minfds=NUM:在成功启动之前,supervisord 进程必须可用的文件描述符的最小数量。 -
-v, --version:打印版本号 -
--minprocs=NUM:在成功启动之前,supervisord 进程必须可用的操作系统进程槽的最小数量。
四、Supervisorctl
常用的命令行选项
-
-c, --c

本文详细介绍了Supervisor进程控制系统,它可监视和控制类Unix操作系统进程,具有简单、集中管理等特性。文中涵盖其安装方法、运行命令、组件功能,还对配置文件各部分及子进程状态进行说明,同时提及日志管理和官方文档等内容。
最低0.47元/天 解锁文章
1973

被折叠的 条评论
为什么被折叠?



