Spring Boot快速接入Prometheus监控|写给Java开发运维

Spring Boot服务监控(Prometheus) 哲学 最近看到了一句话:定乎内外之分 辩乎荣辱之境。 一个外国作家也说过: 我生命里的的最大突破之一,就是我不再为别人的看法而担忧。此后,我真的能自由的去做我认为对自己最好的事,只有在我们不需要外来的赞许时,才变得自由。 说的都很好。人就是要突破自己,就像许三多,不要在意别人的看法,做自己认为有意义的事,今天比昨天好,这不就是希望。 监控 思考完一波哲学,开始搞搞软件上的东西。这篇记录下监控配置相关的知识。 为什么需要监控系统:简单点说。随时掌握系统运行情况,保证在你预期内运行。 先不扯别的 阅读详情

不想听我废话的,直接看代码就行:https://github.com/strictnerd/spring-petclinic-compose

最近跟几个粉丝聊天吹水,说最近公司裁员严重,不仅裁掉了大部分的人,也裁掉了大部分的业务;之前公司有钱赚,什么产品都愿意做,无论行不行都会试一试,一堆没有什么流量的系统都在线上跑着,但是没有上级发话,一个也不敢停掉。站着资源不说,关键还得保证活着,基本就是运维人员要和系统同在,搞得我们这些运维苦不堪言。

公司高层领导突然变得雷厉风行,貌似是撑不下去了,不赚钱的业务开发人员全部裁掉,一个不留,对应的系统直接下线;运维人员只留下一部分,内部活水几个开发人员过来,部门从此改名为 DevOps 团队,大多数系统已经没有了,云上资源迅速收缩了一半。日常琐事基本没了,以前 KPI 写保证 xx 个系统稳定运行,现在没得写了,基本是多个人保证 1 个系统运行。没什么办法,领导发话,要精细化运营,不清楚有没有用,先活下去再说。

但是他们大多数人都是运维,语言层面 python、golang、sql 运用还算可以,日常云原生常见组件一些 Prometheus 语法之类的东西都能够熟练使用,但是有些服务压根就没有提供指标.... 对于抽象和封装太完美 Java 应用系统真是不清楚怎么上手,更不知道如何添加监控,问一些开发人员,多数对于 Prometheus 指标没有特别清晰的概念,侵入太多,就不愿意改,说来说去,只能看看 CPU、内存以及 nginx 上的 qps 和延迟。

如何为应用程序添加监控

之所以造成如上局面,主要是运维人员对于一些开发生态不了解导致的,其实对于常见 Java 应用程序基本都是基于 Spring 开发,而 Spring 本身就是封装和继承做到特别好,好到你根本不用了解他就可以在他的基础上做开发,这就是 Crud 程序员盛行的原因。而对于 Sring 监控也是一样的,也是非常简单,下面我以 SpringBoot 2.x 为例演示下对系统中所有接口以及中间件的监控。

  • 第一步添加一个 jar 依赖到应用程序中

 <dependency>
      <groupId>io.micrometer</groupId>
      <artifactId>micrometer-registry-prometheus</artifactId>
  </dependency>
  • 添加配置项

management.endpoints.web.exposure.include=prometheus
spring.application.name=spring-petclinic-compose
management.server.port=8091
management.metrics.tags.application=${spring.application.name}
  • 启动应用程序,访问: http://127.0.0.1:8091/actuator/prometheus

所有指标都有了,只要有了指标,其它一切都好说了,只要采集到指标,计算好展示出来,超过阈值进行告警。

  • 运行 Prometheus,并添加抓取配置

scrape_configs:
  - job_name: 'application'
    metrics_path: '/actuator/prometheus'
    static_configs:
      - targets: ['application:8091']

  • 添加查询

rate(http_server_requests_seconds_count[5m])

其实到这里也就差不多了,我上次在群里也是跟网友这么说的,但是反馈说根本不行,服务跑不起来,为了防止出现类似问题,我这里给出了我的一个源码 Demo 链接,只要 Java 开发环境配置好,导入到本地,就可以运行 https://github.com/strictnerd/spring-petclinic-compose

