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

SpringBoot集成Prometheus

最近公司在推Prometheus,记录下如何与SpringBoot项目做整合。

Prometheus

上图均取自于Prometheus官网,关于Prometheus是什么怎么用,官网都有很清晰的说明。在其特征描述中可以看到:以调用HTTP接口的形式,拉取已经被收集好的时序数据。
简单来讲,业务集成Prometheus这个事情分为两步
- 第一步业务方Prometheus tragets收集好指标metrics后,以接口的形式暴露出来。
- 第二步Prometheus Server会对业务方暴露的接口发起HTTP调用pull metrics
最后Prometheus拿到业务方收集好的指标后,以图形化界面展示出来Prometheus web UI、Grafana
作为业务方,需要清楚如何收集自己服务的指标并以接口的形式暴露。初期接入Prometheus,考虑只收集一些系统级指标(业务级指标可根据官网文档自己实现)。而系统指标的收集(比如虚拟机线程、堆的使用情况),SpringBoot已经为我们提供了这个能力Spring Boot Actuator。

Spring Boot Actuator

在Spring官网有对Spring Boot Actuator的说明,最新的2.3.0.RELEASE文档。使用也很简单,引入依赖即可

org.springframework.boot spring-boot-starter-actuator

Spring Boot Actuator中存在Endpoints的概念

上图为官网给出的endpoints。比如常用的健康检查接口,以/actuator/health暴露,对应的endpoints为/health。在2.3.0.RELEASE版本中暴露的接口路径统一前缀为/actuator。由于这些endpoints都是服务内部敏感的接口,在2.3.0.RELEASE中默认只暴露/helath和/info接口,如果想暴露其他接口,需要在配置文件中开启。
开启暴露endpoints配置,例如/beans和/metrics

management: endpoints: web: exposure: include: - beans - metrics

其中的endpoints metrics暴露当前服务的指标,看起来很适合提供给Prometheus以获取指标。但是Prometheus对获取的指标数据格式是要求的,而metrics暴露的指标数据格式是JSON,与要求的指标格式不匹配。
不过Spring Boot Actuator在2.3.0.RELEASE版本中已经为我们考虑到了这一点(至于是从哪个版本开始支持的 =。=)

只需要引入micrometer-registry-prometheus的依赖即可,记得在配置文件中开启/prometheus接口的暴露

io.micrometer micrometer-registry-prometheus 1.5.1

简单demo
启动服务后,访问/actuator/prometheus接口,可以看到Micrometer替我们收集到的指标

2.3.0.RELEASE版本很顺利,但是问题来了,生产用的SpringBoot是1.5.4.RELEASE版本,而1.5.4.RELEASE版本文档没有提供对endpoints /prometheus的支持。最后在Micrometer官网找到了解决的办法。

Micrometer

Micrometer整合SpringBoot1.5.X版本的文档
文档中有详细描述SpringBoot1.5.X项目如何暴露Prometheus接口,只需要再引入Micrometer为低版本SpringBoot项目提供的适配依赖,注意版本一致

io.micrometer micrometer-registry-prometheus 1.0.5 io.micrometer micrometer-spring-legacy 1.0.5

简单demo
启动服务后,访问/prometheus接口,可以看到Micrometer收集到的指标

现在2.3.0.RELEASE和1.5.4.RELEASE版本的服务,都可以成功暴露出一个给Prometheus拉取指标的接口,只需要在Prometheus上进行配置即可在Prometheus WEB UI上看到效果。但生产环境的真实情况,不可能只收集一个服务的指标,是否再需要一个代理服务,该服务用来收集所有微服务的指标后,再统一暴露接口给Prometheus,需要再根据生产环境使用情况考虑。

http://www.jsqmd.com/news/465883/

相关文章:

  • FPGA内部模块详解之二 FPGA的逻辑“心脏”——可编程逻辑块(PFU/CLB)深度解析
  • SpringBoot项目中替换指定版本的tomcat
  • CVE-2026-28472
  • 我的leetcode hot100之行(持续更新)
  • 天虹提货券还能变现?揭秘隐藏的回收渠道与高价技巧 - 团团收购物卡回收
  • 2026年滨州AI关键词优化服务商综合评测与选购指南 - 2026年企业推荐榜
  • 2026年视光中心加盟市场盘点与五家实力品牌解析 - 2026年企业推荐榜
  • 拉丁超立方采样(LHS)+二阶多项式回归响应面建模+非线性规划和遗传算法多目标优化求解,MATLAB代码
  • Springboot项目中线程池使用整理
  • 探索2026年连云港值得关注的五家轨道小火车供应商 - 2026年企业推荐榜
  • 助眠神器!一款开源无广告的安卓白噪音应用!
  • 2026冲刺用!千笔AI,最强的AI论文软件
  • Spring如何处理线程并发问题
  • 官方信息:CAIE认证全年考试时间表及产品经理专属备考时间轴
  • 2026年pp回料颗粒生产厂家经验分享:谁在用稳定品质做长期生意? - 企师傅推荐官
  • 智慧旅游景区管理系统 可视化Python django flask
  • Java小白如何在互联网大厂面试中脱颖而出——从Spring Boot到微服务的技术通关
  • 大数据领域Doris的多模态数据处理能力
  • 官方说明:AI工程师认证为科研人员提供的学习支持及线上/线下考试模式说明
  • 2026年,探寻靠谱且产品优质的信号发生器生产厂家 - 品牌推荐大师
  • AI教材编写高效解决方案,低查重成果让你的教材脱颖而出!
  • 低查重AI教材写作攻略:借助AI工具高效完成教材编写任务
  • C++静态多态技术
  • 谷歌建站公司终极指南:2026年AI时代,你的“数字门面”应该交给谁? - 品牌推荐大师1
  • 2026年初至今杭州GEO优化平台权威盘点与推荐 - 2026年企业推荐榜
  • PD-1抗体如何拓展抗病毒治疗新 frontier?
  • 2026年一体化污水处理设备厂家选购指南 - 2026年企业推荐榜
  • 2026年第一季度优质150挖机出租厂家综合测评与推荐 - 2026年企业推荐榜
  • 用PS CC2017实现视频面部优化的新突破
  • AI教材编写攻略:低查重工具在手,优质教材轻松拥有