如何使用 Prometheus 监控SpringBoot系统

2023年 12月 28日 107.0k 0

公众号「架构成长指南」,专注于生产实践、云原生、分布式系统、大数据技术分享

在从零开始:使用Prometheus与Grafana搭建监控系统中,主要讲解了如何使用监控系统资源并进行告警,这节主要分享下,如何在业务系统中使用Prometheus来监控业务系统指标,业务系统使用Spring Boot构建。

我们要做什么?

在本示例中我们会使用Prometheus监控Spring Boot的各种指标,比如

  • http平均耗时
  • 当前 tomcat 连接数
  • tomcat 最大连接数
  • jvm相关指标
  • http 请求数
  • 系统运行时间

并在Grafana 进行展现,效果如下

关键技术介绍

我们会在spring boot 工程中引入micrometer-registry-prometheusspring-boot-starter-actuator来实现指标的暴露,下面对这两个组件进行一个介绍

micrometer-registry-prometheus

Micrometer它是Java生态中一个组件,可以把它理解为metric界的SLF4J。

Micrometer 为 Java 平台上的性能数据收集提供了一个通用的 API,它提供了多种度量指标类型(Timers、Guauges、Counters等),同时支持接入不同的监控系统,例如 Influxdb、Graphite、Prometheus 等。这里我们使用micrometer-registry-prometheus针对prometheus的实现。

spring-boot-starter-actuator

Spring Boot Actuator是Spring Boot提供用于对应用系统进行自省和监控的功能模块,基于此开发人员可以方便地对应用系统某些监控指标进行查看、统计、审计、指标收集等。Actuator提供了基于Http端点或JMX来管理和监视应用程序。

系统配置

Spring Boot 工程配置

  • 添加 maven 依赖
  • <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>io.micrometer</groupId>
        <artifactId>micrometer-registry-prometheus</artifactId>
    </dependency>
    
  • 在application.properties,开启监控的端点,这里我们的系统名称为 backend
  • #监控的端点
    management.endpoints.web.exposure.include=*
    #应用程序名称,在prometheus 上会显示
    management.metrics.tags.application=${spring.application.name}
    #tomcat 指标需要开启
    server.tomcat.mbeanregistry.enabled=true
    
  • 启动服务查看,访问actuator/prometheus接口,是否能获取相关指标

  • Prometheus 配置

  • prometheus.yml文件中进行配置业务系统采集点,5s 拉取一次指标,由于Prometheus server 部署在docker 中,所以访问主机IP 用host.docker.internal
  • #业务系统监控          
      - job_name: 'SpringBoot'
        # Override the global default and
        scrape_interval: 5s
        metrics_path: '/actuator/prometheus'
        static_configs:
          - targets: ['host.docker.internal:8080']       
    

    Grafana 配置

    访问grafana.com/grafana/das…

    并在Grafana 导入,关联Prometheus数据源

    这会还看不到数据,因为Prometheus没启动,配置未生效

    验证

    Prometheus验证

    启动Prometheus,并访问9093端口,查看是否能查询到业务系统指标,比如jvm_memory_used_bytes,如果出现以下结果则成功

    Grafana 验证

    访问我们导入的大屏,可以看到已收集到相关数据,包括系统启动时间、运行时间、tomcat 连接池信息、JVM相关信息等

    总结

    以上我们介绍了如何使用Prometheus来监控spring boot工程相关指标并使用Grafana 进行指标信息展现,下一篇我们会将如何在Spring Boot自定义业务指标,并对关键指标进行监控和告警。欢迎关注此公众号,谢谢。

    相关文章

    KubeSphere 部署向量数据库 Milvus 实战指南
    探索 Kubernetes 持久化存储之 Longhorn 初窥门径
    征服 Docker 镜像访问限制!KubeSphere v3.4.1 成功部署全攻略
    那些年在 Terraform 上吃到的糖和踩过的坑
    无需 Kubernetes 测试 Kubernetes 网络实现
    Kubernetes v1.31 中的移除和主要变更

    发布评论