news 2026/4/2 23:54:05

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/3/20 21:26:27

告别从零开发:一站式医院陪诊平台解决方案源码上线

温馨提示&#xff1a;文末有资源获取方式启动一个线上陪诊服务平台&#xff0c;面临开发成本高、周期长、功能不匹配等挑战。一套现成的、深度定制的医院陪诊问诊小程序源码&#xff0c;直接针对这些痛点&#xff0c;通过其丰富的内置功能&#xff0c;为运营者实现快速启动与高…

作者头像 李华
网站建设 2026/4/2 12:22:35

PaddlePaddle篆书隶书识别系统

PaddlePaddle篆书隶书识别系统 在数字化浪潮席卷全球的今天&#xff0c;中华古老文字——篆书与隶书&#xff0c;正面临一场技术革命。博物馆里泛黄的碑拓、残破的竹简、卷轴上的墨迹&#xff0c;曾长期依赖专家逐字辨认&#xff0c;耗时费力且难以普及。而如今&#xff0c;借助…

作者头像 李华
网站建设 2026/4/2 10:51:37

基于SpringBoot的校园新闻发布平台 融媒体多用户242n6pri

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

作者头像 李华
网站建设 2026/3/29 12:18:24

PaddlePaddle诗词接龙AI游戏开发

PaddlePaddle诗词接龙AI游戏开发 在智能音箱里听AI吟诗&#xff0c;在教育App中与机器人对对子&#xff0c;甚至在文旅景区通过语音互动完成一场“人机飞花令”——这些看似遥远的场景&#xff0c;正随着中文自然语言处理技术的进步悄然成为现实。而在这背后&#xff0c;一个国…

作者头像 李华
网站建设 2026/3/31 19:05:01

【Open-AutoGLM网页使用全指南】:手把手教你5步玩转智能自动化工具

第一章&#xff1a;Open-AutoGLM网页怎么用 Open-AutoGLM 是一个基于 AutoGLM 框架的开源网页工具&#xff0c;旨在帮助用户快速实现自然语言任务的自动化处理。通过其简洁的界面&#xff0c;用户无需编写代码即可完成文本生成、摘要提取、问答系统等常见 NLP 任务。 访问与登…

作者头像 李华
网站建设 2026/3/28 8:50:57

【RT-DETR涨点改进】全网独家首发、特征融合创新篇 | ACM 2025顶会 | 引入DAAttn差异感知注意力融合模块,通过动态调整注意力,使模型更准确地识别关键内容,提高精度、并减少冗余计算

一、本文介绍 🔥本文给大家介绍使用 DAAttn 差异感知注意力融合模块改进RT-DETR网络模型,模型能够在变化检测任务中更精确地识别目标,尤其是在复杂背景和微小变化的情况下。它能够提高RT-DETR的精度、鲁棒性,并减少无关噪声的影响,提升小目标和细节变化的检测能力,同时…

作者头像 李华