SpringBoot集成Prometheus实现监控
SpringBoot配置Prometheus
- pom.xml 引入监控以及prometheus依赖
<dependency><groupId>io.micrometer</groupId><artifactId>micrometer-registry-prometheus</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency>
- 自定义指标
引入上面两个依赖之后,SpringBoot的/actuator/prometheus路径会默认暴露一些指标。

prometheus通过Http协议拉取的指标数据格式为
指标名 {标签} 值
如 jvm_memory_max_bytes{application=“blog”,area=“heap”,id=“Eden Space”,} 7.1630848E7
这个指标的指标名是jvm_memory_max_bytes,标签是 {application=“blog”,area=“heap”,id=“Eden Space”,},而指标值是 7.1630848E7,将来使用PromQL查询时,标签可以起到筛选条件的作用。
除了引入依赖所提供的指标外,还可以自定义指标。
@SuppressWarnings("all")
@Component
public class MetricsCounter {private static Counter loginCounter = null;private static Counter registerCounter = null;private static AtomicInteger atomicInteger;public MetricsCounter(MeterRegistry registry) {loginCounter = registry.counter("login_nums");registerCounter = registry.counter("register_nums");atomicInteger = registry.gauge("ssl_expire_days", new AtomicInteger(10));}/*** 此方法可能会被多线程执行,需要考虑线程安全问题*/public synchronized static void incrLogin() {loginCounter.increment();}public synchronized static void incrRegister() {registerCounter.increment();}public static void updateSslExpireDays(){atomicInteger.set(new Random().nextInt(100));}}
通过拿到MeterRegistry 自定义指标,这里定义了两种类型的指标,一种是Counter 计数器,值只增不减,一种是gauge,gauge类型可以随意修改。
- 编写一个接口,改变指标
@RestController
public class TestRest {@GetMapping("t1")public String t1(){MetricsCounter.incrLogin();MetricsCounter.incrRegister();MetricsCounter.updateSslExpireDays();return "t1";}}
- 访问路径

可以看到最新的指标值。
二 、 Prometheus 端配置
SpringBoot将指标暴露出去后,还需要配置Prometheus 的配置文件,让Prometheus 定时去访问路径拉取到指标。
# my global config
global:scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.# scrape_timeout is set to the global default (10s).# Alertmanager configuration
alerting:alertmanagers:- static_configs:- targets:# - alertmanager:9093# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:# - "first_rules.yml"# - "second_rules.yml"# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.- job_name: "nodeExporter"# metrics_path defaults to '/metrics'# scheme defaults to 'http'.static_configs:- targets: ["192.168.240.130:9100"] #监控自己主机上的端口- job_name: "springboot"scrape_interval: 3s # 多久采集一次数据scrape_timeout: 3s # 采集时的超时时间metrics_path: '/actuator/prometheus' # 采集的路径static_configs: # 采集服务的地址,设置成Springboot应用所在服务器的具体地址- targets: ["192.168.1.103:8188"]
alerting : 配置告警管理器地址
rule_files : 配置告警 规则
scrape_configs : 配置指标抓取规则,在这个配置项下配置SpringBoot的指标路径。
- 启动promteus
nohup ./prometheus --config.file=./prometheus.yml &
启动后的端口默认是 9090

