主要观点:迁移到基于微服务的架构时,监控是最常提及的挑战之一,每个微服务应在独立环境中运行,不共享资源,但需方便访问调用历史,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 可过滤请求,点击可查看详细请求处理流程。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。