今天介绍一下关于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重新加载配置文件。