3.8 Spring Boot监控:Actuator+Prometheus+Grafana可视化

在Spring Boot应用中,通过整合Actuator、Prometheus和Grafana可以构建完整的监控体系,实现指标采集、存储和可视化。以下是具体实现步骤:


一、Spring Boot Actuator 配置

作用:暴露应用健康指标、性能数据等监控端点。

1. 添加依赖
 

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>
2. 配置Actuator端点(application.yml)
 

yaml

management:endpoints:web:exposure:include: "health,info,prometheus"  # 暴露Prometheus格式指标endpoint:health:show-details: alwaysprometheus:enabled: truemetrics:export:prometheus:enabled: truetags:  # 自定义全局标签(如应用名)application: my-spring-app
3. 验证端点

访问 http://localhost:8080/actuator/prometheus,查看原始指标数据。


二、Prometheus 配置

作用:定时抓取Spring Boot的指标数据并存储。

1. 安装Prometheus
 

bash

docker run -d --name prometheus -p 9090:9090 prom/prometheus
2. 配置抓取目标(prometheus.yml)
 

yaml

scrape_configs:- job_name: 'spring-boot-app'scrape_interval: 15smetrics_path: '/actuator/prometheus'static_configs:- targets: ['host.docker.internal:8080']  # Docker中访问宿主机labels:application: 'my-spring-app'
3. 重启Prometheus
 

bash

docker restart prometheus
4. 验证数据抓取

访问 http://localhost:9090/targets,确保状态为 ​UP


三、Grafana 配置

作用:可视化展示Prometheus中的监控数据。

1. 安装Grafana
 

bash

docker run -d --name grafana -p 3000:3000 grafana/grafana
2. 添加数据源
  1. 登录Grafana(默认账号:admin/admin)。
  2. Configuration > Data Sources > Add data source,选择 ​Prometheus
  3. 配置URL:http://host.docker.internal:9090(Docker环境)。
3. 导入仪表盘模板
  1. Create > Import,输入官方模板ID:4701(JVM监控)或 11378(Spring Boot)。
  2. 选择数据源为Prometheus,调整时间范围和刷新频率。

四、自定义监控指标

通过Micrometer注册自定义业务指标:

1. 注册计数器
 

java

import io.micrometer.core.instrument.Counter;
import io.micrometer.core.instrument.MeterRegistry;@RestController
public class MyController {private final Counter apiCounter;public MyController(MeterRegistry registry) {apiCounter = Counter.builder("api.requests.total").description("Total API requests").tag("endpoint", "/my-api").register(registry);}@GetMapping("/my-api")public String myApi() {apiCounter.increment();return "OK";}
}
2. 在Grafana中查询

使用PromQL查询自定义指标:

 

promql

sum(rate(api_requests_total[5m])) by (endpoint)

五、安全加固(可选)

1. 保护Actuator端点
 

java

@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {@Overrideprotected void configure(HttpSecurity http) throws Exception {http.authorizeRequests().antMatchers("/actuator/health").permitAll().antMatchers("/actuator/**").hasRole("ADMIN").and().httpBasic();}
}
2. Prometheus认证

prometheus.yml中配置Basic Auth:

 

yaml

basic_auth:username: adminpassword: secret

六、监控指标示例

  1. JVM监控
    • 内存使用:jvm_memory_used_bytes
    • 线程数:jvm_threads_live
  2. HTTP请求
    • QPS:http_server_requests_seconds_count
    • 延迟:http_server_requests_seconds_sum
  3. 系统资源
    • CPU使用率:system_cpu_usage
    • 磁盘空间:disk_free_bytes

七、优化与告警

  1. Grafana Alerting:设置阈值触发通知(如CPU > 80%)。
  2. Alertmanager集成:配置邮件、Slack等通知渠道。
  3. 日志联动:结合ELK或Loki实现日志与指标关联分析。

通过以上步骤,可快速搭建Spring Boot应用的监控可视化平台,实时掌握应用健康状态和性能瓶颈。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/73798.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

