Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Spring Boot快速接入Prometheus监控|写给Java开发运维

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

作者头像
用户5166556
发布于 2023-03-18 07:15:43
发布于 2023-03-18 07:15:43
2.8K00
代码可运行
举报
运行总次数:0
代码可运行

不想听我废话的,直接看代码就行: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 依赖到应用程序中
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 <dependency>
      <groupId>io.micrometer</groupId>
      <artifactId>micrometer-registry-prometheus</artifactId>
  </dependency>
  • 添加配置项
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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,并添加抓取配置
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
scrape_configs:
  - job_name: 'application'
    metrics_path: '/actuator/prometheus'
    static_configs:
      - targets: ['application:8091']

  • 添加查询
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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

如何关闭所有指标,并打开想要的指标?
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
management.metrics.enable.all=false
management.metrics.enable.http=false
management.metrics.enable.jvm=true

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

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

如何添加自己的指标维度

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  @Bean
 MeterRegistryCustomizer<MeterRegistry> metricsCommonTags() {
  return registry -> registry.config().commonTags("region", "us-east-1");
 }

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

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

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

  • Timed 注解不会被 Spring 框架扫描,所以需要添加如下代码
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Bean
 TimedAspect timedAspect(MeterRegistry registry) {
  return new TimedAspect(registry);
 }
  • 在需要监控的代码片段上添加注解
  • 查看指标

