ELK中的logstash启动后无输出

      在《elasticsearch技术解析与实战》第370页第10章ELK应用,书中以收集Nginx日志为例来说明;我这里用的版本分别是elasticsearch-2.3.0、logstash-2.3.0、kibana-4.5.0;和书中的版本不同,在373页我按照书上的例子取一条典型的nxlog日志,保存文件名为nxlog_access.log,编写配置文件,文件名为logstash_nxlog.conf:

input{
    file{
        path => "D:/elasticsearch/logstash-2.3.0/nxlog_access.log"
        start_position => beginning
    }
}
filter{
    grok{
        match => {
            "message" => "%{COMBINEDAPACHELOG}"
        }
    }
}
output{
    elasticsearch{
        hosts => ["127.0.0.1:9200"]
        user => "es_admin"
        password => "123456"
    }
    stdout{
        codec => rubydebug
    }
}

   

       当我先启动elasticsearch,再运行logstash -f  ..\logstash_nxlog.conf ,结果并没有得到像书中样的输出,二是只显示了下面两句话:


    

      然后光标就一直在“Pipeline main started"这一行下面闪烁,也无法输入,也没有得到期待的输出。后来在elasticsearch官网讨论区看到相似的问题,那个人对于这种情况是这么回答的:

ELK中的logstash启动后无输出_第1张图片

        翻译过来就是:这意味着logstash正在等待接收新数据,我已经指定让他读取那个log文件了,那里面已经有数据了呀,为什么还要等待新数据。接着看第二句话,意思是打开那个log文件,将末尾添加几行(有数据或空行都行)再保存。我试着做了,我添加了几行空行,一直按enter回车键保存了几行空行,刚按ctrl+s,马上控制台就有输出了:

ELK中的logstash启动后无输出_第2张图片


      如果你加了几行空行,虽然有输出了,但是那几行空行会解析错误,就会在控制台输入如下:

ELK中的logstash启动后无输出_第3张图片


       起码你知道哪里错了,但是为什么要追加并保存才会触发输出呢,网上有人说是logstash默认不处理一天前的文件,后来试验了一下发现确实是时间的问题,只不过这个时间是文件的创建时间或修改时间。今天是9月18日,刚开始我一直用的是6月份的nginx日志文件,怪不得启动logstash没有输出,后来新建一个txt文件,里面放入一条Apache日志,因为是今天创建的嘛,启动logstash后立马就看到输出了。


参考地址:http://ask.csdn.net/questions/337445

http://blog.csdn.net/zhaoyangjian724/article/details/52274656(logstash默认不处理一天前的文件)

https://discuss.elastic.co/t/no-response-after-pipeline-main-started/57167/2(官网讨论区)

你可能感兴趣的:(Logstash)