SpringBoot整合Prometheus构建高效、灵活的监控系统

开发 前端
SpringBoot整合Prometheus的原理是SpringBoot应用将metrics数据上报给Prometheus,数据上报有基于Pushgateway方式和直接上报方式。

  对于任何一个应用系统来说,监控都是至关重要的一个组成部分。如果应用系统在运行过程当中出现故障(如网络中断、内存溢出、磁盘空间不足、软件自身Bug),任何一个方面出现问题都有可能影响到整个系统的正常运行,甚至给企业带来资损,因此监控必不可少。那么SpringBoot项目如何实现一套完整、成熟的监控系统呢?    

    首先,SpringBoot是一个可以快速创建独立、可运行的、生产级别的Spring应用的项目框架,Prometheus是一个开源的监控和告警工具,广泛应用于微服务架构的监控。将SpringBoot应用与Prometheus整合,可以实现应用的实时监控和性能分析,帮助开发人员快速定位和解决问题。下面我们来实现SpringBoot整合prometheus。

1、SpringBoot项目添加相关的依赖

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>


    <!--prometheus-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>


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

2、SpringBoot项目添加yml配置

server:
  port: 8081


spring:
  application:
    name: prometheus-demo


#prometheus
management:
  endpoints:
    web:
      exposure:
        include: '*'

    在Springboot整合Prometheus的时候,项目启动后会开启Actuator服务,SpringBoot Actuator会自动配置一个URL为 /actuator/Pprometheus的http服务来供prometheus抓取数据。

3、添加测试controller

@RestController
@RequestMapping("/test")
public class OrderController {


    @GetMapping("/test1")
    public String test1(){


        return "success";
    }


    @GetMapping("/test2")
    public String test2(){
        List<byte[]> byteList = new ArrayList<>();
        while (true){
            byteList.add(new byte[1024*1024*2]);
            try {
                Thread.sleep(2000);
            } catch (InterruptedException e){


            }
        }
    }
}

4、启动Prometheus后检查springBoot项目是否正常

    在SpringBoot配置好Prometheus配置文件后,启动SpringBoot项目,我们需要检查项目在Prometheus上的状态是否正常,如下图Springboot项目的启动图:

图片

    待Springboot项目启动完成后,在Prometheus中查询Springboot项目的监控状态,如下图所示的正常监控状态:

图片图片

项目在Prometheus上的状态是绿色表示是正常的状态。

5、prometheus的配置文件中添加SpringBoot监控任务

图片图片

scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'
    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.
    static_configs:
    - targets: ["Prometheus_ip:9090"]
  - job_name: 'springboot-prometheus'
    metrics_path: '/actuator/prometheus'
    static_configs:
    - targets: ["springboot项目的ip:8081"]

6、Grafana配置prometheus数据源

6.1 添加prometheus

图片图片

6.2 配置prometheus

图片图片

    点击Save&Test可以看到如下的提示就是表示添加Prometheus数据源成功:

图片图片

6.3 挑选可视化的dashborad

    通过访问https://grafana.com/grafana/dashboards这个链接去挑选可视化的dashborad,下图是一个典型的SpringBoot项目的监控可视化的dashborad:

图片图片

然后获取dashborad的编号:

图片图片

图片图片

6.4 添加dashborad到Grafana中

    在Grafana中添加dashborad,如下图所示:

图片图片

输入dashborad编号

图片图片

然后选择prometheus数据源

图片图片

配置好之后可以就看到Granafa的监控面板

图片图片

7、测试监控

图片图片

请求执行死循环的代码,我们可以发现请求正在被执行,如下图所示:

图片图片

执行一段时间后,再观察Granafa监控面板的效果:

图片图片

    通过监控我们发现内消耗一直不断增加,代码出现问题我们可以第一时间快速的发现,然后定位解决。

总结:

(1)SpringBoot整合Prometheus的原理是SpringBoot应用将metrics数据上报给Prometheus,数据上报有基于Pushgateway方式和直接上报方式。

(2)基于Pushgateway方式适用于短期运行的应用,将metrics数据推送到Pushgateway中,由Pushgateway统一推送至Prometheus。

(3)直接上报方式适用于长期运行的应用,将metrics数据直接上报给Prometheus中。直接上报方式是通过配置文件的配置,将SpringBoot应用会把metrics数据暴露在/actuator/prometheus路径下,Prometheus通过抓取该路径的数据即可获取应用的metrics数据。

责任编辑:武晓燕 来源: 龙虾编程
相关推荐

2022-11-08 00:00:00

监控系统Prometheus

2025-02-06 09:43:08

HybridFlowRay大语言模型

2023-07-10 08:26:19

2023-09-06 08:46:47

2025-02-11 07:55:45

2020-12-30 08:09:46

运维Prometheus 监控

2025-03-06 02:00:00

.NETGrafana工具

2020-12-29 10:45:22

运维Prometheus-监控

2010-06-17 14:34:18

Rsync 使用

2011-11-29 13:09:02

2009-05-14 17:09:24

城域网宽带传送

2023-11-06 01:39:02

Go语言开发

2023-09-01 07:31:24

2020-12-28 10:13:32

运维Prometheus监控

2025-02-28 08:03:45

2015-03-12 09:42:56

2020-03-09 10:09:18

混合云云计算

2021-03-26 20:37:14

Prometheus监控指标

2012-03-08 16:06:37

2023-11-07 10:01:34

点赞
收藏

51CTO技术栈公众号