启幕数据结构算法雅航新章,穿梭C++梦幻领域的探索之旅——二叉树序列构造探秘——堆的奥义与实现诗篇

人无完人&#xff0c;持之以恒&#xff0c;方能见真我&#xff01;&#xff01;&#xff01; 共同进步&#xff01;&#xff01; 文章目录 一、堆的定义与结构二、堆的实现1.堆的初始化和销毁堆的初始化堆的销毁 2.向上调整算法和入堆向上调整算法入堆 3.向下调整算法和出堆顶数…

“Failed to Load SteamUI.dll” 错误详解:全面解析与高效解决方案,助你快速修复 Steam 客户端问题

在使用 Steam 客户端时&#xff0c;你是否遇到过 failed to load steamui.dll 错误&#xff1f;这个令人头疼的问题可能导致 Steam 无法正常启动&#xff0c;影响游戏体验。Failed to load steamui.dll 错误通常与文件损坏、系统配置或软件冲突有关&#xff0c;但无需担心&…

STM32 DAC详解:从原理到实战输出正弦波

目录 一、DAC基础原理1.1 DAC的作用与特性1.2 DAC功能框图解析 二、DAC配置步骤2.1 硬件配置2.2 初始化结构体详解 三、DAC数据输出与波形生成3.1 数据格式与电压计算3.2 正弦波生成实战3.2.1 生成正弦波数组3.2.2 配置DMA传输3.2.3 定时器触发配置 四、常见问题与优化建议4.1 …

CNN 稠密任务经典结构

FCN UNet FPN FCNUNETFPNpadding无&#xff08;逐渐变小&#xff09; 有&#xff08;左右对称&#xff09;上采样 双线性双线性 最近邻跳跃链接 相加 Cropcat 1x1卷积相加 三个网络差不多&#xff0c;UNet名字最直观&#xff0c;后续流传…

AI学习第二天--监督学习 半监督学习 无监督学习

目录 1. 监督学习&#xff08;Supervised Learning&#xff09; 比喻&#xff1a; 技术细节&#xff1a; 形象例子&#xff1a; 2. 无监督学习&#xff08;Unsupervised Learning&#xff09; 比喻&#xff1a; 技术细节&#xff1a; 形象例子&#xff1a; 3. 半监督学…

Elasticsearch:为推理端点配置分块设置

推理端点对一次可处理的文本量有限&#xff0c;具体取决于模型的输入容量。分块&#xff08;Chunking&#xff09; 是指将输入文本拆分成符合这些限制的小块的过程&#xff0c;在将文档摄取到 semantic_text 字段时会进行分块。分块不仅有助于保持输入文本在可处理范围内&#…

Unity打包Android平台调用sherpa-onnx

https://github.com/xue-fei/sherpa-onnx-unity 最初测试了PC的Win和Linux平台&#xff0c;直接从nuget缓存包中拷贝相关文件&#xff0c;按示例写了语音转文字和文字转语音的测试代码&#xff0c;功能都正常。 然后是Android端&#xff0c;看了示例发现有编译好的jni.so之类的…

传统会议室接入神旗视讯-2 Android会议室大屏设备 (Maxhub, Newline, TCL等)

随着企业对视频会议安全性、稳定性和统一管理的需求日益增长&#xff0c;私有化视频会议系统凭借其全平台兼容性、高安全性部署和智能化会控能力&#xff0c;成为政企客户的核心选择。Android会议室大屏设备&#xff08;Maxhub, Newline, TCL等&#xff09;作为国内主流智能会议…

个人blog系统 前后端分离 前端js后端go

系统设计&#xff1a; 1.使用语言&#xff1a;前端使用vue&#xff0c;并使用axios向后端发送数据。后端使用的是go的gin框架&#xff0c;并使用grom连接数据库实现数据存储读取。 2.设计结构&#xff1a; 最终展示&#xff1a;仅展示添加模块&#xff0c;其他模块基本相似 前…

