为什么elasticsearch从非活动分片崩溃并且logstash在批量操作上失败?

时间:2015-05-08 18:30:07

标签: elasticsearch logstash kibana

我目前正在1个Ubuntu 14.04盒子上测试一个ELK堆栈。它有6 GB的RAM和1TB存储空间。这是非常适度的,但对于我得到的数据量,这应该是正确的吗?我按照本指南elk stack guide进行了操作。总而言之,我将Kibana4,Logstash 1.5和Elasticsearch 1.4.4都运行在一个盒子上,nginx服务器充当反向代理,因此我可以从外部访问Kibana。与指南的主要区别在于,我从logstash-forwarder获取json输入,而不是syslogs,每分钟发送大约300个事件。

一旦开始,一切都很好 - 日志显示在Kibana上,并且没有错误。大约3个小时后,elasticsearch崩溃了。我得到了

Discover: Cannot read property 'indexOf' of undefined
网站上的

错误。可以在pastebin上看到日志。似乎分片变为非活动状态,而elasticsearch会更新index_buffer大小。

如果我刷新Kibana UI,它会再次开始为我的json日志工作。但是,如果我测试一个不同的日志源(使用TCP输入而不是lumberjack),我得到类似的错误,除了我停止处理日志 - 从10分钟到一小时,我不再处理任何日志和除非我执行kill -KILL,否则我无法停止logstash。

Killing logstash (pid 13333) with SIGTERM
Waiting logstash (pid 13333) to die...
Waiting logstash (pid 13333) to die...
Waiting logstash (pid 13333) to die...
Waiting logstash (pid 13333) to die...
Waiting logstash (pid 13333) to die...
logstash stop failed; still running.

Logstash error log shows。 Logstash .log文件为空...

对于tcp输入,我在logstash的批量插入过程中每15分钟获得大约1500个事件。

这里有什么想法吗?

编辑:我还观察到,在开始我的弹性搜索过程时,我的碎片被设置为更低的mb ......

[2015-05-08 19:19:44,302][DEBUG][index.engine.internal    ] [Eon] [logstash-    2015.05.05][0] updating index_buffer_size from [64mb] to [4mb]

2 个答案:

答案 0 :(得分:1)

@jeffrey,我对DNS过滤器有同样的问题。

我做了两件事。 我安装了dnsmasq作为DNS缓存解析器。如果您有高延迟或高负载DNS服务器,它会有所帮助。

第二,我增加了logstash的工作线程数。只需使用-w选项。

使用没有dnsmasq的线程工作。使用dnsmask进行欺骗而不使用线程。

答案 1 :(得分:0)

我发现了我的问题。问题出在我的logstash配置 - DNS过滤器(http://www.logstash.net/docs/1.4.2/filters/dns)由于某种原因导致logstash崩溃/挂起。一旦我拿出DNS过滤器,一切正常。也许DNS过滤器的配置方式存在一些错误。