如何按"起点"对日志进行分组在分布式系统中

时间:2015-07-08 09:21:46

标签: logging distributed distributed-computing logentries

我有一个包含大量机器的分布式系统,每台机器都会生成日志,并且可以在其他机器上调用服务(也会生成日志)。

我使用集中式日志服务(Logentries),我所拥有的是:

12:00:00 Server1 apache log
12:00:01 Server1 application log
12:00:01 Server1 apache log
12:00:02 Server2 Some service log
12:00:02 Server1 application log
12:00:03 Server2 Some service log

但我真正想要的是:

 12:00:00 Server1 apache
 12:00:01 Server1 application log
 12:00:02 Server2 Some service log

 12:00:01 Server1 apache
 12:00:02 Server1 application log
 12:00:03 Server2 Some service log

这些日志按起点(apache日志)分组。

有任何解决办法吗?我可以停止使用logentries并使用其他日志管理SaaS。

3 个答案:

答案 0 :(得分:1)

Splunk Storm和Loggly都是基于云的集中式日志记录SaaS产品。这两种解决方案的原因是相同的:

  • 在同一个地方查看所有日志。
  • 在服务器关闭时不会丢失日志。
  • 能够搜索您的日志。
  • 花时间开发自己的产品而不是日志管理解决方案。

从我自己对这些类型产品的调查:

  • Splunk Storm在云中提供专用硬件。 Loggly是真正的多租户。
  • Loggly允许您选择帐户范围的保留期。 Splunk Storm没有。
  • 您自己的日志数据中的临时突发将减慢您在Splunk Storm中的索引。另一个客户的爆发将减慢您在Loggly中的索引。

为什么我不会选择其中任何一个:

  • 无自定义保留
  • 您在一个地方的所有数据(销售有关仪表板,多种产品等的未来)
  • 无单安装

免责声明:我在OpsBunker Lumberjack工作。我们将在今年晚些时候发布我们的BETA。我鼓励您访问我们的网站@ www.opsbunker.com,了解更多有关差异以及我们正在建设的内容。

答案 1 :(得分:0)

日志中没有此信息,因此您无法对其进行分组。您可以生成一个ID,可能是GUID,并将其与其他所有消息一起记录。这样你就知道了执行路径。

我不确定您的日志是如何发送到集中式系统的,但如果异步,如果您在不同的实例和服务之间跳转,则还需要提供logical clock (lamport clock),因为订单他们到达中央服务器的地方可以改变。

答案 2 :(得分:-1)

这可以通过使用具有强大分析功能的开箱即用的ELK堆栈轻松完成。您可以从github自己安装它或使用Logz.io的ELK-as-a-service(免责声明:我为Logz.io工作)。

在主发现页面中,您只需按主机对事件进行排序即可。这将创造你想要的结果。