参考文章:https://www.toutiao.com/i6722608406672179724/
提示:
本教程是延续上一节部署efk+kafka高并发日志收集系统,上一节自己编写的脚本来管理不这么方便,此处采用supervisor来管理较为方便,以单台系统演示
第一节pip的安装
[root@elk212 ~]# curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
[root@elk212 ~]# python2.7 get-pip.py
[root@elk212 ~]# which pip
/usr/bin/pip
第二节安装supervisor
[root@elk212 ~]# pip install supervisor
[root@elk212 ~]# mkdir /etc/supervisor/supervisord.d/ -p
[root@elk212 ~]# echo_supervisord_conf > /etc/supervisor/supervisord.conf
[root@elk212 ~]#vim /etc/supervisor/supervisord.conf
[unix_http_server]
file=/var/run/supervisor.sock ; the path to the socket file
[inet_http_server] ; inet (TCP) server disabled by default
port=192.168.68.212:9001 ; ip_address:port specifier, *:port for all iface
[supervisord]
logfile=/var/log/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/run/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
user=root ; setuid to this UNIX account at startup; recommended if root
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisorctl]
serverurl=unix:///var/run/supervisor/supervisor.sock ; use a unix:// URL for a unix socket
serverurl=http://192.168.68.212:9001 ; use an http:// url to specify an inet socket
[include]
files = /etc/supervisor/supervisord.d/*.conf
[root@elk212 ~]# supervisord -c /etc/supervisor/supervisord.conf
[root@elk212 ~]# ss -tunlp | grep :9001
tcp LISTEN 0 128 192.168.68.212:9001 *:* users:(("supervisord",pid=1235,fd=4))
第三节配置efk+kafka
配置elasticsearch
[root@elk212 ~]# vim /etc/supervisor/supervisord.d/elasticsearch.conf
[program:es]
command=/usr/local/es/bin/elasticsearch
;directory=/opt/C9019/webapps # 在哪个目录下启动程序
autostart = false ; 在 supervisord 启动的时候不启动,实际中建议true
startsecs = 5 ; 启动 5 秒后没有异常退出,就当作已经正常启动了
autorestart = true ; 程序异常退出后自动重启
startretries = 3 ; 启动失败自动重试次数,默认是 3
user = log ; 用哪个用户启动
redirect_stderr = true ; 把 stderr 重定向到 stdout,默认 false
stdout_logfile_maxbytes = 50MB ; stdout 日志文件大小,默认 50MB
stdout_logfile_backups = 20 ; stdout 日志文件备份数
; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建>日志文件)
stdout_logfile = /usr/local/es/logs/es.log
loglevel=info
[root@elk212 ~]# supervisorctl reload
Restarted supervisord
[root@elk212 ~]# supervisorctl status
es STOPPED Not started
配置kibana
[root@elk212 ~]# vim /etc/supervisor/supervisord.d/kibana.conf
[program:kibana]
command=/usr/local/kibana/bin/kibana
autostart = false ; 在 supervisord 启动的时候不启动
startsecs = 5 ; 启动 5 秒后没有异常退出,就当作已经正常启动了
autorestart = true ; 程序异常退出后自动重启
startretries = 3 ; 启动失败自动重试次数,默认是 3
user = log ; 用哪个用户启动
redirect_stderr = true ; 把 stderr 重定向到 stdout,默认 false
stdout_logfile_maxbytes = 50MB ; stdout 日志文件大小,默认 50MB
stdout_logfile_backups = 20 ; stdout 日志文件备份数
; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建>日志文件)
stdout_logfile = /usr/local/kibana/kibana.log
loglevel=info
[root@elk212 ~]# supervisorctl reload
[root@elk212 ~]# supervisorctl status
es STOPPED Not started
kibana STOPPED Not started
配置logstash
[root@elk212 ~]# vim /etc/supervisor/supervisord.d/logstash.conf
[program:logstash]
command=/usr/local/logstash/bin/logstash -f /usr/local/logstash/config/logstash.conf
autostart = false ; 在 supervisord 启动的时候不启动
startsecs = 5 ; 启动 5 秒后没有异常退出,就当作已经正常启动了
autorestart = true ; 程序异常退出后自动重启
startretries = 3 ; 启动失败自动重试次数,默认是 3
user = log ; 用哪个用户启动
redirect_stderr = true ; 把 stderr 重定向到 stdout,默认 false
stdout_logfile_maxbytes = 50MB ; stdout 日志文件大小,默认 50MB
stdout_logfile_backups = 20 ; stdout 日志文件备份数
; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建>日志文件)
stdout_logfile = /usr/local/logstash/logstash.log
loglevel=info
[root@elk212 ~]# supervisorctl reload
[root@elk212 ~]# supervisorctl status
es STOPPED Not started
kibana STOPPED Not started
logstash STOPPED Not started
配置kafka
[root@elk212 ~]# vim /etc/supervisor/supervisord.d/kafka.conf
[program:kafka]
command=/usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties
autostart = false ; 在 supervisord 启动的时候不自动启动
startsecs = 5 ; 启动 5 秒后没有异常退出,就当作已经正常启动了
autorestart = true ; 程序异常退出后自动重启
startretries = 3 ; 启动失败自动重试次数,默认是 3
user = root ; 用哪个用户启动
redirect_stderr = true ; 把 stderr 重定向到 stdout,默认 false
stdout_logfile_maxbytes = 50MB ; stdout 日志文件大小,默认 50MB
stdout_logfile_backups = 20 ; stdout 日志文件备份数
; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建>日志文件)
stdout_logfile = /usr/local/kafka/logs/kafka.log
loglevel=info
[root@elk212 ~]# supervisorctl reload
[root@elk212 ~]# supervisorctl status
es STOPPED Not started
kafka STOPPED Not started
kibana STOPPED Not started
logstash STOPPED Not started
配置zookeeper
[root@elk212 ~]# vim /etc/supervisor/supervisord.d/zookeeper.conf
[program:zookeeper]
command=/usr/local/kafka/bin/zookeeper-server-start.sh /usr/local/kafka/config/zookeeper.properties
autostart = false ; 在 supervisord 启动的时候不动启动
startsecs = 5 ; 启动 5 秒后没有异常退出,就当作已经正常启动了
autorestart = true ; 程序异常退出后自动重启
startretries = 0 ; 启动失败自动重试次数,默认是 3
user = root ; 用哪个用户启动
redirect_stderr = true ; 把 stderr 重定向到 stdout,默认 false
stdout_logfile_maxbytes = 50MB ; stdout 日志文件大小,默认 50MB
stdout_logfile_backups = 20 ; stdout 日志文件备份数
; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建>日志文件)
stdout_logfile = /usr/local/kafka/logs/zookeeper.log
loglevel=info
[root@elk212 ~]# supervisorctl reload
[root@elk212 ~]# supervisorctl status
es STOPPED Not started
kafka STOPPED Not started
kibana STOPPED Not started
logstash STOPPED Not started
zookeeper STOPPED Not started
第四节配置elasticsearch插件cerebro
[root@elk212 ~]#wget https://github.com/lmenezes/cerebro/releases/download/v0.8.4/cerebro-0.8.4.tgz
[root@elk212 ~]# tar -xvf cerebro-0.8.4
[root@elk212 ~]# mv cerebro-0.8.4 /usr/local/es/
[root@elk212 ~]# vim /etc/supervisor/supervisord.d/cerebro.conf
[program:cerebro]
command=/usr/local/es/cerebro-0.8.4/bin/cerebro
autostart = false ; 在 supervisord 启动的时候不启动
startsecs = 5 ; 启动 5 秒后没有异常退出,就当作已经正常启动了
autorestart = true ; 程序异常退出后自动重启
startretries = 3 ; 启动失败自动重试次数,默认是 3
user = log ; 用哪个用户启动
redirect_stderr = true ; 把 stderr 重定向到 stdout,默认 false
stdout_logfile_maxbytes = 50MB ; stdout 日志文件大小,默认 50MB
stdout_logfile_backups = 20 ; stdout 日志文件备份数
; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建>日志文件)
stdout_logfile = /usr/local/es/logs/cerebro.log
loglevel=info
[root@elk212 ~]# supervisorctl reload
Restarted supervisord
[root@elk212 ~]# supervisorctl status
cerebro STOPPED Not started
es STOPPED Not started
kafka STOPPED Not started
kibana STOPPED Not started
logstash STOPPED Not started
zookeeper STOPPED Not started
[root@elk212 ~]# supervisorctl start all
tomcat: started
zookeeper: started
cerebro: started
kibana: started
kafka: started
logstash: started
es: started
[root@elk212 ~]# supervisorctl status
cerebro RUNNING pid 5342, uptime 0:00:47
es RUNNING pid 5348, uptime 0:00:47
kafka RUNNING pid 5344, uptime 0:00:47
kibana RUNNING pid 5343, uptime 0:00:47
logstash RUNNING pid 5347, uptime 0:00:47
tomcat RUNNING pid 5340, uptime 0:00:47
zookeeper RUNNING pid 5341, uptime 0:00:47
浏览器访问192.168.68.212:9000
提示:由于我只是在虚拟机弄,配置更不上,我已经改成了单机版,正常情况,这里应该显示三个es节点
第五节supervisor管理工具
基本命令
[root@elk212 ~]# supervisorctl status 查看所有服务
[root@elk212 ~]# supervisorctl start all 启动所有
[root@elk212 ~]# supervisorctl start 服务1 服务2 .....
[root@elk212 ~]# supervisorctl reload 重启supervisor
页面管理supervisor
浏览器输入http://192.168.68.212:9001
在上面基本都是傻瓜式操作了,就不介绍了。
常见错误1
log [06:15:49.692] [fatal][root] { [Error: EACCES: permission denied, stat '*/translations/en.json']
errno: -13,
code: 'EACCES',
syscall: 'stat',
path: '*/translations/en.json' }
FATAL Error: EACCES: permission denied, stat '*/translations/en.json'
解决办法:修改启动用户为root
[root@elk212 ~]# vim /etc/supervisor/supervisord.d/kibana.conf
[program:kibana]
command=/usr/local/kibana/bin/kibana --allow-root
autostart = false ; 在 supervisord 启动的时候不启动
startsecs = 5 ; 启动 5 秒后没有异常退出,就当作已经正常启动了
autorestart = true ; 程序异常退出后自动重启
startretries = 3 ; 启动失败自动重试次数,默认是 3
user = root ; 用哪个用户启动
redirect_stderr = true ; 把 stderr 重定向到 stdout,默认 false
stdout_logfile_maxbytes = 50MB ; stdout 日志文件大小,默认 50MB
stdout_logfile_backups = 20 ; stdout 日志文件备份数
; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建>日志文件)
stdout_logfile = /usr/local/kibana/kibana.log
loglevel=info
结束语:
更多精彩内容持续更新中,关注微信公众号,有你更精彩。