2015-05-21 121 views
0

我们正在尝试为我们的应用程序找到最佳的logstash配置。该应用程序由大约30个进程组成一台运行在Linux机器上的服务器。来自同一台计算机上多个进程的Logstash

这些进程中的每一个都写入专用文件夹中的日志文件。我们希望收集这些日志并使用logstash将它们保存到elasticsearch。

虽然我们确实有资源问题。我们将无法在日志中写入日志并保持弹性搜索运行相同的数据(elasticsearch需要这些日志文件的5倍空间)

现在我们想到了试图管道每个进程的输出到它自己的logstash将包含grok过滤器和elasticsearch输出,同时我们将在同一台机器上运行elasticsearch实例。

这看起来有点沉重,有30个logstash正在运行......有更好的解决方案吗?我们是否会破坏CPU或者这是做这种事情的标准方式?

+0

你不能让机器在一天的日志,然后将其删除,他们已经被处理后,通过logstash?如何将stdout重定向到端口,我的google-fu说应该是可以的。也似乎很难相信你使用elasticsearch会导致5倍的惩罚。 –

+0

@AlainCollins一天过多,我们每10分钟旋转一次原木,最多保持10转。如果我让logstash从这些中读取数据,并且它正在读取一个旋转将发生,我将松散日志。此外,logstash如何处理日志转换? – user1708860

+0

logstash文档显示“它处理旋转”,FWIW。如果您担心这些边缘情况,请将logstash配置为仅处理最近旋转的文件(例如logfile.1)。只要它有一个不同的inode号码,你应该没问题。 –

回答

0

也许我失去了一些东西,但我认为你可以有一个logstash侦听多个TCP端口https://www.elastic.co/guide/en/logstash/current/plugins-inputs-tcp.html

+0

我们考虑使用套接字,但现在谈到如何。我们有一个简单的日志记者,我们可以改变它来报告一个套接字。但是这个解决方案对我来说并不合适,现在我们必须为任何与日志基础结构链接的人运行logstash。我们想到的另一个解决方案是将输出传递给一个简单的C++程序,该程序从stdin读取并写入套接字。在这两种解决方案中,我们必须处理主要的logstash崩溃和其他套接字相关的问题。将输出传送到redis/zeromq/logstash-forwarder客户端并不简单吗? – user1708860

+0

如果你管的东西,logstash仍然可能崩溃,你必须为此做好准备。 –

相关问题