1. Supervisor 简介
Supervisor 是一个用 Python 编写的客户端 / 服务器系统,用于在类 Unix 操作系统上监控和控制多个进程。它为管理和守护进程提供了强大且便捷的解决方案,在生产环境中广泛应用于保证服务的高可用性和稳定性。
1.1. 主要特点
- 进程监控:Supervisor 可以实时监控其所管理进程的状态,如运行、停止、异常退出等。一旦进程出现异常,它能够根据预设的规则采取相应的措施,例如自动重启进程,从而减少人工干预,提高系统的可靠性。
- 进程管理:可以方便地启动、停止和重启所管理的进程。通过简单的命令或配置文件,就能对多个进程进行集中管理,大大提高了管理效率。
- 日志管理:Supervisor 可以捕获和管理进程的标准输出(stdout)和标准错误输出(stderr),将日志存储到指定的文件中,便于后续的故障排查和系统审计。
- 配置灵活:通过配置文件,可以对每个进程进行详细的配置,包括启动命令、工作目录、环境变量、重启策略等,满足不同应用场景的需求。
1.2. 基本组件
- supervisord:守护进程,负责读取配置文件,启动、监控和管理所配置的进程。它在后台持续运行,是整个 Supervisor 系统的核心。
- supervisorctl:命令行客户端工具,用于与
supervisord
进行交互。可以使用它来启动、停止、重启进程,查看进程状态,以及对supervisord
进行配置重载等操作。 - Web 界面(可选):Supervisor 还提供了一个可选的 Web 界面,通过浏览器可以方便地对进程进行管理和监控,适合非技术人员进行操作。
2. supervisor安装
2.1. supervisor3.4.0安装
#yum默认安装的是3.4.x
yum install -y epel-release
yum -y install supervisor
#1 查看安装的版本
]# supervisord --version
3.4.0
2.2. supervisor4.2.0安装
#1. 在 CentOS 7.9 上安装 Python 3 和 pip3,然后通过 pip3 安装 Supervisor 4.2.0 的详细步骤如下:
yum install -y epel-release
yum install -y python3
# 检查 Python 3 是否安装成功
python3 --version
# 安装 pip3(Python 3 的包管理工具)
yum install -y python3-pip
# 检查 pip3 是否安装成功
pip3 --version
#2. 使用 pip3 安装 Supervisor 4.2.0
pip3 install supervisor==4.2.0
# 验证 Supervisor 是否安装成功
supervisord --version
3. 配置 Supervisor
安装完成后,你需要创建一个 supervisord.conf 配置文件来定义 Supervisor 将要管理的进程。
你可以通过运行以下命令来生成一个默认的配置文件,并根据需要进行编辑:
echo_supervisord_conf > /etc/supervisord.conf
#4. 添加systemd文件,开机自启动 Supervisor
vim /etc/systemd/system/supervisord.service
[Unit]
Description=Supervisor process control system
Documentation=http://supervisord.org
After=network.target
[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisord.conf
ExecStop=/usr/bin/supervisorctl shutdown
ExecReload=/usr/bin/supervisorctl reload
KillMode=process
Restart=on-failure
RestartSec=5s
PIDFile=/var/run/supervisord.pid
[Install]
WantedBy=multi-user.target
#5 使systemd文件生效,设置开机自启动,启动服务
systemctl daemon-reload
3. supervisord服务启动管理
#1.服务启动管理
systemctl enable supervisord #开机自启动
systemctl start supervisord #启动服务
systemctl stop supervisord #停止服务
systemctl restart supervisord #重启服务
4. supervisor配置文件
supervisor分为主配置文件和子配置文件,supervisor服务器相关的配置写入supervisord.conf中,监控的各个进程的配置,按照进程名存在 supervisord.d/ 目录下。(这个可以在supervisord.conf中的[include]部分下配置)
4.1. 主配置文件
主配置文件:/etc/supervisord.conf
查看supervisord.conf最后的[include]配置,若不同请修改,以支持子配置文件,而不用改动主配置文件。
vim supervisord.conf
[include]
files = supervisord.d/*.ini
supervisord.conf 配置解析,以下配置为标准配置
[unix_http_server]
file=/var/run/supervisor/supervisor.sock ; UNIX socket 文件,supervisorctl 会使用
;chmod=0700 ; socket 文件的 mode,默认是 0700
;chown=nobody:nogroup ; socket 文件的 owner,格式: uid:gid
;[inet_http_server] ; HTTP 服务器,提供 web 管理界面
;port=127.0.0.1:9001 ; Web 管理后台运行的 IP 和端口,如果开放到公网,需要注意安全性
;username=user ; 登录管理后台的用户名
;password=123 ; 登录管理后台的密码
[supervisord]
logfile=/var/log/supervisor/supervisord.log ; 日志文件,默认是 $CWD/supervisord.log
logfile_maxbytes=50MB