如何使用 Prometheus 监控SpringBoot系统

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

从零开始:使用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 工程配置

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

Prometheus 配置

  1. prometheus.yml文件中进行配置业务系统采集点,5s 拉取一次指标,由于Prometheus server 部署在docker 中,所以访问主机IP 用host.docker.internal
yaml 复制代码
#业务系统监控          
  - 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自定义业务指标,并对关键指标进行监控和告警。欢迎关注此公众号,谢谢。

相关推荐
阿里云云原生41 分钟前
实战|魔方文娱全链路可观测架构设计:SLS+ARMS+Prometheus+云拨测落地指南
云原生
无人不xiao1 小时前
若依 springBoot 配置国际化
spring boot
和光同尘20232 小时前
使用Rancher快速部署K8S集群
docker·云原生·容器·kubernetes·centos·rancher·虚拟机
JosieBook2 小时前
【SpringBoot】32 核心功能 - 单元测试 - JUnit5 单元测试中的嵌套测试与参数化测试详解
spring boot·单元测试·log4j
小坏讲微服务2 小时前
Nginx集群与SpringCloud Gateway集成Nacos的配置指南
spring boot·nginx·spring cloud·gateway
计算机学姐3 小时前
基于SpringBoot的新闻管理系统【协同过滤推荐算法+可视化统计】
java·vue.js·spring boot·后端·spring·mybatis·推荐算法
一 乐3 小时前
远程在线诊疗|在线诊疗|基于java和小程序的在线诊疗系统小程序设计与实现(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·小程序
serendipity_hky3 小时前
【微服务 - easy视频 | day04】Seata解决分布式事务
java·spring boot·分布式·spring cloud·微服务·架构
大菠萝学姐4 小时前
基于springboot的旅游攻略网站设计与实现
前端·javascript·vue.js·spring boot·后端·spring·旅游
hour_go5 小时前
DeepHunt微服务故障定位系统核心技术解析1
微服务·云原生·架构