2014-10-02 85 views
0

我有一套日志文件,其中每个文件日志是针对特定的机器。logstash个人日志分析与多行

我想要实现的是使用multiline{}过滤器来加入每个文件中的多行消息,因为我想每个文件都有一个单独的@timestamp。在日志文件中

例如数据

标题

描述

TEST1

测试通过

测试端

filter { 
    multiline { 
    pattern => "from_start_line to end of line" 
    what => "previous" 
    negate => true 
    } 
} 

我只想将日志文件中的所有数据作为单个事件使用,而不使用该模式。

非常像告诉logstash进行多线事件直到EOF

回答

0

你不能这样做。因为logstash将始终保持对文件的监视。因此EOF对它毫无意义。

您可以做的另一种方法是在日志的末尾添加一些模式。例如,将log_end添加到每个日志输出的末尾。

title 

description 

test1 

test pass 

test end-log_end 

然后,您可以使用此模式来多行显示所有日志。

multiline { 
    pattern => "log_end$" 
    negate => true 
    what => "next" 
} 

希望这可以帮助你。

+0

我只知道我可以在多行之前通过mutate {gsub => ['message','任何单词','替换字']}来替换消息内容,但是如何仅在最后一行添加log_end作为你建议? – 2014-10-02 07:04:03

+0

我的意思是你必须添加输出日志的程序/代码。 – 2014-10-02 08:04:06

+1

我只能访问日志,猜测这意味着我需要从服务器下载所有日志,并使用C++/python脚本将该模式附加到日志中,然后将其提供给logstash。 = / – 2014-10-02 08:28:22