Supervisor 进程管理工具
supervisor 是使用Python 语言开发的进程管理工具;目前只能在 unix 系统中使用。
Supervisor 进程管理工具可以对单个或者多个进程进行统一管理,如启动、重启、停止进程。更重要的作用是能在进程因为某种原因崩溃时,做到自动重启。
一、Supervisor 服务
Supervisor 服务由服务端进程 Supervisord 和 客户端 Supervisorctl 两部分组成。
1.1、Supervisor 服务安装
yum install epel-release -y
yum install -y supervisor -y
systemctl start supervisord
二、supervisord 服务端
使用 Supervisor 服务,需要启动一个 supervisord 进程;这个进程用于管理其他进程(由 Supervisor 服务管理的)。
Supervisor 服务通过配置文件的形式,向 Supervisord 进程托管其他进程(服务)。
2.1、示例:托管 ElasticSearch 服务
计划将 ElasticSearch 服务的进程,交由 Supervisor 服务进程管理;需要为 ElasticSearch 服务编写一个 Supervisord 的托管配置文档。
文档的存储目录默认为:/etc/supervisord.d
;文档为 .ini
结尾的文本文档:如 es.ini
。
[program:es]
command=/opt/elasticsearch-6.7.2/bin/elasticsearch
user=es
autostart=true
autorestart=true
startretries=3
stdout_logfile_maxbytes=500MB
stdout_logfile_backups = 20
stdout_logfile=/data/logs/es.log
environment=JAVA_HOME=/usr/local/src/jdk1.8.0_221
2.2、补充Logstash 的配置信息
[program:logstash]
command=/usr/local/logstash/bin/logstash -f /usr/local/logstash/config/logstash.conf
directory=/usr/local/logstash
environment=LS_HEAP_SIZE=5000m,JAVA_HOME=/usr/local/src/jdk1.8.0_221
2.3、补充 Kibana 的配置信息
[program:kibana]
command=/usr/local/kibana/bin/kibana
directory=/usr/local/kibana/bin/
numprocs=1
priority=3
autostart=true
startretries=3
autorestart=true
redirect_stderr=true
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=10
stdout_logfile=/usr/local/kibana/kibana-daemon.log
2.4、配置指令介绍
- directory 项目所在的位置,supervisord 会自动切换到这个目录
- command 项目的命令
- user 进程运行的用户
- autostart 当设置为true时,当supervisord启动时,该子进程就会自动启动
- autorestart 当设置为true时,子进程因为某种原因挂掉,会自动进行重启
- startsecs 该子进程启动多久后,才认为进程启动成功
- startretries 子进程尝试情动的次数,默认为3
- redirect_stderr 当设置为true时,子进程的标准错误输出重定向到 supervisord 后台的标准输出文件描述符
- stdout_logfile 子进程标准输出存放的路径
- stdout_logfile_maxbytes 标准输出文件达到多少后进行轮转
- stdout_logfile_backups 标准输出日志的备份数量
- priority 子进程启动的优先级,值越小启动越早
- environment 为进程配置变量
上面信息配置完成后,Supervisord 服务就可以管理 ElasticSearch 服务了。
三、supervisorctl 管理客户端
上面配置好 Supervisord 服务端后,平时对被托管的服务的管理操作,需要使用 supervisorctl 客户端工具。
#supervisorctl
default commands (type help <topic>):
=====================================
add exit open reload restart start tail
avail fg pid remove shutdown status update
clear maintail quit reread signal stop version
3.1、托管服务管理
- status 查看当前管理的子进程
- reload 当配置发生改变时,进行热部署
- restart [program_name] 重启某个子进程
- start [program_name] 启动某个子进程
- remove 移除某个托管服务
- update 更新配置
- fg 连接一个在后台运行的进程
- tail 查看托管服务进程的标准输出信息
3.2、Supervisord 进程管理
- open 链接一个远程 Supervisord 服务
- shutdown 关闭某个原创的 Supervisord 服务
- pid 获取 Supervisord 服务或托管服务的进程号
- signal 对 Supervisord 服务或者托管服务发送信号
- add 添加托管的服务进程
- avail 展示所有托管服务进程信息
- maintail 查看 Supervisord 进程的标准输出信息