如何聚合来自大量(微)服务的日志

时间:2016-02-23 21:57:02

标签: logging service spring-boot microservices

我们将使用Spring Boot构建大量(微)服务。这些将会产生大量的分散日志。管理这些日志并理解它们的选项和最佳实践是什么?谢谢你的帮助!

1 个答案:

答案 0 :(得分:2)

这取决于您想要了解日志的方式。您可以使用丰富的日志聚合平台(如ELK)来收集和索引来自不同微服务实例的所有日志。使用此功能,您可以根据服务器IP,服务名称,日期范围等多个属性搜索日志。尽管在生产环境中您需要使用最佳实践以实现高可用性,但设置此项非常简单。

如果您希望在系统的不同分布式组件中进一步关联日志,则可能需要做更多的工作。例如,如果您希望通过所有正在使用的微服务执行相同的“请求”,则可以附加公共标识符(例如,会话ID)来记录每个服务中的消息。您需要以某种方式跨服务边界传达此公共标识符。例如,如果通过HTTP访问您的服务,则可以通过HTTP标头发送ID,并向微服务添加上下文侦听器以检测特殊标头并在每条日志消息中包含ID。如果您在标准日志记录库周围开发一个瘦包装器,可以使开发人员透明地包含ID,那么这可以更容易。这种方法的另一个好处是可以在所有服务中强制执行日志消息格式。 (还有其他方法可以做到这一点,例如在ELK中使用过滤器)

然后,当您稍后搜索聚合日志时,您可以搜索特定ID并通过所使用的所有微服务跟踪给定请求。