总结

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-07-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云原生技术爱好者社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
spring boot metrics使用指南
针对应用监控指标暴露,spring boot有一套完整的解决方案,并且内置了好很多的指标收集器,如tomcat、jvm、cpu、kafka、DataSource、spring mvc(缺少直方图的数据)等。基于micrometer技术,几乎支持所有主流的监控服务的指标数据收集,这其中就包含了我们线上使用的Prometheus,这份指南旨在最快速接入boot的metrics功能,暴露prometheus的数据监控指标服务。
kl博主
2023/11/18
1.3K0
彻底搞懂监控系统,使用Prometheus监控Spring Boot应用,自定义应用监控指标!
前面我们介绍了使用Prometheus + Grafana 构建了监控系统,那么我们的应用平台怎么监控呢?应用平台中的核心业务的执行情况能否监控呢?那么接下来我们使用Actuator,Micrometer,Prometheus和Grafana监控Spring Boot应用程序,自定义应用监控指标。
章为忠学架构
2023/03/23
17.3K2
彻底搞懂监控系统,使用Prometheus监控Spring Boot应用,自定义应用监控指标!
Spring Boot 使用 Micrometer 集成 Prometheus 监控 Java 应用性能
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
哎_小羊
2019/09/18
11.7K0
Spring Boot 使用 Micrometer 集成 Prometheus 监控 Java 应用性能
Spring Boot的监控
Spring Boot是一款非常流行的Java框架,它可以快速开发基于Spring的应用程序。监控是应用程序运行的重要组成部分,它可以帮助我们了解应用程序的状态,识别性能瓶颈,并快速解决问题。Spring Boot提供了一些内置的监控工具,本文将介绍Spring Boot监控的详细文档,并给出一些示例。
堕落飞鸟
2023/04/06
1.8K0
Prometheus监控系统部署
Prometheus是最初在SoundCloud上构建的开源系统监视和警报工具包 。自2012年成立以来,许多公司和组织都采用了Prometheus,该项目拥有非常活跃的开发人员和用户社区。现在,它是一个独立的开源项目,并且独立于任何公司进行维护。为了强调这一点并阐明项目的治理结构,Prometheus 在2016年加入了 Cloud Native Computing Foundation,这是继Kubernetes之后的第二个托管项目。总所周知Zabbix在监控界占有不可撼动的地位,功能强大。但是对容器监控显得力不从心。Prometheus则解决了容器的监控问题。
用户8851537
2021/08/19
1.8K0
<译文>使用Spring Boot 2.0,Prometheus和Grafana进行监控(第2部分-公开指标)
在上一篇文章中,我们为实体上的CRUD操作创建了REST API。在这一部分中,我们将在同一个应用程序上进行工作以添加设置和配置,这将使我们能够公开端点的指标。
东风微鸣
2022/04/21
1.1K0
<译文>使用Spring Boot 2.0,Prometheus和Grafana进行监控(第2部分-公开指标)
【监控利器Prometheus】——Prometheus+Grafana监控SpringBoot项目JVM信息
(4)启动springboot项目,访问 http://localhost:6001/actuator/prometheus 可以看到一些统计指标
DannyHoo
2021/12/23
1.3K0
【监控利器Prometheus】——Prometheus+Grafana监控SpringBoot项目JVM信息
Prometheus + Grafana 监控 SpringBoot
Prometheus 是监控系统,可以从 Springboot 获取监控数据,以时序数据的形式存储,并提供了监控数据的查询服务。
dys
2020/02/19
2K0
Spring Boot Actuator 整合 Prometheus
Spring Boot 自带监控功能 Actuator,可以帮助实现对程序内部运行情况监控,比如监控状况、Bean加载情况、环境变量、日志信息、线程信息等。这一节结合 Prometheus 、Grafana 来更加直观的展示这些信息。
程序员果果
2019/10/23
2.7K0
集成prometheus+Grafana可视化监控
Prometheus是一个开源的系统监控和报警系统,现在已经加入到CNCF基金会,成为继k8s之后第二个在CNCF托管的项目,在kubernetes容器管理系统中,通常会搭配prometheus进行监控,同时也支持多种exporter采集数据,还支持pushgateway进行数据上报,Prometheus性能足够支撑上万台规模的集群。
BUG弄潮儿
2023/02/24
9160
集成prometheus+Grafana可视化监控
Spring Boot整合 Prometheus
Micrometer 为 Java 平台上的性能数据收集提供了一个通用的 API,应用程序只需要使用 Micrometer 的通用 API 来收集性能指标即可。Micrometer 会负责完成与不同监控系统的适配工作。这就使得切换监控系统变得很容易。Micrometer 还支持推送数据到多个不同的监控系统。Micrometer类似日志系统中SLF4J。
BUG弄潮儿
2021/08/13
1.5K0
【监控利器Prometheus】——Prometheus+Grafana监控SpringBoot项目业务指标监控
(3)这里以【订单成功数量】、【订单失败数量】、【订单成功金额】、【订单失败金额】为例进行统计
DannyHoo
2021/12/23
1.4K0
【监控利器Prometheus】——Prometheus+Grafana监控SpringBoot项目业务指标监控
在SpringBoot自定义指标并集成Prometheus和Grafana监控
写这篇文章的目的是发现自己整天埋头写业务代码但忽略了主动发现问题的能力,这里指的是监控和报警。结合工作中发现Prometheus和Grafana还是主流一些。本文介绍如何使用自定义指标,并使用Prometheus进行监控并报警,同时在 Grafana 进行展现。
CBeann
2024/05/26
1.2K0
在SpringBoot自定义指标并集成Prometheus和Grafana监控
使用Prometheus监控SpringBoot应用
今天我们来监控一下你的应用。(本文以SpringBoot 2.1.9.RELEASE 作为监控目标)
JAVA日知录
2019/10/24
9060
Spring Cloud Sleuth与Prometheus集成
Spring Cloud Sleuth是一个分布式跟踪解决方案,可以帮助开发人员诊断和调试分布式系统中的问题。而Prometheus是一个开源的监控系统和时间序列数据库,可用于记录和查询系统指标数据。将Spring Cloud Sleuth与Prometheus集成,可以帮助开发人员更好地理解其应用程序的性能,以及在必要时进行故障排除。
堕落飞鸟
2023/04/12
6750
基于Prometheus搭建SpringCloud全方位立体监控体系
最近公司在联合运维做一套全方位监控的系统,应用集群的技术栈是SpringCloud体系。虽然本人没有参与具体基础架构的研发,但是从应用引入的包和一些资料的查阅大致推算出具体的实现方案,这里做一次推演,详细记录一下整个搭建过程。
Throwable
2020/06/23
2.8K0
Prometheus for Spring Boot
前面两篇文章已经介绍如何搭建Prometheus和Grafana,本文介绍如何快速监控Spring Boot进程 快速接入 引入Jar包(pom.xml) <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>io.micrometer</gr
十毛
2019/03/27
9410
Prometheus for Spring Boot
SpringBoot集成prometheus监控
Prometheus是一个根据应用的metrics来进行监控的开源工具。相信很多工程都在使用它来进行监控,有关详细介绍可以查看官网:https://prometheus.io/docs/introduction/overview/。
似水的流年
2020/11/27
9010
prometheus监控hikari连接池
hikari是springboot 2.x以后默认使用的数据库连接池,做为系统很重要的一环,数据库以及数据库连接池的运行状况也是监控系统必须要监控的,下面就介绍下使用prometheus监控hikari的搭建过程:
johnhuster的分享
2022/03/28
4.3K0
prometheus监控hikari连接池
十分钟就能上手Prometheus与Grafana监控SpringBoot项目
🍁 作者:知识浅谈,CSDN签约讲师,CSDN原力作者,后端领域优质创作者,热爱分享创作 💒 公众号:知识浅谈 📌 擅长领域:全栈工程师、爬虫、ACM算法 🤞这次都给他拿下🤞 十分钟快速上手Prometheus与Grafana监控SpringBoot项目 先来捋一下数据流的传输 正菜来了⛳⛳⛳ 环境: springboot项目:127.0.0.1:8081 prometheus:127.0.0.1:9090 grafana:127.0.0.1:3000 🎈项目的创
知识浅谈
2022/12/18
7730
十分钟就能上手Prometheus与Grafana监控SpringBoot项目
推荐阅读
相关推荐
spring boot metrics使用指南
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档