目录
一、Supervisor介绍
Supervisor是一个开源的进程管理工具,主要用于在类Unix系统(包括Linux和macOS等)上监控和管理长时间运行的进程(守护进程)。Supervisor通过一个简易的INI风格的配置文件提供了诸多针对单个进程的选项进行配置,比如自动重启失败的进程和自动日志轮转。同时,Supervisor还提供本地或远程的命令行和Web界面来启动、停止和监控进程。
二、核心组件
2.1 supervisord
Supervisor 的服务器组件。主要负责在其启动时启动子程序,响应来自客户端的命令,重启崩溃或退出的子进程,记录其子进程的标准输出和标准错误输出,以及生成和处理对应子进程生命周期各个阶段的“事件”。
2.2 supervisorctl
Supervisor 的命令行客户端组件。提供了一个类似shell的界面,用于访问supervisord提供的功能。从supervisorctl,用户可以连接到不同的supervisord进程(一次一个),获取受其控制的子进程状态,停止和启动supervisord的子进程,以及获取正在运行的进程列表。
2.3 Web Server
通过启动supervisord以互联网套接字为目标,可以使用一个(功能精简的)基于Web的用户界面,其功能与supervisorctl相似,可以通过浏览器访问。
三、安装Supervisor
3.1安装要求
- Supervisor已经在多个操作系统上进行了测试,它在大多数UNIX系统上都能正常工作
- Supervisor完全不支持在任何版本的Windows下运行
- Supervisor设计为能在Python 3.4或更高版本,以及Python 2.7版本上工作
3.2安装方式
Supervisor 可以安装:pip install
pip install supervisor
yum 安装 supervisor
yum -y install epel-release
yum -y install supervisor
3.3 修改Web Server端口(可选)
vi /etc/supervisord.conf
[inet_http_server] ; inet (TCP) server disabled by default
port=*:9001 ; (ip_address:port specifier, *:port for all iface)
username=admin ; (default is no username (open server))
password=123456 ; (default is no password (open server))
3.4启动服务
systemctl enable supervisord # 开机自启动
systemctl start supervisord # 启动 supervisord 服务systemctl restart supervisord 重启服务
systemctl status supervisord # 查看 supervisord 服务状态
ps -ef|grep supervisord # 查看是否存在 supervisord 进程
四、Supervisor常用命令
4.1 supervisord 命令行选项
supervisord [选项]
4.2 supervisorctl 命令行选项
supervisorctl [选项]
五、监控服务
以监控mysql服务为例。
5.1 创建进程管理配置文件
vi /etc/supervisord.d/mysqld.ini
[program:mysqld]
command=/usr/sbin/mysqld
directory=/var/lib/mysql
user=mysql
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/var/log/mysqld_supervisor.log
5.2 重新加载配置文件
sudo supervisorctl reread
5.3 管控服务
sudo supervisorctl start mysqld
sudo supervisorctl stop mysqld
sudo supervisorctl restart mysqldsudo supervisorctl status mysqld