当Logstash尝试写入数据时,Elasticsearch死亡


9

我有一个Raspberry Pi 2(截至2015年4月的最新Raspbian)安装程序,上周在测试网络上同时运行ElasticSearch和Logstash(不是简单的安装程序,但稳定了一个星期!)。我今天重新启动了机器,在让事情重新运行方面一直非常困难。ES和LS都将独立运行,但是当我尝试将LS输出推入ES时,ES实例死掉了,没有任何解释。我的目标是通过标准输出插件将运行数据和LS数据都泵入ES。

ElasticSearch [v1.5.0]

我相信这是核心问题所在。ES可以通过启动service elasticsearch start并保持运行状态,可以通过HTTP请求访问端口9200进行访问,并且一切正常的迹象似乎很正常。只要某种东西(据我所知,什么都可以)试图数据写入索引,该进程就会死亡,并且调试日志@ / var / log / elasticsearch / *不包含任何与服务失败相关的信息。我试图通过logstash(请参见下文)以及curl插入,这两者都终止了ES进程。我正在运行的curl命令是curl -XPOST "http://localhost:9200/logstash-2015.04.05/records/" -d "{ \"type\" : \"specialRecord\" }"

Logstash [v1.4.2]

我目前正在使用此简单配置运行:

input {
    stdin { }
}

output {
        stdout { codec => rubydebug }
        elasticsearch {
                host => '127.0.0.1'
                cluster => 'elasticsearch'
        }
}

其他注意事项

我尝试过的一些事情:

  • 我尝试将ElasticSearch的日志记录级别提高到DEBUG / TRACE,并且输出非常有趣。乐于提供日志(如果有帮助的话)。

  • 我尝试给ES分别提供256MB和512MB的堆空间,这似乎没有任何影响。在所有这些过程中,我还观察到内存利用率,并且内存不足似乎不是问题。

  • 我曾尝试禁用多播以尝试淘汰一些网络变量,但这似乎没有任何作用。

  • 我已经确保ES的数据目录具有足够的空间,写入权限等。ES在path.data加载时会在目录中创建子目录,但是我不相信会添加任何内容,因为当我重新启动ES进程时,索引统计信息会提示:文件总数为零。

我现在很沮丧,感到失望的是我没有(或至少能够找到)什么都没有记录。关于这里可能会发生什么的任何想法?


如果您没有从日志中获得任何有用的信息,则唯一的选择(除了从源代码进行编译和添加更多的调试语句)似乎正在使用strace监视系统调用。这可能会给您一个暗示,为什么Elasticsearch快要死了。为了减少容量,请按常规启动,然后在启动写入之前跟踪正在运行的进程。
Paul Haldane

没有任何日志的崩溃使我想起了JNI问题,难道没有JVM进程转储(hs_err_PID.log)吗?ES 1.5使用名为Sigar的本地库进行监视,它可能与Raspberry的ARM有关。您可以尝试自己运行Sigar吗?我会尝试升级到不再使用Sigar的ES 1.5.2或ES 2.0。
2015年

您关闭交换了吗?
隆隆声

Elasticsearch建议首先使用8G内存。我曾经在Raspberry Pi 3上运行过它。它可以工作,但是您需要谨慎对待发送数据的速度,而且查询可能需要一些时间。
webwurst,

Answers:


1

您需要更多的硬件

您的raspi可能(很大)无法承受您的工作量。

我绝对不是Elasticstack专家,但是我已经在几种测试场景中进行了设置,并且只用于有限的/轻量级的生产。以我的经验,虽然初始设置所需的资源相对较少,但是随着索引数量的增加,系统会产生更多的磁盘IO和CPU负载。

在系统恢复分片的重新启动后,这一点尤其明显。如果索引不是太大,则可以考虑使用每月存储分区,而不是默认的每日存储分区,这似乎有所帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.