目录
一、Supervisor介绍
二、核心组件
2.1 supervisord
2.2 supervisorctl
2.3 Web Server
三、安装Supervisor
3.1安装要求
3.2安装方式
3.3 修改Web Server端口(可选)
3.4启动服务
四、Supervisor常用命令
4.1 supervisord 命令行选项
4.2 supervisorctl 命令行选项
五、监控服务
5.1 创建进程管理配置文件
5.2 重新加载配置文件
5.3 管控服务
一、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