分支结构- P5717-三角形分类-第二十一天

洛谷题单 第二十一天&#xff1a;3.18&#xff08;周二&#xff09; 题目&#xff1a;分支结构–P5717 代码 #include <stdio.h>//本题目卡住的点&#xff1a;1.逻辑问题 2.对if-else if-else结构的运行理解&#xff0c;导致了逻辑混乱//注意&#xff1a;程序会组个…

华为OD机试 - 最长回文字符串 - 贪心算法(Java 2024 E卷 100分)

题目描述 如果一个字符串正读和反读都一样(大小写敏感),则称之为一个「回文串」。例如: level 是一个「回文串」,因为它的正读和反读都是 level。art 不是一个「回文串」,因为它的反读 tra 与正读不同。Level 不是一个「回文串」,因为它的反读 leveL 与正读不同(因大小…

C语言文件操作入门

本节重点 理解文件的形式与基本概念二进制文件与文本文件文件的打开与关闭文件读写函数、文件缓冲区 正文开始--------------------------------------------------------------------------------------------------------------------- 一、为什么使用文件 程序运行时数据存…

Doris:联邦认证

LDAP​ 接入第三方 LDAP 服务为 Doris 提供验证登录和组授权服务。 LDAP 验证登录​ LDAP 验证登录指的是接入 LDAP 服务的密码验证来补充 Doris 的验证登录。Doris 优先使用 LDAP 验证用户密码&#xff0c;如果 LDAP 服务中不存在该用户则继续使用 Doris 验证密码&#xff…

stm32第六天继电器

一&#xff1a;继电器 1.继电器的工作原理 继电器是一个电控开关&#xff0c;工作原理基于电磁感应&#xff0c;继电器包括一个电磁线圈和一组触点。常用于控制高电流或高电压的电路&#xff0c;例如自动控制原理&#xff0c;电力系统和自动化设备中&#xff0c;由于可靠性和电…

Vue渲染函数 - render 函数

文章目录 Vue渲染函数 - render 函数1. 什么是 render 函数2、页面展示过程3、render 函数的参数4. 如何使用&#xff08;1&#xff09;基本渲染&#xff08;2&#xff09;传递属性和事件&#xff08;3&#xff09;条件渲染 5. render 函数的实际使用6.View Design 组件中的使用…

单片机自学总结

自从工作以来&#xff0c;一直努力耕耘单片机&#xff0c;至今&#xff0c;颇有收获。从51单片机&#xff0c;PIC单片机&#xff0c;直到STM32&#xff0c;以及RTOS和Linux&#xff0c;几乎天天在搞:51单片机&#xff0c;STM8S207单片机&#xff0c;PY32F003单片机&#xff0c;…

go回调函数的使用

在Go语言中&#xff0c;回调函数可以有参数&#xff0c;也可以没有参数。它们的定义和使用方式略有不同&#xff0c;但本质上都是将函数作为参数传递给另一个函数&#xff0c;并在适当的时候调用它。以下是带参数和不带参数的回调函数的示例和说明。 1. 不带参数的回调函数 不…

在 Ubuntu 中配置 NFS 共享服务的完整指南

前言 网络文件系统&#xff08;NFS&#xff09;作为 Linux 系统间实现文件共享的标准协议&#xff0c;在分布式计算和容器化部署场景中具有重要作用。本文将详细演示如何在 Ubuntu 系统上配置 NFS 服务端与客户端&#xff0c;并实现可靠的持久化挂载。 一、环境准备 系统要求…

TypeScript Symbols 深度解析:在 Vue3 中的高级应用实践

一、Symbols 核心特性解析 1.1 什么是 Symbol&#xff1f; Symbol 是 ES6 引入的原始数据类型&#xff0c;表示唯一且不可变的值&#xff0c;主要解决对象属性名冲突问题。在 TypeScript 中&#xff0c;我们通过 symbol 类型获得完整的类型支持&#xff1a; const SERIAL_KE…