我有一个包含大量机器的分布式系统,每台机器都会生成日志,并且可以在其他机器上调用服务(也会生成日志)。
我使用集中式日志服务(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。
答案 0 :(得分:1)
Splunk Storm和Loggly都是基于云的集中式日志记录SaaS产品。这两种解决方案的原因是相同的:
从我自己对这些类型产品的调查:
为什么我不会选择其中任何一个:
免责声明:我在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工作)。
在主发现页面中,您只需按主机对事件进行排序即可。这将创造你想要的结果。