微服务监控:使用 Spring Boot Admin、Micrometer、Prometheus 和 Grafana ...

举报
bug菌 发表于 2025/03/20 21:07:29 2025/03/20
【摘要】 🏆本文收录于「滚雪球学SpringBoot」专栏(全网一个名),手把手带你零基础入门Spring Boot,从入门到就业,助你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!环境说明:Windows 10 + IntelliJ IDEA 2021.3.2 + Jdk 1.8 📢 前言  在微服务架构中,随着服务数量的不断增多,系统的复杂性也随...

🏆本文收录于「滚雪球学SpringBoot」专栏(全网一个名),手把手带你零基础入门Spring Boot,从入门到就业,助你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!

环境说明:Windows 10 + IntelliJ IDEA 2021.3.2 + Jdk 1.8

📢 前言

  在微服务架构中,随着服务数量的不断增多,系统的复杂性也随之提升。在这种情况下,监控成为了保障系统健康和提升服务可用性的关键。💡
  通过实时监控,我们可以在故障发生之前捕获到预警信息,及时排查问题并进行修复。常见的监控方案包括 Spring Boot AdminMicrometerPrometheusGrafana,这些工具可以帮助我们全面监控微服务的健康状况、性能指标和日志数据,及时发现问题并加以解决。

  本文将介绍如何使用这四种技术搭建一个完整的微服务监控系统,帮助你实现 服务健康监控性能指标采集数据存储以及可视化监控,并通过实际案例演示它们如何协同工作。🔧


🚀 目录

  1. Spring Boot Admin 监控服务状态
    • Spring Boot Admin 简介
    • 如何集成 Spring Boot Admin
    • Spring Boot Admin 功能与使用
  2. Micrometer 进行指标采集
    • Micrometer 简介
    • 配置 Micrometer 进行指标采集
    • 常用指标示例
  3. Prometheus 进行数据存储
    • Prometheus 简介
    • 配置 Prometheus 与 Micrometer 集成
    • 数据抓取与存储
  4. Grafana 可视化监控
    • Grafana 简介
    • 配置 Grafana 连接 Prometheus
    • 创建监控面板和图表
  5. 完整监控系统示例
    • 搭建微服务监控系统
    • 启动与监控展示
  6. 总结与最佳实践
    • 如何提升微服务的监控效果
    • 常见问题与优化建议

🚀 1. Spring Boot Admin 监控服务状态

🌱 1.1 Spring Boot Admin 简介

Spring Boot Admin 是一个用于管理和监控 Spring Boot 应用的管理界面。它提供了一个简单易用的 UI,能够展示服务的健康状况、运行状态、环境配置、日志等信息。通过 Spring Boot Admin,我们可以轻松查看各个微服务的运行状态,及时发现服务异常。

🌱 1.2 如何集成 Spring Boot Admin

首先,添加 Spring Boot Admin Server 依赖:

<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-server</artifactId>
    <version>2.6.1</version>
</dependency>

在主应用类中启用 Spring Boot Admin Server:

@SpringBootApplication
@EnableAdminServer  // 启用 Admin Server
public class AdminServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(AdminServerApplication.class, args);
    }
}

接着,为每个微服务配置 Spring Boot Admin 客户端。添加依赖:

<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-client</artifactId>
    <version>2.6.1</version>
</dependency>

然后,在 application.yml 中配置 Spring Boot Admin Server 地址:

spring:
  boot:
    admin:
      client:
        url: http://localhost:8080  # 连接到 Spring Boot Admin Server

🌱 1.3 Spring Boot Admin 功能与使用

Spring Boot Admin 提供以下几种主要功能:

  • 服务健康监控:显示各个微服务的健康状态(如:UP、DOWN、OUT_OF_SERVICE)。
  • 查看日志:能够实时查看各个服务的日志输出。
  • 应用信息:查看服务的环境信息、系统属性和配置。
  • 管理端点:可以通过界面操作微服务的管理端点,如:触发垃圾回收、查看 JVM 状态等。

通过 Spring Boot Admin,我们可以非常方便地查看各个微服务的运行状态和相关信息,确保系统的正常运行。


🚀 2. Micrometer 进行指标采集

🌱 2.1 Micrometer 简介

Micrometer 是一个应用性能指标采集的库,旨在为 Spring Boot 应用提供统一的指标支持。它支持多种度量标准,如:计数器、定时器、仪表和计量器等,并且能够轻松地将这些指标输出到多个监控系统,如 PrometheusInfluxDBDatadog 等。

Micrometer 通过统一的接口和抽象层,使得我们可以轻松切换监控平台,而不需要修改应用的代码。

🌱 2.2 配置 Micrometer 进行指标采集

Spring Boot 提供了开箱即用的支持,直接在 pom.xml 中添加以下依赖:

<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-registry-prometheus</artifactId>
</dependency>

然后,在 application.yml 中配置 Prometheus 导出端点:

management:
  endpoints:
    web:
      exposure:
        include: "*"
  metrics:
    export:
      prometheus:
        enabled: true
        step: 30s  # 数据导出的频率

通过这样的配置,Micrometer 会定期收集应用的各项指标,并通过 /actuator/prometheus 端点暴露给 Prometheus 来抓取。

🌱 2.3 常用指标示例

Micrometer 提供了丰富的内置指标,包括:

  • JVM 指标:如堆内存使用、线程池状态、垃圾回收等。
  • HTTP 请求:如请求总数、成功率、延迟等。
  • 数据库连接池:如连接数、活动连接数等。