目的达到了,运维人员到这里就可以止步了;如果是开发人员还可以继续了解下如何自定义指标收集,具体代码也已经上传到 github 具体可以参考 https://github.com/strictnerd/spring-petclinic-compose

自定义指标

集成之后大家反馈的第一个问题就是指标太多,目前 io.micrometer 基本进行常见 http、tomcat、jetty、kafka、cache、redis、JVM CPU MEM、GC、logback...等等监控,具体自行查看 Spring 官网介绍 https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#actuator.metrics

如何关闭所有指标,并打开想要的指标?

management.metrics.enable.all=false
management.metrics.enable.http=false
management.metrics.enable.jvm=true

如上配置,我可以关闭所有的配置,但是唯独打开 jvm 的指标,如下所示:

这个自己根据需要进行监控指标采集和展示。

如何添加自己的指标维度

有些服务是隔离的,同一份代码但是在不同的地区部署,这个底层库已经留好了扩展结点,举个例子,比如我们需要在各个指标中加入一个 region 维度,添加如下代码即可,支持多个。

  @Bean
 MeterRegistryCustomizer<MeterRegistry> metricsCommonTags() {
  return registry -> registry.config().commonTags("region", "us-east-1");
 }

这样每个指标中就会多出一个维度。

如何对部分没有监控的接口添加切面

虽然 io.micrometer 覆盖了服务中的大多数场景,但是根据业务实际情况,肯定有组件覆盖不到的地方,怎么办?那就使用 Timed 自定义处理。

  • Timed 注解不会被 Spring 框架扫描,所以需要添加如下代码

@Bean
 TimedAspect timedAspect(MeterRegistry registry) {
  return new TimedAspect(registry);
 }
  • 在需要监控的代码片段上添加注解

  • 查看指标

总结

看完上面的介绍,你会发现简单、简单、还是 tmd 简单,但是公司系统为什么没有类似指标等可用性的监控。好听点说是公司没人推行此类技术;难听点说,系统不重要,可有可无或者说即便出了问题也会不了了知。

SpringBoot 集成 Prometheus 目录一、添加依赖二、Prometheus 安装与配置三、Grafana 安装和配置四、自定义监控指标 一、添加依赖 Maven pom.xml <!-- 第一条必须加,否则会导致 Could not autowire. No beans of 'xxxx' type found 的错误 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>sp 阅读详情

相关推荐

最佳实践|Spring Boot 应用如何快速接入 Prometheus 监控

简介:SpringBoot 微服务的开发、发布与部署只占其生命周期的一小部分,应用和系统运维才是重中之重。而运维过程中,监控工作更是占据重要位置。那么,为了对系统的状态进行持续地观测,面向Spring Boot应用我们该如何快速实现Prometheus监控接入。本文为大家详细讲解完整接入流程与接入事项! 作者:凡星 对于开发者而言,大部分传统 SSM 结构的 MVC 应用背后的糟糕体验都是来自于搭建项目时的大量配置,稍有不慎就可能踩坑。为了解决上述问题,Spring Boot 应运而生。正如其名,Spr

阿里云云栖号 3264

SpringBoot整合Prometheus

SpringBoot整合Prometheus 本文基于SpringBoot2.5.7整合Prometheus,整合依赖micrometer相关包,上报到prometheus有两种方式: 基于Pushgateway 方式上报数据到prometheus,作为网关支持多个应用上报,需要推送数据到prometheus 作为一个独立应用上报到prometheus上报,但是修改prometheus配置文件,prometheus 拉取方式 本文将对这两种方式分别进行讲解,然后简单说明下springboot 实现原理。

bearboy80的专栏 5953

快速搭建 Spring Boot 3 + Prometheus + Grafana 实现实时监控

