elasticsearch - 合并filebeat + logstash中的行

标签 elasticsearch logstash kibana filebeat

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

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

问题:

因此,有没有一种方法可以合并(合并成行)日志消息,由限制最大行数(File beat中的,然后再将它们发送到logstash或 flex 搜索),这将被视为ElasticSearch / 1事件Kibana / Logstash。

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

例。

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

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

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

(示例: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 

2个事件(消息为..)
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 

等等 ...

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

enter image description here

这里我的Filebeat配置看起来像this(由于日志通常是非结构化的,因此上面的给定日志仅是一次,因此不能再次使用regex。)

想到了吗?

注意:文件更新版本1.1.0

最佳答案

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

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

这意味着,例如,当您将max_lines设置为5时。
而且您有7行多线事件。 Filebeat将仅在发送前5行之后才刷新多行事件的内存并开始发送第二个事件。

目前,Filebeat 1.1.0无法实现您想要的方式。您总是可以发布日志文件样本,以显示日志文件的不规则性,也许我们大家都能找到一个模式(Github issue)。

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

关于elasticsearch - 合并filebeat + logstash中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35415175/

相关文章:

elasticsearch - ELK仪表板显示错误的数据/结果

elasticsearch - Elastic Search 中带有附加条件的 Completion Suggester

elasticsearch - 按字段聚合,然后对另一个字段的值求和

elasticsearch - 如何设置 ElasticSearch 分析器/标记器/过滤器以获取最后一个子字符串作为标记?

json - Logstash-将嵌套的JSON导入Elasticsearch

elasticsearch - 在logstash管道中使用elasticsearch过滤器

elasticsearch - Logstash/ElasticSearch-如何处理 parent /子女关系

elasticsearch - 如何在Elasticsearch中基于IP地址列表获取地理位置

elasticsearch - 如何在Elasticsearch Nest中添加条件属性以创建索引?

ElasticSearch - 按相关性和自定义字段(日期)对搜索结果进行排序