合并filebeat + logstash中的行

时间:2016-02-15 17:12:34

标签: elasticsearch logstash kibana filebeat

我们已成功将ELK堆栈设置到我们的生产环境中。我们还可以在Kibana服务器上看到日志(日志是非结构化的)输出。

一切都对我们很好。但我们唯一关心的是kibana中的消息是针对写入给定日志文件的每一行而构建的。

问题:

那么,是否可以通过最多行数在文件节拍中)将日志消息合并(俱乐部行),然后再将其发送到logstash或弹性搜索),将被视为ElasticSearch / Kibana / Logstash中的1个事件。

注意:请注意,日志消息是非结构化的(其中没有特定的正则表达式模式)。所以不能使用this。但我确实尝试过 max-lines 方法,但kibana中的事件显示了一行文档。

实施例

如果我的日志(日志文件)有这样的条目

Globals

我希望文件节拍将它们分组(更好的词合并它们)

(例如:filebeat中的一个配置将合并它们。)

因此最终发送到logstash / elastic的事件看起来应该是这样的

1个事件(消息为..)

Sending ... 0 .. 2016-02-17 13:20:13 +0530 
Sending ... 1 .. 2016-02-17 13:20:13 +0530 
Sending ... 2 .. 2016-02-17 13:20:14 +0530 
Sending ... 3 .. 2016-02-17 13:20:14 +0530 
Sending ... 4 .. 2016-02-17 13:20:14 +0530 
Sending ... 5 .. 2016-02-17 13:20:15 +0530 
Sending ... 6 .. 2016-02-17 13:20:15 +0530 
Sending ... 7 .. 2016-02-17 13:20:16 +0530 
Sending ... 8 .. 2016-02-17 13:20:16 +0530 
Sending ... 9 .. 2016-02-17 13:20:16 +0530 
Sending ... 10 .. 2016-02-17 13:20:17 +0530 
Sending ... 11 .. 2016-02-17 13:20:17 +0530 
Sending ... 12 .. 2016-02-17 13:20:18 +0530 
Sending ... 13 .. 2016-02-17 13:20:18 +0530 
Sending ... 14 .. 2016-02-17 13:20:18 +0530 
Sending ... 15 .. 2016-02-17 13:20:19 +0530 
Sending ... 16 .. 2016-02-17 13:20:19 +0530 
Sending ... 17 .. 2016-02-17 13:20:20 +0530 
Sending ... 18 .. 2016-02-17 13:20:20 +0530 
Sending ... 19 .. 2016-02-17 13:20:20 +0530 
Sending ... 20 .. 2016-02-17 13:20:21 +0530 
Sending ... 21 .. 2016-02-17 13:20:21 +0530 
Sending ... 22 .. 2016-02-17 13:20:22 +0530 
Sending ... 23 .. 2016-02-17 13:20:22 +0530 
Sending ... 24 .. 2016-02-17 13:20:22 +0530 
Sending ... 25 .. 2016-02-17 13:20:23 +0530 
Sending ... 26 .. 2016-02-17 13:20:23 +0530 
Sending ... 27 .. 2016-02-17 13:20:24 +0530 
Sending ... 28 .. 2016-02-17 13:20:24 +0530 
Sending ... 29 .. 2016-02-17 13:20:24 +0530 
Sending ... 30 .. 2016-02-17 13:20:25 +0530 
Sending ... 31 .. 2016-02-17 13:20:25 +0530 
Sending ... 32 .. 2016-02-17 13:20:26 +0530 
Sending ... 33 .. 2016-02-17 13:20:26 +0530 
Sending ... 34 .. 2016-02-17 13:20:26 +0530 
Sending ... 35 .. 2016-02-17 13:20:27 +0530 
Sending ... 36 .. 2016-02-17 13:20:27 +0530 
Sending ... 37 .. 2016-02-17 13:20:28 +0530 
Sending ... 38 .. 2016-02-17 13:20:28 +0530 
Sending ... 39 .. 2016-02-17 13:20:29 +0530 
Sending ... 40 .. 2016-02-17 13:20:29 +0530 
Sending ... 41 .. 2016-02-17 13:20:30 +0530

2事件(消息为..)

Sending ... 0 .. 2016-02-17 13:20:13 +0530 
Sending ... 1 .. 2016-02-17 13:20:13 +0530 
Sending ... 2 .. 2016-02-17 13:20:14 +0530 
Sending ... 3 .. 2016-02-17 13:20:14 +0530 
Sending ... 4 .. 2016-02-17 13:20:14 +0530 
Sending ... 5 .. 2016-02-17 13:20:15 +0530 
Sending ... 6 .. 2016-02-17 13:20:15 +0530 
Sending ... 7 .. 2016-02-17 13:20:16 +0530 
Sending ... 8 .. 2016-02-17 13:20:16 +0530 
Sending ... 9 .. 2016-02-17 13:20:16 +0530 
Sending ... 10 .. 2016-02-17 13:20:17 +0530 
Sending ... 11 .. 2016-02-17 13:20:17 +0530 
Sending ... 12 .. 2016-02-17 13:20:18 +0530 
Sending ... 13 .. 2016-02-17 13:20:18 +0530 
Sending ... 14 .. 2016-02-17 13:20:18 +0530 
Sending ... 15 .. 2016-02-17 13:20:19 +0530 

等等......

但不幸的是,它只为每一行创建了一个事件。请参阅随附的屏幕截图。

enter image description here

这里我的Filebeat配置看起来像this(再一次不能使用正则表达式,因为日志通常是非结构化的,上面给出的日志就是这样的。)

思想?

注意:文件击败版本1.1.0

1 个答案:

答案 0 :(得分:2)

您出于错误的目的使用filebeat多行的max_lines。

max_lines用于确保Elasticsearch / Logstash多线事件被刷新(Filebeat documentation)。

这意味着当您将max_lines设置为5时。 你有一个7行的多行事件。 Filebeat只发送前5行后会刷新多行事件的内存并开始发送第二个事件。

目前,Filebeat 1.1.0无法实现您想要做的事情。您可以随时发布日志文件样本,以显示日志文件的不规则性,也许我们所有人都可以找到模式(Github issue)。

另一方面,你为什么要这样做?