news 2026/6/9 22:02:07

Prometheus监控栈 监控java程序springboot

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Prometheus监控栈 监控java程序springboot

监控java程序springboot,Prometheus监控栈:Prometheus+Grafana+Alertmanager

一、软件环境介绍

Iava程序广泛运用于各类业务场景的开发:web网站、金融服务领域,以及访问量大的业务领域中。所以本章节主要以iava的web程序为例讲解,怎么将iavaweb-springboot程序接入prometheus

主机清单

职责ip地址备注
Prometheus服务器192.168.92.11docker-compose模式的prometheus
待监控Linux192.168.92.12待准备组件:openjdk17

监控架构

二、写一个简单的springboot程序

java编辑器中,新创建一个springboot程序,为后续步骤把springboot程序的性能数据抛出做准备。(我的这个springboot工程是之前写过的oshi-app)

。pom.xml(略)

。创建主启动类testproject.Application.java(略)

。创建application.yaml(略)

。写一个视图类controller.java、用于restful测试访问(略)

。maven reload看有否工程maven加载报错

。本机运行testproject工程,看能否访问http://localhost:8080/metrics/cpuload

三、让springboot程序抛出监控数据

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

micrometer-registry-prometheus

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

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

spring-boot-starter-actuator

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

。添加pom.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>

。修改application.yaml

增加监控端点

server: port: 8080 # 开启tomcat指标 tomcat: mbeanregistry: enabled: true # 设置springboot应用的名称 spring: application: name: oshi-app # 暴露actuator端点数据 management: endpoints: web: exposure: include: '*' metrics: tags: application: ${spring.application.name}

。maven reload看有否工程maven加载报错

。本机运行springboot程序,访问端点数据

访问http://localhost:8080/actuator/prometheus接口,是否能获取相关指标

四、在Linux-test中部署springboot程序

4.1部署openjdk-17

test中,运行以下命令yum,需要安装openjdk(取决于本机编译用的是什么jdk版本如果本机用idk8,linux服务器也要装idk8,以此类推)

# 安装Java 17(需要root权限) sudo yum install -y java-17-openjdk.x86_64 #如果要装其他的版本,可以运行以下命令,从yum源中找到合适的jdk版本进行安装 yum search java|grep jdk # 查看java版本(验证安装) java -version

4.2 运行oshi-app的jar包

maven package打包,资源管理器中生成一个oshi-app-1.0-SNAPSHOT.jar文件

上传这个jar文件到test虚拟机的home目录,运行java命令-执行springboot程序

#以jar包方式运行springboot程序 java -jar oshi-app-0.0.1-SNAPSHOT.jar

浏览器中访问http://testip:8080/actuator/prometheus,确认可以采集到数据

五、prometheus中配置springboot的监控节点

5.1增加监控节点

在prometheus.yml文件中进行配置业务系统采集点,5s拉取一次指标,由于Prometheusserver部要在docker 中,所以访问主机IP 用test的ip

192.168.92.11的prometheus上,修改prometheus的配置文件

#进入docker-prometheus日录 cd /data/docker-prometheus #修改prometheus.yml vi prometheus/prometheus.yml

添加待监控的springboot监控

- job_name: 'springBoot' #监控任务名称,自定义标识 scrape_interval: 5s #采集间隔,每5秒采集一次指标 metrics_path: '/actuator/prometheus' #指标路径,Spring Boot Actuator的Prometheus端点 static_configs: - targets: ['192.168.92.12:8080'] #要监控的目标地址和端口 labels: instance: 'springboot服务器' #为这个目标添加标签,便于识别

保存配置后,让配置生效

批prometheus中执行 curl -X POST http://localhost:9090/-/reload

刷新访问http://192.168.92.11:9090/targets?search=、确认新监控的springboot服务器是否生效

5.2 springboot监控指标查询

