如何在分布式系统中按 "start-point" 对日志进行分组

How to group logs by "start-point" among a distributed system

我有一个有很多机器的分布式系统,每台机器都产生日志,并且可以调用其他机器(也产生日志)中的服务。

我正在使用集中式日志服务 (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。

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

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

你在日志中没有这个信息,所以你不能按它分组。您可以生成一个 ID,可能是 GUID 并将其与其他所有消息一起记录。这样你就会知道执行路径。

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

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

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

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

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

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

  • 无自定义保留
  • 您所有的数据都集中在一个地方(销售有关仪表盘、多种产品等的期货)
  • 没有单独安装

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