supervisor是python的一個程序管理工具,可以管理多個程序的狀态,短線自動重新開機,supervisor啟動則自動啟動等,并有一個簡單的可視化web界面,可以對多個程序進行統一管理,本人也是在研究ELK的時候,首次接觸到,可以用來管理ELK的程序,友善管理,背景運作。
supervisor是python寫的,需要python的環境,最好是用python2.7。本人的環境是centos7.2,自帶python2.7,别的,沒更新的小夥伴,使用前,先更新一下python版本。
下面記錄一下,supervisor的安裝與配置,并配置ELK程序,進行管理。
一: 安裝supervisor。
yum install python-pip #安裝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的配置檔案内,在最後一行中,注明了include的路徑,在這個路徑下添加各個程式的配置檔案,如下添加ELK三個程序的配置檔案:
vim /usr/local/supervisor/elasticsearch.ini
[program:elasticsearch]
command=/usr/local/ELK/elasticsearch-5.6.4/bin/elasticsearch #啟動程式的指令
directory=/usr/local/ELK/elasticsearch-5.6.4 # 程式檔案夾
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=/usr/local/ELK/kibana-5.6.4-linux-x86_64
command=/usr/local/ELK/kibana-5.6.4-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
logstash:
vim /usr/local/supervisor/logstash.ini
[program:logstash]
directory=/usr/local/ELK/logstash-5.6.4
command=/usr/local/ELK/logstash-5.6.4/bin/logstash -f /usr/local/ELK/conf/all.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
mkdir /var/log/supervisor/ ## 建立log日志檔案夾
supervisord -c /etc/supervisor/supervisor.conf
啟動後,則可以通過web可是界面,管理程序,用浏覽器打開:http://127.0.0.1:9001
OK,到從,supervisor安裝配置完成。