HTTP请求 http_server_requests_seconds_count: 请求次数统计 http_server_requests_seconds_max: 单次HTTP请求耗时峰值(秒) http_server_requests_seconds_sum: 所有HTTP请求累计耗时(秒) JVM缓冲区 jvm_buffer_count_buffers: 缓冲区数量 jvm_buffer_memory_used_bytes: 缓冲区内存使用大小(字节) jvm_buffer_total_capacity_bytes: 缓冲区总容量大小(字节) 类信息 jvm_classes_loaded_classes: 当前已加载类的数量 jvm_classes_unloaded_classes_total: 已卸载类的总数 内存信息 jvm_memory_committed_bytes: JVM已提交内存大小(字节) jvm_memory_max_bytes: JVM最大可用内存大小(字节) jvm_memory_used_bytes: JVM当前已使用内存大小(字节) GC信息 jvm_gc_live_data_size_bytes: GC后存活数据大小(字节) jvm_gc_max_data_size_bytes: GC处理的最大数据量(字节) jvm_gc_memory_allocated_bytes_total: GC期间分配的内存总量(字节) jvm_gc_memory_promoted_bytes_total: 晋升到老年代的内存总量(字节) jvm_gc_pause_seconds: GC暂停时间总计(秒) jvm_gc_pause_seconds_max: 最大GC暂停时间(秒) 线程信息 jvm_threads_daemon_threads: 守护线程数 jvm_threads_live_threads: 存活线程数 jvm_threads_peak_threads: 峰值线程数 jvm_threads_states_threads{state="RUNNABLE"}: 不同状态下的线程数(如RUNNABLE状态) Tomcat信息 tomcat_threads_busy_threads: 忙碌的线程数 tomcat_threads_config_max_threads: 配置的最大线程数 tomcat_threads_current_threads: 当前线程数 tomcat_global_error_total: 总体报错数 tomcat_global_received_bytes_total: 接收的字节总数 tomcat_global_sent_bytes_total: 发出的字节总数 tomcat_global_request_max_seconds: 每秒最大请求数 tomcat_global_request_seconds: 每秒请求数 tomcat_sessions_active_current_sessions: 当前活跃会话数 tomcat_sessions_active_max_sessions: 活跃会话的最大数量 tomcat_sessions_alive_max_seconds: 会话活跃的最长时间(秒) tomcat_sessions_created_sessions_total: 累计创建的会话数 tomcat_sessions_expired_sessions_total: 累计失效的会话数 tomcat_sessions_rejected_sessions_total: 累计拒绝的会话数 进程信息 process_cpu_usage: CPU使用率 process_files_max_files: 可用的最大文件描述符数 process_files_open_files: 当前打开的文件描述符数 process_start_time_seconds: 进程启动时刻(自纪元以来的秒数) process_uptime_seconds: 进程运行时间(秒) 系统信息 system_cpu_count: CPU核心数 system_cpu_usage: 系统CPU使用情况 system_load_average_1m: 系统平均负载(过去1分钟)

5.3 grafana中添加springboot的监控模板

copy id to clipboard->grafana的dashboards中Import dashboard

https://grafana.com/grafana/dashboards/4701-jvm-micrometer/


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/7 1:37:44

Open-AutoGLM独立出来了(核心能力全面升级)

第一章&#xff1a;Open-AutoGLM 独立出来了随着大模型自动化推理需求的增长&#xff0c;Open-AutoGLM 正式从原框架中解耦&#xff0c;成为一个独立运行的开源项目。这一变化不仅提升了模块化程度&#xff0c;也使得开发者能够更灵活地集成和扩展其功能。项目结构优化 独立后的…

作者头像 李华
网站建设 2026/6/7 1:46:07

基于SpringBoot的小型哺乳类宠物诊所管理系统 宠物医院管理系统4339s0c8

目录已开发项目效果实现截图开发技术介绍核心代码参考示例1.建立用户稀疏矩阵&#xff0c;用于用户相似度计算【相似度矩阵】2.计算目标用户与其他用户的相似度系统测试总结源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;已开发项目效果…

作者头像 李华
网站建设 2026/6/7 2:10:54

PaddlePaddle戏曲唱腔分析AI模型

PaddlePaddle戏曲唱腔分析AI模型技术解析 在数字技术席卷各行各业的今天&#xff0c;那些曾经依赖口传心授、手抄乐谱传承的艺术形式正面临前所未有的挑战与机遇。传统戏曲&#xff0c;作为中华文化绵延数百年的声音记忆&#xff0c;其唱腔中蕴含的音律之美、情感之深&#xff…

作者头像 李华
网站建设 2026/6/7 1:48:07

PaddlePaddle谜语生成与解答AI

PaddlePaddle谜语生成与解答AI 在智能音箱里听AI讲个冷笑话已经不稀奇了&#xff0c;但如果它能出口成章地编一个“麻屋子&#xff0c;红帐子&#xff0c;里面住着白胖子”的中文谜语&#xff0c;并且还能反过来猜出你随口说的谜面——这背后考验的可就不只是算法&#xff0c;…

作者头像 李华
网站建设 2026/6/7 2:28:07

【RT-DETR涨点改进】全网独家首发、细节涨点创新篇 | ACM 2025顶会 | 引入 LGFB 局部-全局融合模块,同时提升局部细节捕捉和全局上下文理解能力,在变化检测、小目标检测表现出色

一、本文介绍 🔥本文给大家介绍使用局部-全局融合模块 (LGFB) 改进RT-DETR网络模型,可以显著提升模型的精度和鲁棒性。LGFB通过结合局部注意力(SWSA)和全局自注意力(EGSA),帮助RT-DETR同时捕捉细粒度的局部变化和大范围的全局信息,从而提高目标检测精度,尤其是在复杂…

作者头像 李华
网站建设 2026/6/7 2:21:31

PaddlePaddle体育赛事实时解说AI

PaddlePaddle体育赛事实时解说AI 在一场校园足球赛的直播画面中&#xff0c;没有专业解说员&#xff0c;也没有导播团队&#xff0c;但观众却能听到流畅自然的中文语音播报&#xff1a;“第67分钟&#xff0c;10号球员带球突破中场&#xff0c;直塞右路空档——传中&#xff01…

作者头像 李华