通过 Micrometer,我们可以轻松采集这些指标,帮助我们分析服务的性能瓶颈。


🚀 3. Prometheus 进行数据存储

🌱 3.1 Prometheus 简介

Prometheus 是一个开源的监控系统和时序数据库,专门用于存储和查询基于时间序列的数据。它可以从应用暴露的指标端点抓取数据,并根据时间序列进行存储和分析。

Prometheus 的优势在于:

  • 高效的时序数据存储
  • 灵活的查询语言(PromQL),可以用于分析和聚合指标数据。
  • 易于扩展,支持多种导出方式。

🌱 3.2 配置 Prometheus 与 Micrometer 集成

Prometheus 配置相对简单,首先在 prometheus.yml 中配置抓取目标:

scrape_configs:
  - job_name: 'spring-boot-microservice'
    static_configs:
      - targets: ['localhost:8081']  # 指定微服务暴露的 Prometheus 端点

然后,在 Prometheus 界面中,可以查询和分析从 Micrometer 收集到的指标数据。

🌱 3.3 数据抓取与存储

Prometheus 会定期抓取微服务的 /actuator/prometheus 端点,存储采集到的数据。用户可以通过 Prometheus 的查询语言(PromQL)来执行各种查询,如:

  • 查询服务的请求数量、响应时间。
  • 查询系统的 CPU 使用率、内存使用情况等。

Prometheus 将采集到的数据存储为时间序列,可以方便地进行长期的趋势分析。


🚀 4. Grafana 可视化监控

🌱 4.1 Grafana 简介

Grafana 是一个开源的分析与监控平台,支持多种数据源,如 Prometheus、InfluxDB、Elasticsearch 等。通过 Grafana,我们可以轻松地将 Prometheus 中存储的时间序列数据可视化,创建漂亮的仪表盘来监控微服务的状态。

🌱 4.2 配置 Grafana 连接 Prometheus

在 Grafana 中,首先需要添加 Prometheus 数据源。进入 Grafana 仪表盘设置,选择 数据源,然后配置 Prometheus:

  • 数据源类型选择 Prometheus。
  • 数据源 URL 设置为 Prometheus 服务的地址(如 http://localhost:9090)。

🌱 4.3 创建监控面板和图表

一旦数据源配置完成,就可以创建监控面板了。Grafana 提供了丰富的图表类型,包括:

  • 时间序列图:展示服务的指标变化趋势。
  • 表格:展示详细的指标数据。
  • 饼图与柱状图:展示系统的资源分布。

在 Grafana 中,我们可以使用 PromQL 语句查询 Prometheus 数据,并将结果展示在可视化面板上。


🚀 5. 完整监控系统示例

🌱 5.1 搭建微服务监控系统

  1. 使用 Spring Boot Admin 管理服务的健康状态。
  2. 使用 Micrometer 采集服务的性能指标。
  3. 使用 Prometheus 存储和管理指标数据。
  4. 使用 Grafana 实现对微服务的可视化监控。

通过这四个工具的结合,我们可以搭建一个完整的微服务监控系统,实时监控各个服务的健康状况和性能指标。

🌱 5.2 启动与监控展示

启动 Spring Boot Admin 服务、Prometheus 服务和 Grafana 服务后,你就可以通过浏览器查看微服务的监控状态了。所有微服务的健康状况、性能指标以及系统资源使用情况都会在 Grafana 中直观地呈现。


🎯 6. 总结与最佳实践

🌱 6.1 如何提升微服务的监控效果

  • 配置全面的指标:除了常规的性能指标,还可以监控服务的业务指标,如:订单处理数量、请求响应时间等。
  • 优化 Prometheus 查询:定期清理无效数据,减少查询的复杂性。
  • 利用告警机制:可以将 Prometheus 与 Alertmanager 配合,设置阈值告警,及时发现异常。

🌱 6.2 常见问题与优化建议

  • Prometheus 存储压力:可以通过数据压缩或定期清理无用数据来优化存储。
  • Grafana 仪表板性能:对于大量数据,可以使用 多面板查询 来提高查询效率。

通过 Spring Boot Admin、Micrometer、Prometheus 和 Grafana 的结合,我们能够构建一个完整、高效的微服务监控系统,有效保障系统的健康运行和性能优化。🎉

🧧福利赠与你🧧

  无论你是计算机专业的学生,还是对编程有兴趣的小伙伴,都建议直接毫无顾忌的学习此专栏「滚雪球学SpringBoot」专栏(全网一个名),bug菌郑重承诺,凡是学习此专栏的同学,均能获取到所需的知识和技能,全网最快速入门SpringBoot,就像滚雪球一样,越滚越大, 无边无际,指数级提升。

  最后,如果这篇文章对你有所帮助,帮忙给作者来个一键三连,关注、点赞、收藏,您的支持就是我坚持写作最大的动力。

  同时欢迎大家关注公众号:「猿圈奇妙屋」 ,以便学习更多同类型的技术文章,免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板、技术文章Markdown文档等海量资料。

✨️ Who am I?

我是bug菌,CSDN | 掘金 | InfoQ | 51CTO | 华为云 | 阿里云 | 腾讯云 等社区博客专家,C站博客之星Top30,华为云多年度十佳博主/价值贡献奖,掘金多年度人气作者Top40,掘金等各大社区平台签约作者,51CTO年度博主Top12,掘金/InfoQ/51CTO等社区优质创作者;全网粉丝合计 30w+;更多精彩福利点击这里;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试真题、4000G PDF电子书籍、简历模板等海量资料,你想要的我都有,关键是你不来拿。

-End-

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。