使用 Spring Cloud Sleuth、Elastic Stack 和 Zipkin 监控微服务

主要观点:迁移到基于微服务的架构时,监控是最常提及的挑战之一,每个微服务应在独立环境中运行,不共享资源,但需方便访问调用历史,grep 日志不是解决方案,可使用第三方工具如 Spring Cloud Sleuth、Zipkin、Elastic Stack 等。
关键信息

  • Spring Cloud Sleuth 可通过添加适当头跟踪后续微服务进度,基于 MDC 概念。
  • Zipkin 是分布式跟踪系统,用于收集请求时间数据,有管理控制台。
  • Elastic Stack 由 Elasticsearch、Logstash、Kibana 组成,用于实时搜索、分析和可视化日志数据。
  • 示例中使用 Docker 运行 Elasticsearch、Kibana 和 Logstash 容器,并配置相关参数。
  • 微服务示例使用 Spring Cloud、Eureka 和 Zuul,添加相关依赖和 Logback 配置,将日志发送到 Logstash,Spring Cloud Sleuth 配置简单。
  • Kibana 可搜索 Elasticsearch 中的日志,通过索引模式筛选,界面直观友好,可查看请求细节和耗时操作。
  • Zipkin 可接收 Spring Cloud Sleuth 的跟踪统计数据,界面简单,可过滤请求并查看详细信息。
    重要细节
  • 在开发模式下运行 Elasticsearch 较方便,生产模式需设置 vm.max_map_count 为至少 262144。
  • Logstash 配置输入为 TCP 兼容 LogstashTcpSocketAppender,输出为 Elasticsearch,每个微服务以“micro-”前缀索引。
  • 微服务示例代码在 GitHub(分支 logstash),添加多个 Logback 依赖和 Spring Cloud Sleuth 配置。
  • Kibana 中可通过“micro-*”索引模式搜索日志,可选择显示字段,查看请求细节和耗时操作。
  • Zipkin UI 可过滤请求,点击可查看详细请求处理流程。
阅读 8
0 条评论