supervisor是python的一个进程管理工具,可以管理多个进程的状态,断线自动重启,supervisor启动则程序也跟着自动启动等,并有一个简单的可视化web界面,可以对多个进程进行统一管理,本人也是在研究ELK的时候,首次接触到,可以用来管理ELK的进程,方便管理,后台运行。
supervisor是python写的,需要python的环境。本人的环境是centos7.5,自带python2.7
下面记录一下,supervisor的安装与配置,并配置ELK进程,进行管理。
一、安装supervisor
yum -y install python-pip #安装python的pip
注意:如果安装失败先yum -y install epel-release再yum -y install python-pip
pip install supervisor #利用pip下载supervisor
二、生产配置文件
mkdir /etc/supvisor
echo_supervisord_conf > /etc/supervisor/supervisor.conf # 自动生产配置文件的脚本
三、修改配置文件
vim /etc/supervisor/supervisor.conf
[unix_http_server]
file=/var/log/supervisor/supervisor.sock ; the path to the socket file
;chmod=0700 ; socket file mode (default 0700)
;chown=nobody:nogroup ; socket file uid:gid owner
;username=user ; default is no username (open server)
;password=123 ; default is no password (open server)
[inet_http_server] ; inet (TCP) server disabled by default #打开这几个选项,是web可视界面的配置
port=0.0.0.0:9001 ; ip_address:port specifier, *:port for all iface
username=user ; default is no username (open server)
password=123 ; default is no password (open server)
[supervisord]
logfile=/var/log/supervisor/supervisord.log ; main log file; default $CWD/supervisord.log
logfile_maxbytes=50MB ; max main logfile bytes b4 rotation; default 50MB
logfile_backups=10 ; # of main logfile backups; 0 means none, default 10
loglevel=info ; log level; default info; others: debug,warn,trace
pidfile=/var/log/supervisor/supervisord.pid ; supervisord pidfile; default supervisord.pid
nodaemon=false ; start in foreground if true; default false
minfds=1024 ; min. avail startup file descriptors; default 1024
minprocs=200 ; min. avail process descriptors;default 200
;umask=022 ; process file creation umask; default 022
;user=chrism ; default is current user, required if root
;identifier=supervisor ; supervisord identifier, default is 'supervisor'
;directory=/tmp ; default is not to cd during start
;nocleanup=true ; don't clean up tempfiles at start; default false
;childlogdir=/tmp ; 'AUTO' child log dir, default $TEMP
;environment=KEY="value" ; key value pairs to add to environment
;strip_ansi=false ; strip ansi escape codes in logs; def. false
[include]
files = /usr/local/supervisor/*.ini
上面没列出来的不需要修改
四、配置ELK的supervisor进程
在supvisor配置文件(/etc/supervisor/supervisor.conf )最后一行中,注明了include的路径,在这个路径下添加各个程序的配置文件,如下添加ELK三个进程的配置文件:
elasticsearch:
vim /usr/local/supervisor/elasticsearch.ini
[program:elasticsearch]
directory=/you_path/elasticsearch-6.3.0 # 程序文件夹
command=/you_path/elasticsearch-6.3.0/bin/elasticsearch #启动程序的命令
user=elk # 指定用户
numprocs=1
priority=1 # 优先级 默认:999,数值越小优先级越高
autostart=true # 是否随supervisor启动而自动启动
;startsecs=10 # 启动正常运行多久,则为启动成功。默认为:1秒
satrtretries=3 # 启动失败重试次数
autorestart=true # 进程挂掉,是否重启
stopasgroup=true # 默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程
killasgroup=true # 默认为false,向进程组发送kill信号,包括子进程
redirect_stderr=true # std_error日志重定向到std_out
stdout_logfile_maxbytes=50MB # 日志最大大小
stdout_logfile_backups=10 # 日志最多保留数量
stdout_logfile=/var/log/supervisor/supervisor_elasticsearch.log # 日志路径
kibana:
vim /usr/local/supervisor/kibana.ini
[program:kibana]
directory=/you_path/kibana-6.3.0-linux-x86_64
command=/you_path/kibana-6.3.0-linux-x86_64/bin/kibana
numprocs=1
priority=3
autostart=true
;startsecs=10
startretries=3
autorestart=true
redirect_stderr=true
tdout_logfile_maxbytes=50MB
stdout_logfile_backups=10
stdout_logfile=/var/log/supervisor/supervisor_kibana.log
kibana在这会出现一个问题,如果是用这种方式启动,不修改kibana的配置文件的话,其他主机会访问不了。那么就需要修改kibana的配置文件
vim /you_path/kibana-6.3.0-linux-x86_64/config/kibana.yml
# 修改server.host参数,其他参数忽略
server.host: "0.0.0.0"
logstash:
vim /usr/local/supervisor/logstash.ini
[program:logstash]
directory=/you_path/logstash-6.3.0
command=/you_path/logstash-6.3.0/bin/logstash -f /you_path/logstash-6.3.0/conf/test.conf
numprocs=1
priority=2
autostart=true
;startsecs=5
startretries=3
autorestart=true
stopasgroup=true
killasgroup=true
redirect_stderr=true
stdout_logfile_maxbytes=50MB
stdout_logfile_backups =10
stdout_logfile=/var/log/supervisor/supervisor_logstash.log
五:启动supervisor
supervisord -c /etc/supervisor/supervisor.conf
启动后,则可以通过web可视界面,管理进程,用浏览器打开:http://127.0.0.1:9001,输入账号和密码(这里配置的账号密码是user,123)
OK,到从,supervisor安装配置完成。