可以在上述的input输入框中输入PromQL进行对指标的查询。
具体的算术运算符、关系运算符以及内置函数等 可参考 Prometheus官网。
到此SpringBoot已完成与Prometheus的整合。
相关文章:
SpringBoot集成Prometheus实现监控
SpringBoot配置Prometheus pom.xml 引入监控以及prometheus依赖 <dependency><groupId>io.micrometer</groupId><artifactId>micrometer-registry-prometheus</artifactId></dependency><dependency><groupId>org.springfram…...
【操作系统笔记十】缓存一致性
CPU 核心之间数据如何传播 高速缓存中的值被修改了,那么怎么同步到内存中呢? ① 写直达(Write-Through)② 写回(Write-Back) 写直达(Write-Through) 简单,但是很慢&am…...
lS1028 + 六网口TSN 硬交换+QNX/Linux实时系统解决方案在轨道交通系统的应用
lS1028 六网口TSN 硬交换QNX/Linux实时系统解决方案在轨道交通系统的应用 以下是在轨道交通应用的实物: CPUNXP LS1028A架构双核Cortex-A72主频1.5GHzRAM2GB DDR4ROM8GB eMMCOSUbuntu20.04供电DC 12V工作温度-40℃~ 80℃ 功能数量参数Display Port≤1路支持DP1.3…...
实现字符串反转函数
实现字符串反转 #include <stdio.h> #include <string.h>void reverse(char *str) {int len = strlen(str);...
抽检监测实施
声明 本文是学习GB-T 42893-2023 电子商务交易产品质量监测实施指南. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本文件提供了开展电子商务交易的有形产品质量监测的总则,监测准备、监测实施、监测效果评价 与反馈等过程指导…...
C++中的静态库与动态库
文章目录 静态库构建静态库 动态库构建动态库 它们的不同参考文章 单独提这个 库,我想我们在coding过程中,可能也会知道一两个词,如 标准库、xx库等。库作为一组已编写好、组织好的、可复用的资源接口,可以被用于其他程序。很不…...
UGUI 绘制线段
描述 点击鼠标左键在屏幕上绘制线段 准备 VertexHelper 网格绘制工具类向量、叉乘RectTransformUtility.ScreenPointToLocalPointInRectangleSetVerticesDirtyOnPopulateMesh 思路 鼠标按下,记录线段起点;鼠标持续按下,记录鼠标当前帧的…...
详细学习Mybatis(2)
详细学习Mybatis(2) 一、Mybatis核心配置文件详细解释1.1 environment(环境)1.2 事务管理器(transactionManager)1.3、dataSource(数据源)1.4、properties1.5、mapper 一、Mybatis核…...
LinkedList与链表
目录 一、Arraylist的缺陷 二、链表 2.1 链表的概念和结构 2.2 链表的实现 三、链表面试题 3.1 删除链表中所有值为val的节点 3.2 反转一个单链表 3.3 链表的中间节点 3.4 将有序链表合并 3.5 输出倒数第k个节点 3.6 链表分割 3.7 链表的回文结构 3.8 找两个链表的公共节…...
纳米软件芯片自动化测试系统测试电源芯片稳压反馈的方法
在一些电源芯片或稳压芯片中,通常内部都会有稳压反馈电路,这些电路可以将输入电压通过内部调整后输出一个稳定的输出电压,以满足电路中的稳定电源需求。也就是说芯片的稳压反馈就是内部稳压反馈电路中的电压。 芯片稳压反馈原理介绍 稳压反馈…...
微信小程序之项目基本结构、页面的基础及宿主环境
文章目录 前言一、基本组成结构基本组成小程序页面的组成部分JSON配置文件作用 二、页面基础pagesWXML和HTML的区别WXSS和CSS的区别小程序中js文件分类 三、小程序宿主环境总结 前言 微信小程序的项目基本结构、页面的基础及宿主环境 一、基本组成结构 基本组成 新建一个微信…...
C/C++鸡尾酒疗法 2023年5月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析
目录 C/C鸡尾酒疗法 一、题目要求 1、编程实现 2、输入输出 二、解题思路 1、案例分析 三、程序代码 四、程序说明 五、运行结果 六、考点分析 C/C鸡尾酒疗法 2020年6月 C/C编程等级考试一级编程题 一、题目要求 1、编程实现 鸡尾酒疗法,原指“高效抗…...
人工智能及大模型简介
一、人工智能介绍 人工智能(Artificial Intelligence),英文缩写为AI。它试图赋予机器智能的能力,使它们能够像人类一样思考、学习和做出决策。它的核心要素是数据、模型和算力。 数据是人工智能的基础,数据的质量和…...
基于springboot消防员招录系统
博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…...
手把手教你制作登录、注册界面 SpringBoot+Vue.js(cookie的灵活运用,验证码功能)
一、用户登录界面 实现思路:用户在界面输入用户名和密码传入变量。用post方法传输到后端,后端接收整个实体对象。将用户名提取出。在dao层方法中通过select注解查询,返回数据库对应的数据对象。如果返回为空则return false。不为空则通过比对…...
C++ Qt零基础入门进阶与企业级项目实战教程与学习方法分享
Qt是一个卓越的客户端跨平台开发框架,可以在Windows、Linux、macOS进行客户端开发,无缝切换,一统三端;当然除了桌面端,在移动端的早期,Qt也展现了其多才多艺,在Android和ios也可以使用Qt编写app…...
TypeScript学习记录
一、TS开发环境的搭建 1、下载并安装node.js 2、使用npm全局安装typeScript 进入命令行输入:npm i -g typescript 3、创建一个ts文件 4、使用tsc对ts文件进行编译 进入命令行进入ts文件所在目录执行命令:tsc 文件名.ts 二、TS基本变量 1、类型声…...
vue内置组件Transition的详解
1. Transition定义 Vue 提供了两个内置组件,可以帮助你制作基于状态变化的过渡和动画: <Transition>会在一个元素或组件进入和离开 DOM 时应用动画。 <TransitionGroup> 会在一个 v-for 列表中的元素或组件被插入,移动࿰…...
中秋节听夜曲,Android OpenGL 呈现周董专属的玉兔主题音乐播放器
概述 前几天发现QQ音乐有个好玩的功能,为用户提供了多种 播放器主题,其中 原神 的主题让我眼前一亮: 当然,诸如 换肤、主题 类的功能已经屡见不鲜,但这类沉浸式播放器的听歌体验确实不错。 见猎心喜,正好…...
008_第一代软件系统架构
第一代软件系统架构 文章目录 第一代软件系统架构项目介绍软件架构和软件构架系统框架硬件组成运行系统基础库软件层 系统架构 关键字: Qt、 Qml、 关键字3、 关键字4、 关键字5 项目介绍 欢迎来到我们的 QML & C 项目!这个项目结合了 QML&…...
wsl2开发新手必看,快马平台带你轻松搞定linux环境配置与基础开发
作为一个刚接触WSL2的新手开发者,我最近在InsCode(快马)平台上完成了一个Linux环境配置的入门项目,整个过程比想象中简单很多。这里把我的学习笔记分享给大家,希望能帮助其他新手少走弯路。 WSL2安装与配置 刚开始最头疼的就是安装环节&#…...
三层交换+单臂路由+ACL网络配置
一、拓扑与IP规划设备VLAN网关IP地址PC1/PC32192.168.2.254192.168.2.1/2PC23192.168.3.254192.168.3.1PC44192.168.4.254192.168.4.1PC55192.168.5.254192.168.5.1PC66192.168.6.254192.168.6.1二、交换机配置LSW1system-view vlan batch 2 3 4 5 6 interface GigabitEthernet…...
跨境多币种支付系统的实现
随着全球化贸易与数字经济深度融合,跨境多币种支付已成为跨境电商、外贸 B2B、SaaS 出海、国际文旅等场景的核心基础设施。一套稳定、合规、低成本的多币种支付系统,既要解决多币种兑换、跨境清算、汇率波动等技术难题,也要满足全球范围内反洗…...
Fluxion多语言支持终极指南:从.lang文件到本地化shell脚本的完整实现
Fluxion多语言支持终极指南:从.lang文件到本地化shell脚本的完整实现 【免费下载链接】fluxion Fluxion is a remake of linset by vk496 with enhanced functionality. 项目地址: https://gitcode.com/gh_mirrors/fl/fluxion Fluxion是一款功能强大的无线网…...
OpenProject企业级项目管理平台部署架构与实践指南
OpenProject企业级项目管理平台部署架构与实践指南 【免费下载链接】openproject OpenProject is the leading open source project management software. 项目地址: https://gitcode.com/GitHub_Trending/op/openproject OpenProject作为领先的开源项目管理软件&#x…...
SMUDebugTool终极指南:如何深度调试AMD Ryzen处理器底层硬件
SMUDebugTool终极指南:如何深度调试AMD Ryzen处理器底层硬件 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: http…...
如何对比 SEO 优化公司的服务
了解 SEO 优化公司的服务 在当今数字化时代,SEO(搜索引擎优化)已经成为了企业在互联网上获得曝光和流量的重要手段。选择一家合适的SEO优化公司,对于提升网站排名和增加业务机会至关重要。如何对比SEO优化公司的服务呢࿱…...
Flux Sea Studio 海景摄影生成工具:AIGC内容创作革命——海景摄影从拍摄到生成的范式转变
Flux Sea Studio 海景摄影生成工具:AIGC内容创作革命——海景摄影从拍摄到生成的范式转变 想象一下,你脑海中浮现出一幅画面:史前时代的海洋,巨大的沧龙在泛着磷光的海浪中游弋;或者,一颗遥远星球的海岸线…...
OpenClaw定时任务:Qwen3.5-9B每日自动抓取行业资讯
OpenClaw定时任务:Qwen3.5-9B每日自动抓取行业资讯 1. 为什么需要自动化资讯服务? 作为一个技术从业者,每天早晨打开电脑的第一件事就是查看行业动态。但手动浏览十几个网站、筛选重复内容、整理关键信息的过程实在太耗费时间。更糟糕的是&…...
Leader让我带5个外包,出了问题算我的,绩效好了算团队的,每天当保姆还不如自己写,管理岗这个坑谁爱跳谁跳
看到一哥们吐槽,说leader让他带5个外包,出了问题算他的,绩效好了算团队的,每天当保姆还不如自己写代码。看完我直接笑出声了——不是觉得好笑,是太真实了,笑的是自己也经历过。说实话,这种事在互…...