在现代微服务架构中,服务监控和指标分析已成为维护和优化系统性能的关键需求。随着微服务数量的增加和系统复杂性的提高,开发人员需要一种可靠的方式来监控应用性能和资源使用情况。本文将从零开始讲解如何使用 Spring Boot 3、Prometheus 和 Grafana 来实现微服务的实时监控。本文将引导您使用 Java 开发语言,通过搭建 Spring Boot 3 应用程序并整合 Prometheus 和 Grafana,实现从数据采集到数据可视化的一体化监控。

喵手的博客 1754

Prometheus整合Springboot实现报警

Springboot对接alertmanager及监控部署踩坑

weixin_47794762的博客 5702

从零搭建《火影忍者》手游服务端:Linux环境部署与全流程实战

游戏服务器后端开发是构建大型多人在线体验的核心技术,其原理涉及高并发网络通信、分布式系统架构与数据一致性保障。在技术价值上,一套稳定高效的服务端不仅能支撑海量玩家实时交互,更是游戏业务逻辑、经济系统和安全防线的基石。典型的应用场景包括MMORPG、回合制卡牌、SLG等中重度手游。本文以《火影忍者》IP的横版卡牌回合制手游为例,聚焦于**手工服务端**的完整搭建过程,详细拆解从Linux系统初始化、MySQL与**Redis**缓存部署、核心服务编译、到代理后台联调的全链路实践,为开发者深入理解游戏后端架构提

weixin_30800615的博客 338

西门子S7-1200模拟量的使用

模块类型核心参数输入信号处理输出信号配置转换原理数值范围TIA Portal配置编程要点 转换公式: 输出模拟量: 五、校准与线性化 硬件校准非线性补偿抗干扰措施数字滤波温度控制压力监控流量调节信号异常精度不足实践操作参考文档项目案例借鉴博客

weixin_51020122的博客 4771

Spring Boot 使用 Micrometer 集成 Prometheus 监控 Java 应用性能

Micrometer 为 Java 平台上的性能数据收集提供了一个通用的 API,它提供了多种度量指标类型(Timers、Guauges、Counters等),同时支持接入不同的监控系统,例如 Influxdb、Graphite、Prometheus 等。我们可以通过 Micrometer 收集 Java 性能数据,配合 Prometheus 监控系统实时获取数据,并最终在 Grafana 上展示出来,从而很容易实现应用的监控。

哎_小羊的博客 7万+

eNSP-交换机VLAN配置

VLAN

乌托托的博客 8807

Spring Boot 整合 Prometheus 实现资源监控

Prometheus 是一个开源的系统监控和警报工具包,它通过采集和存储指标(metrics),提供了强大的数据查询语言,可以帮助我们分析和理解应用程序的行为。Prometheus 的核心组件是 Prometheus Server,它负责采集监控指标并提供查询接口。通过上述步骤,我们可以成功地将 Prometheus 与 Spring Boot 应用集成,实现对应用的实时监控。接口调用次数和耗时:通过自定义指标来监控特定接口的调用次数和耗时,可以通过method_rt等指标来监控。

心猿意码 1513

arduino uno spi驱动12864

arduino uno spi驱动12864

yvee的博客 2060

R语言生存分析之竞争风险模型

R语言生存分析之竞争风险模型 竞争风险模型(Competing Risk Model)是一种处理多种潜在结局生存数据的分析方法,早在1999年Fine和Gray就提出了部分分布的半参数比例风险模型,通常使用的终点指标是累积发生率函数(cumulative incidence function,CIF)。 研究中结局事件可能有多个,某些结局将阻止感兴趣事件的出现或影响其发生的概率,各结局事件形成“竞争”关系,互为竞争风险事件。 竞争风险模型( Competing Risk Model ) : 指

data+scenario+science+insight 5247

Springboot应用接入Prometheus监控

Springboot应用接入Prometheus监控步骤总结

拾年一剑 的专栏 1744

C# Winform使用Monaco打造代码编辑器

