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

标签 logging service spring-boot microservices

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

最佳答案

这取决于您想要如何理解日志。您可以使用丰富的日志聚合平台,例如 ELK收集来自不同微服务实例的所有日志并为其建立索引。使用此功能,您可以根据多个属性(例如服务器 IP、服务名称、日期范围等)搜索日志。尽管在生产中您需要使用最佳实践来实现高可用性,但设置起来相当容易。

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

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

关于logging - 如何聚合来自大量(微)服务的日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35589045/

相关文章:

Android Service 多实例

java - 如何在服务中创建 XWalkView?

java - Spring Boot schema.sql,使用PL/SQL初始化数据库

spring - bootstrap.yml 未加载 Spring Boot 2

tomcat - 忽略 Grails 日志记录配置

logging ->>/var/log/kube-apiserver.log不适用于kubernetes1.6

objective-c - NSLog 与 Xcode 断点记录和创建日志文件

java - 如何通过属性文件使用 log4j 在日志文件中追加输出和错误流打印

Android:我应该使用什么来运行后台长期 Activity ?

spring - findById() 给出未找到属性 ID