当前位置: 首页 > article >正文

【运维监控】Prometheus+grafana监控spring boot 3运行情况

  • 运维监控系列文章入口:【运维监控】系列文章汇总索引

文章目录

  • 一、prometheus
  • 二、grafana
  • 三、创建java应用及配置
    • 1、pom.xml
    • 2、application.properties
    • 3、java 类
    • 4、验证
  • 四、grafana集成prometheus监控springboot应用
    • 1、修改prometheus配置及重启
    • 2、导入grafana模板
    • 3、验证


  • 本示例通过spring boot自带的监控信息暴露出来,然后将数据收集到prometheus中,最后通过grafana的dashboard导入模板进行可视化。
  • 本示例分为四个部分,即prometheus、grafana部署、springboot示例和最后的集成。
  • 说明:本示例中的部署环境没有要求,即应用部署的机器根据实际情况而定,只要网络连通即可。

关于java应用的监控本系列有文章如下:
【运维监控】influxdb 2.0+telegraf 监控tomcat 8.5运行情况
【运维监控】influxdb 2.0+grafana 监控java 虚拟机以及方法耗时情况
【运维监控】Prometheus+grafana监控tomcat运行情况
【运维监控】Prometheus+grafana监控spring boot 3运行情况

一、prometheus

参考:【运维监控】prometheus+node exporter+grafana 监控linux机器运行情况关于prometheus的部署。

二、grafana

参考:【运维监控】prometheus+node exporter+grafana 监控linux机器运行情况 关于grafana的部署。

三、创建java应用及配置

本处使用的是一个简单spring boot 3的应用,对外开启2个restful接口,同时引入prometheus的包。

1、pom.xml

仅列出引入的版本、必须的依赖和编译器(根据你自己的环境而定)。

<properties>
    <maven.compiler.source>17</maven.compiler.source>
    <maven.compiler.target>17</maven.compiler.target>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.0.0</version>
</parent>

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

	<dependency>
	 <groupId>org.projectlombok</groupId>
	 <artifactId>lombok</artifactId>
	 <scope>provided</scope>
	</dependency>
	
	<dependency>
	 <groupId>org.springframework.boot</groupId>
	 <artifactId>spring-boot-starter-actuator</artifactId>
	</dependency>
	
	<dependency>
	 <groupId>io.micrometer</groupId>
	 <artifactId>micrometer-registry-prometheus</artifactId>
	 <version>1.12.5</version>
	</dependency>
</dependencies>

2、application.properties

仅列出和本示例有关的内容,其他忽略或默认。

management.endpoints.web.exposure.include=*
management.endpoint.prometheus.enabled=true

3、java 类

App.java

package com.win;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class App {
    //url/abc.json
    public static void main(String[] args) {
        SpringApplication.run(App.class,args);
    }
}

TestController.java

package com.win.test;

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;

import java.sql.Date;
import java.text.SimpleDateFormat;

@Slf4j
@RestController
@RequestMapping("/test")
@CrossOrigin
public class TestController {
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss-SSSS");

    // http://localhost:8080/test/example
    // http://localhost:8080/test/example?message=test
    @GetMapping("/example")
    public String completion(
            @RequestParam(value = "message", defaultValue = "讲个笑话") String message) {
        try {
            Thread.sleep(100);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
        log.info("当前时间:{},方法名称:{}", dateFormat.format(new Date(System.currentTimeMillis())), new Object() {
        }.getClass().getEnclosingMethod().getName());
        return message;
    }

    // http://localhost:8080/test/example/test.json?message=test
    @GetMapping("/example/test.json")
    public String completion2(
            @RequestParam(value = "message", defaultValue = "讲个笑话") String message) {
        try {
            Thread.sleep(100);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
        log.info("当前时间:{},方法名称:{}", dateFormat.format(new Date(System.currentTimeMillis())), new Object() {
        }.getClass().getEnclosingMethod().getName());
        return message;
    }
}

4、验证

启动应用,查看http://localhost:8080/actuator/prometheus链接是否可获取到相关监控的信息即可。出现如下图即表示完成。
在这里插入图片描述

四、grafana集成prometheus监控springboot应用

1、修改prometheus配置及重启

在prometheus的配置文件(prometheus.yml)中添加如下配置部分

  - job_name: "springboot_node_3.105"
    metrics_path: "/actuator/prometheus"
    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ["192.168.3.105:8080"]

重启prometheus后,并验证是否收集到监控信息。
查看Prometheus是否监控到运行的spring boot应用如下图。
在这里插入图片描述
查看prometheus是否收集到监控信息如下图(查询jvm_memory_max_bytes)
在这里插入图片描述

2、导入grafana模板

导入过程不再赘述,参考文章:【运维监控】Prometheus+grafana监控tomcat8.5 运行情况
本示例导入的模板ID是12900和21319。

3、验证

以上所涉及的服务均能正常的运行,以及验证都通过。
本示例为了体现有更多的数据可验证,以便能更清楚的看到效果,建议自己多做一点接口的调用查看运行情况,否则不能直观的体现出监控的结果。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以上,就完成了grafana集成prometheus监控springboot应用。
至此,关于java应用的监控本系列有文章如下:
【运维监控】influxdb 2.0+telegraf 监控tomcat 8.5运行情况
【运维监控】influxdb 2.0+grafana 监控java 虚拟机以及方法耗时情况
【运维监控】Prometheus+grafana监控tomcat运行情况
【运维监控】Prometheus+grafana监控spring boot 3运行情况


http://www.kler.cn/a/303328.html

相关文章:

  • aws-athena查询语句总结
  • react-redux useSelector钩子 学习样例 + 详细解析
  • 【CVPR2024】2024年CVPR的3D 目标检测的综述(还在补充中)
  • 手动实现promise的all,race,finally方法
  • 记录使用documents4j来将word文件转化为pdf文件
  • 简单叙述 Spring Boot 启动过程
  • 实现快速产出的短视频剪辑工具
  • Object.entries()
  • 力扣之1783.大满贯数量
  • zabbix之钉钉告警
  • SpringMVC与SpringBoot的区别
  • Docker续9:使用docker-compose部署nmt项目,在haproxy中代理mysql负载均衡
  • k8s的搭建
  • 【Clickhouse】Clickhouse数据库简介
  • mysql 日志恢复
  • Python数据分析与可视化基础教程
  • Linux系统下配置和测试Redis服务
  • 探索未来住宿体验:酒店触摸开关的科技魅力
  • 【API安全】威胁猎人发布超大流量解决方案
  • SVN的使用技巧
  • [机器学习]聚类算法
  • Servlet学习详解--基本涵盖所有Servlet知识点
  • 取消Cursor的注释斜体字风格
  • Java8函数式接口全攻略
  • 北大阿里:新出炉的LLM偏好对齐方法综述
  • SAP Fiori-Vscode 环境搭建中npm报错