本文介绍了如何在Winform项目中集成Monaco代码编辑器。通过NuGet安装WebView2控件,创建monaco-editor.html文件加载编辑器,并实现与C#代码的交互。关键步骤包括:初始化WebView2环境、配置Monaco编辑器参数、设置代码变更监听事件以及处理C#与JavaScript之间的通信。注意事项提示了依赖库安装问题的解决方法。该方案实现了功能完整的代码编辑器,支持代码自动保存和实时显示功能。

遇见--专栏 346

Spring Boot应用如何快速接入Prometheus监控

1. Micrometer简介Micrometer为Java平台上的性能数据收集提供了一个通用的API,它提供了多种度量指标类型(Timers、Guauges、Counters等),同时支持接入不同的监控系统,例如Influxdb、Graphite、Prometheus等。可以通过Micrometer收集Java性能数据,配合Prometheus监控系统实时获取数据,并最终在Grafana上展示出...

天行健,君子以自强不息;地势坤,君子以厚德载物。 1947

使用R语言绘制Logistic回归模型的亚组分析森林图

亚组分析是一种常用的统计方法,用于探索不同亚组之间的差异,并确定是否存在某些变量对结果的调节作用。在本文中,我们将使用R语言来绘制Logistic回归模型的亚组分析森林图。在该图中,每个亚组都用一个点表示,点的位置表示亚组的均值,而线段表示亚组的置信区间。垂直参考线用于表示效应值为0的点,帮助我们判断亚组之间的差异。希望本文对你有所帮助,让你能够使用R语言绘制Logistic回归模型的亚组分析森林图。是一个二分类的变量,我们希望在亚组分析中探索它与响应变量之间的关系。函数来计算每个亚组的均值,并使用。

PixelNinja的博客 2002

将 SAP BTP ABAP environment 与 SAP S/4HANA Cloud 公有云版集成:从架构理念到落地实战

本文探讨了在SAP云环境中实现ABAP扩展应用与S/4HANA Cloud系统集成的技术方案。通过建立标准化的远程通信通道,开发者可在SAP BTP ABAP环境中开发扩展应用,同时安全访问S/4HANA Cloud的核心业务数据和服务。文章详细介绍了整体架构设计、开发实现步骤(包括定义通信场景、生成服务消费模型和编写调用代码)以及管理员在S/4HANA侧的配置工作(创建通信安排和技术用户)。通过一个业务伙伴自助注册平台的案例,展示了如何在不修改标准系统的情况下实现云扩展,体现了SAP"干净核心&

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 239

搭建Prometheus+Grafana实时监控平台监控Java应用服务

项目中需要监控Java应用服务,我想到可以搭建Prometheus+Grafana实时监控平台,搭建完成后记录下了这个过程,与你分享。

程序员云帆哥的博客 5563

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Spring Boot 开发 -- 集成 Prometheus 进行高效监控

Prometheus 是一个开源的系统监控和警报工具包,它通过采集和存储指标(metrics),提供了强大的数据查询语言,可以帮助我们分析和理解应用程序的行为。Prometheus 的核心组件是 Prometheus Server,它负责采集监控指标并提供查询接口。除了 Spring Boot Actuator 提供的内置指标,我们还可以通过 Micrometer 添加自定义监控指标,以监控特定的业务逻辑或性能瓶颈。

m0_74824170的博客 1691

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Spring Boot健康监控实战:Actuator与Prometheus集成指南

你是否还在为Spring Boot应用的实时监控发愁?服务崩溃前毫无预警?本文将带你通过3个步骤实现生产级监控系统,让你轻松掌握应用健康状态、性能指标和异常预警,读完你将获得: - 5分钟快速集成Actuator监控端点 - Prometheus指标采集与可视化配置 - 企业级监控最佳实践与避坑指南 ## 一、Actuator基础配置 Spring Boot Actuator(健康监测器)是官...

gitblog_00685的博客 1084
上一篇: 聊聊 Spring boot 集成 Mybatis,你学会了吗?
下一篇: 解决Java并发可见性问题,Volatile闪亮登场
程序员职业指南
博客等级 码龄4年 2136粉丝 960原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值