日志聚合


问题陈述

微服务架构将应用程序构建为一组松散耦合的微服务,每个服务都可以以敏捷的方式独立开发,以实现持续交付/部署。请求通常跨越多个服务。每个服务实例以标准化格式在其日志文件中写入一些信息。这些日志可以是信息、错误、警告或调试日志。如何使用这些日志来分析和解决应用程序问题。

解决方案

我们可以使用集中式日志记录服务来聚合来自每个服务的日志。用户应该能够搜索和分析该日志服务提供的日志。当日志中出现某种类型的消息时,用户应该能够配置警报。

关联ID

当第一个微服务收到调用时,它应该生成一个 corelation id,然后可以将其传递给下游服务。应在所有微服务中记录此相关 ID。它将有助于跟踪跨多个服务的信息。

可搜索的日志

由于日志应放置在集中位置,下图展示了如何使用 Kafka、LogStash 和 Kibana 聚合日志并使用所需的过滤器搜索索引日志。

日志聚合模式

微服务生成日志,使用 kafka 日志附加程序发布日志,然后将日志消息输出到 kafka 集群。LogStash 从 kafka 获取消息,转换消息并发布到弹性搜索容器。现在 kibana 提供了一个可视化界面来从弹性搜索容器中搜索/读取索引日志,并提供所需的过滤器。