当 Logstash 尝试写入数据时,Elasticsearch 终止

Sal*_*lis 9 elasticsearch logstash

我有一个 Raspberry Pi 2(截至 2015 年 4 月的最新 Raspbian)设置,上周在测试网络上同时运行 ElasticSearch 和 Logstash(不是一个简单的设置,但它稳定了一个多星期!)。我今天重新启动了我的机器,并且很难让事情再次运行;ES 和 LS 都将独立运行,但是当我尝试将 LS 输出推送到 ES 时,ES 实例会在没有解释的情况下死亡。我的目标是通过标准输出插件将运行数据和 LS 数据泵入 ES。

弹性搜索 [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'
        }
}
Run Code Online (Sandbox Code Playgroud)

其他注意事项

我尝试过的一些事情:

  • 我已经尝试将 ElasticSearch 的日志记录级别提高到 DEBUG/TRACE 并且输出非常无趣。如果有帮助,很高兴提供日志。

  • 我试过给 ES 256MB 和 512MB 的堆空间,这似乎没有任何影响。我还观察了所有这些过程中的内存使用情况,内存不足似乎不是问题。

  • 我尝试禁用多播以清除一堆网络变量,但这似乎没有什么区别。

  • 我确保 ES 的数据目录有足够的空间、写权限等。 ES 在path.data加载时在目录中创建子目录,但我不相信任何添加,因为当我重新启动 ES 进程时,索引统计表明文档总数为零。

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

Jen*_*ich 1

你需要更多的硬件

您的 raspi 可能(严重)无法满足您的工作负载需求。

我绝不是 Elasticstack 专家,但我已经在几个测试场景中设置了它并用于有限/轻型生产用途。根据我的经验,虽然初始设置需要相对较少的资源,但随着索引数量的增长,系统会产生明显更多的磁盘 IO 和 CPU 负载。

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