今天介绍一下关于logstash的启动方式,以前说的都是使用/usr/local/logstash -f /etc/logstash.conf方式启动,这样就有一个麻烦,当你关闭终端,或者ctrl+c时logstash就会退出。下面介绍几种长期运行的方式。
1、service方式
使用rpm方式安装的,都可以/etc/init.d/logstash启动,编译安装的就需要你自己写启动脚本
2、nohup方式
这是最简单的,对于新手来说
nohup /usr/local/logstash/bin/logstash -f /etc/logstash/logstash.conf -w 10 -l /var/log/logstash/logstash.log &
3、优雅的 SCREEN 方式
这里使用了screen的一款软件,运行screen,是一个和shell一模一样的终端,启动之后使用ctrl+a+d退出来,进程仍然在运行。
创建独立的 screen 命令如下:
screen -dmS elk
接管连入创建的 elk 命令如下:
screen -r elk
启动程序:/usr/local/logstash/bin/logstash -f /etc/logstash/logstash.conf
ctrl+a+d退出,ps看一下,logstash仍然在运行
4、最推荐的 daemontools 方式
daemontools是一个软件名称,不过配置略复杂。所以这里我是使用python实现的supervisord方式:
首先安装:
yum install python-setuptools
easy_install supervisor
生成配置文件(supervisord.conf):
echo_supervisord_conf > /etc/supervisord.conf
在supervisord.conf最后增加:
[program:elkpro_1]
environment=LS_HEAP_SIZE=5000m
directory=/usr/local/logstash
command=/usr/local/logstash/bin/logstash -f /etc/logstash/conf.d/pro1.conf -w 10 -l /var/log/logstash/pro1.log
注意:经过测试,这里logstash配置文件必须在conf.d/目录下。
然后启动 supervisord -c /etc/supervisord.conf 即可。
解释:
logstash 会以 supervisord 子进程的身份运行,你还可以使用supervisorctl命令,单独控制一系列 logstash 子进程中某一个进程的启停操作:
supervisorctl start elkpro_1(支持start、stop、restart)
这里还有一点要注意,当你修改了supervisord.conf后,需要使用supervisorctl reload重新加载配置文件。