日志聚合



问题陈述

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

解决方案

我们可以使用集中的日志服务来聚合来自每个服务的日志。用户应该能够搜索和分析此日志服务提供的日志。用户应该能够在日志中出现特定类型的消息时配置警报。

关联ID

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

可搜索日志

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

Log Aggregation Pattern

微服务生成日志,这些日志使用kafka日志追加器发布,然后将日志消息输出到kafka集群。LogStash从kafka提取消息,转换消息并发布到Elasticsearch容器。现在,Kibana提供了一个可视化界面,用于从Elasticsearch容器搜索/读取索引日志,并提供所需的过滤器。

广告