SpringBoot+Prometheus+Grafana 实现自定义监控

springboot+poi导出百万级数据避免OOM内存溢出 记录下在实际项目中碰到过一个重大问题,全量导出百万级数据,由于之前在开发环境数据没有达到百万级别,因此此问题没有处理,上到测试环境后,数据量达到150万的时候,全量导出所有的数据出现内存溢出问题。这段代码亲测有效,到测试环境上导出五百多万条数据都没有出现OOM问题,希望对各位朋友有效。这里实现了多个sheet页导出的数据,excel导出一个sheet最多能导出100万多一点数据,至于具体数字,请朋友们自行百度下。 阅读详情

点击上方“芋道源码”,选择“设为星标”

管她前浪,还是后浪?

能浪的浪,才是好浪!

每天 10:33 更新文章,每天掉亿点点头发...

源码精品专栏

 

来源:blog.youkuaiyun.com/GZ946/

article/details/126619218


1.Spring Boot 工程集成 Micrometer

1.1引入依赖
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
  <groupId>io.micrometer</groupId>
  <artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
1.2配置
management.server.port=9003
management.endpoints.web.exposure.include=*
management.endpoint.metrics.enabled=true
management.endpoint.health.show-details=always
management.endpoint.health.probes.enabled=true
management.endpoint.prometheus.enabled=true
management.metrics.export.prometheus.enabled=true
management.metrics.tags.application=voice-qc-backend

这里 management.endpoints.web.exposure.include=* 配置为开启 Actuator 服务,因为Spring Boot Actuator 会自动配置一个 URL 为 /actuator/Prometheus 的 HTTP 服务来供 Prometheus 抓取数据,不过默认该服务是关闭的,该配置将打开所有的 Actuator 服务。

management.metrics.tags.application 配置会将该工程应用名称添加到计量器注册表的 tag 中去,方便后边 Prometheus 根据应用名称来区分不同的服务。

1.3监控jvm信息

然后在工程启动主类中添加 Bean 如下来监控 JVM 性能指标信息:

@SpringBootApplication
public class GatewayDatumApplication {

    public static void main(String[] args) {
        SpringApplication.run(GatewayDatumApplication.class, args);
    }

    @Bean
    MeterRegistryCustomizer<MeterRegistry> configurer(
            @Value("${spring.application.name}") String applicationName) {
        return (registry) -> registry.config().commonTags("application", applicationName);
    }

}
1.4创建自定义监控

监控请求次数与响应时间

package com.lianxin.gobot.api.monitor;

import io.micrometer.core.instrument.Counter;
import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.core.instrument.Timer;
import lombok.Getter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;

/**
 * @Author: GZ
 * @CreateTime: 2022-08-30  10:50
 * @Description: 自定义监控服务
 * @Version: 1.0
 */
@Component
public class PrometheusCustomMonitor {
    /**
     * 上报拨打请求次数
     */
    @Getter
    private Counter reportDialRequestCount;
    /**
     * 上报拨打URL
     */
    @Value("${lx.call-result-report.url}")
    private String callReportUrl;

    /**
     * 上报拨打响应时间
     */
    @Getter
    private Timer reportDialResponseTime;
    @Getter
    private final MeterRegistry registry;


    @Autowired
    public PrometheusCustomMonitor(MeterRegistry registry) {
        this.registry = registry;
    }

    @PostConstruct
    private void init() {
        reportDialRequestCount = registry.counter("go_api_report_dial_request_count", "url",callReportUrl);
        reportDialResponseTime=  registry.timer("go_api_report_dial_response_time", "url",callReportUrl);
    }
}
1.5添加具体业务代码监控
//统计请求次数
prometheusCustomMonitor.getReportDialRequestCount().increment();
long startTime = System.currentTimeMillis();
String company = HttpUtils.post(companyUrl,"");
//统计响应时间
long endTime = System.currentTimeMillis();
prometheusCustomMonitor.getReportDialResponseTime().record(endTime-startTime, TimeUnit.MILLISECONDS);

在浏览器访问 http://127.0.0.1:9001/actuator/prometheus ,就可以看到服务的一系列不同类型 metrics 信息,例如jvm_memory_used_bytes gauge、jvm_gc_memory_promoted_bytes_total counter ,go_api_report_dial_request_count等

ee9f713e0977e9af4a5411ced7bdbb0e.png

到此,Spring Boot 工程集成 Micrometer 就已经完成,接下里就要与 Prometheus 进行集成了。

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/ruoyi-vue-pro

  • 视频教程:https://doc.iocoder.cn/video/

2.集成 Prometheus

2.1安装
docker pull prom/prometheus
mdkir /usr/local/prometheus
vi prometheus.yml

> 基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能
>
> * 项目地址:<https://github.com/YunaiV/yudao-cloud>
> * 视频教程:<https://doc.iocoder.cn/video/>

# 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: 'prometheus'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
    - targets: ['192.168.136.129:9090']
docker run -d --name prometheus -p 9090:9090 -v/usr/local/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
68efcd985e61e5762f4a93c6e2e82236.png
2.2集成配置
global:
  scrape_interval: 15s

scrape_configs:
  - job_name: "prometheus"
    static_configs:
    - targets: ["localhost:9090"]
  - job_name: "metricsLocalTest"
    metrics_path: "/actuator/prometheus"
    static_configs:
    - targets: ["localhost:9003"]

这里 localhost:9001 就是上边本地启动的服务地址,也就是 Prometheus 要监控的服务地址。同时可以添加一些与应用相关的标签,方便后期执行 PromSQL 查询语句区分。最后重启 Prometheus 服务

f8b2fda6dcb8b0bb18708ecf9c63eb41.png 604171b338cf271e11d3ca6d45bc7138.png

3.使用 Grafana Dashboard 展示监控项

3.1安装grafana
docker pull grafana/grafana
docker run -d --name grafana -p 3000:3000 -v /usr/local/grafana:/var/lib/grafana grafana/grafana

默认用户名/密码 admin/admin

8a3f12afd76c46568ab77a460bdfcf4d.png
3.2配置prometheus数据源
6d5375c96121faa12a74facee20354ae.png
3.3增加jvm面板

模板编号为4701

886bf2847d6ec46392b3a52aa25c4dd1.png 668ac94cbdcf8111de1e6ec6f24ae98b.png
3.4配置业务接口监控面板
92eed2ee5b94ff07f4dac309731b5804.png

欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢:

1d61b3bccea319716873447d66bc9454.png

已在知识星球更新源码解析如下:

2fb563f6629b1d5e6fb46a87c2d459a8.jpeg

0cd8da55a8dbfdbc7d262dfb69dcf9af.jpeg

0d597bd1f8803ea259f1eeb03ec4a379.jpeg

f76b77e1066c1b5cdb99c3f00f8d8263.jpeg

最近更新《芋道 SpringBoot 2.X 入门》系列,已经 101 余篇,覆盖了 MyBatis、Redis、MongoDB、ES、分库分表、读写分离、SpringMVC、Webflux、权限、WebSocket、Dubbo、RabbitMQ、RocketMQ、Kafka、性能测试等等内容。

提供近 3W 行代码的 SpringBoot 示例,以及超 4W 行代码的电商微服务项目。

获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)
解决POI读取Excel内存溢出的问题 Office软件一直是一个诲誉参半的软件,广大普通计算机用户用Office来满足日常办公需求,于是就产生了很多生产数据和文档,需要和企业单位的专用办公系统对接,而Office的解析工作一直是程序员非常头痛的问题,经常招致程序员的谩骂,也被誉为是微软最烂的发明之一。POI的诞生解决了Excel的解析难题(POI即“讨厌的电子表格”,确实很讨厌,我也很讨厌Excel),但如果用不好POI,也会导致程序 阅读详情

相关推荐

Springboot应用整合Prometheus+Grafana进行自定义指标监控

Springboot应用整合Prometheus+Grafana进行自定义指标监控 最近需要监控接口的请求数据P90,P99,平均耗时,接口参数包含userId的接口请求数据等等 第一步 创建一个springboot项目 pom文件 <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> ..

m0_69860228的博客 3526

图解电商支付架构设计,这才是真电商

点击上方“芋道源码”,选择“设为星标”管她前浪,还是后浪?能浪的浪,才是好浪!每天 8:55 更新文章,每天掉亿点点头发...源码精品专栏原创 | Java 2020 超神之路,很肝~中...

芋艿V 907

使用 Prometheus + grafana监控 Spring Boot 应用

前面我们在 Spring Boot 项目中集成 Actuator 和 Micrometer 实现了 Spring Boot 应用监控,基本上覆盖 JVM 各个层间的参数指标,并且配合 Grafana Dashboard 模板基本可以满足我们日常对 Spring Boot 应用的监控。但是,对于核心业务是否也能够监控它们的执行情况呢?答案是肯定的,Micrometer 支持自定义监控指标,实现业务方面的数据监控。例如统计访问某一个 API 接口的请求数,统计实时在线人数、统计实时接口响应时间等。

蔡定努 521

kafka-console-ui的简介及安装使用

kafka-console-ui 是一款轻量级的kafka可视化管理平台,安装、配置特别简单,一般来说只需要配置一个kafka集群地址启动即可。为了开发的省事,没有国际化支持,页面只支持中文展示。不是一个企业级的平台,目前看来只适合中、小型集群的管理。这个工具看起来是挺low的,但是对于刚接触kafka急需一个合适工具进行管理的同学来说,还是挺友好的,没有国际化支持,全是中文展示。支持broker相关配置的查看及修改。

初夏0811的博客 7421

解决poi读取excel2007出现内存溢出问题代码参

解决poi读取excel2007出现内存溢出问题代码参

Python实战:如何用高德API批量获取POI数据(附完整代码)

本文详细介绍了如何使用Python通过高德API批量获取POI数据,包括API基础准备、核心功能模块设计、高级功能实现及实战应用案例。文章提供了完整代码示例,帮助开发者高效解决商业网点分析、公共设施规划等实际项目中的数据采集需求。

stem5的博客 328

SpringBoot + Prometheus + Grafana 实现自定义监控

SpringBoot 程序中实现自定义指标监控

散落的博客 5248

开源 AHB不对称半桥反激电路设计(六)死区时间,谐振腔电流,谐振电感函数表达式

电流跌落可以使副边电流峰值和有效值降低,减小损耗,但如果开关管 S2 导通期间,谐振电流谐等于励磁电流,即副边电流A 点降至 0,会在原边变压器内形成环流,产生损耗,同时也不利于副边同步整流管驱动的正常工作,为了保证开关管 S2 导通期。在开关管 S1 和开关管 S2 均关断的死区时间内,谐振电流给原边开关管结电容和副边整流管结电容充放电,因此会引起开关 S1 关断瞬间电流跌落与开关 S2 关断瞬间电流震荡现象,受寄生参数影响原边谐振电流波形和副边电流波形如图。降到最低,变压器以最高效率向副边传递能量。

【Simon】的博客 1230

在SpringBoot自定义指标并集成Prometheus和Grafana监控

十分钟教会你在SpringBoot自定义指标集成Prometheus和Grafana监控

CBeann的博客 2848

网络虚拟化介绍(OVS、DVS)

网络虚拟化概念网络虚拟化就是把网络层的一些功能从硬件中剥离出来,建立新的网络虚拟层;该虚拟层可以接管网络服务和配置,实现网络服务与物理层的解耦,打破物理资源限制;通过网络虚拟层能够在一个物理网络上模拟出多个逻辑网络,并且多用户在逻辑网络上相互隔离,保证网络安全网络虚拟化的特点隔离性:不同租户的流量相互之间不能互访;但是IP/MAC地址都可以独立规划可移动性:虚拟机可以跨二层/三层迁移,甚至可以跨广域网迁移(迁移前后虚拟机Vlan和IP地址都不会发生变化)可扩展性:逻辑网络的规模和数量可扩展。

m0_49864110的博客 1万+

Kali Linux下Havoc框架编译避坑指南:从环境配置到成功运行的全流程

本文提供了在Kali Linux系统上成功编译和运行Havoc开源框架的详细指南。文章重点解析了从Go语言环境配置、系统依赖库安装到交叉编译环境搭建的全流程,并针对编译过程中常见的Qt、Boost及mingw-w64等依赖问题给出了具体的解决方案,帮助安全研究人员绕过常见陷阱,顺利完成环境部署。

weixin_29230865的博客 96

SpringBoot + Micrometer + Prometheus + Grafana:自定义业务指标监控

通过SpringBoot + Micrometer + Prometheus + Grafana的组合,我们可以轻松构建一套功能强大的业务指标监控系统。标准化:Micrometer提供了统一的指标收集接口可扩展:易于添加新的业务指标可视化:Grafana提供了丰富的图表展示告警能力:可以基于指标设置告警规则在实际项目中,建议从最关键的业务指标开始监控,逐步扩展到更多的业务维度。只有建立了完善的监控体系,我们才能真正做到心中有数,从容应对各种业务挑战。

毛尖 290

[网络安全提高篇] 一一九.恶意软件动态分析经典沙箱Cape的安装和基础用法详解

这是作者网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您喜欢,一起进步。前文详细介绍恶意代码静态分析经典工具Capa的基础用法,以及批量提取静态特征和ATT&CK技战术,主要是从提取的静态特征Json文件中提取关键特征。这篇文章将详细讲解动态分析沙箱Cape,其是一个开源的自动恶意软件分析系统,通过自动运行和分析恶意软件,全面分析和提取恶意软件的关键特征。本文先介绍Cape沙箱的安装和基础用法,后续随着深入再分享。基础性文章,希望对您有帮助!

杨秀璋的专栏 1万+

Prometheus+grafana监控nacos和spring-boot服务(增加自定义指标)(七)

引入依赖-- 将指标转换成prometheus可使用的格式-->prometheus总共有四种数据类型,用于不同类型的数据这里实现 Counter 类型,注册一个counter 当index方法发生调用是,count会记录调用次数/***/@Autowiredtry{// 同名的数据类型再次注册只会有一个return e;try{// 可以根据标签进行过滤return e;完整代码和其他类型数据可以查看我的GitHub。

遇见bug的博客 2082

windows在使用ping 127.0.0.1时出现一般故障的解决方案

本文主要介绍了windows在使用ping 127.0.0.1时出现一般故障的解决方案,希望能对使用windows的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 7万+

从零开始学习PX4源码9(部署px4源码到gitee)

由于PX4-Autopilot托管在github,在没有翻墙的情况下,下载固件无法下载。为了提高下载速度,这里将PX4在github上的仓库以及其子仓库(依赖仓库)都搬移到gitee上了。本教程讲解如何快速部署px4固件到gitee上,实现不需要翻墙快速本地就可以下载PX4固件。暂时没有找到如何批量直接通过修改.gitmodules后,使用什么命令可以直接把所有的一级二级子模块的指向直接正常映射。!!

陌城烟雨 813

prometheus+grafana 搭建企业级监控系统(二)micrometer自定义监控spring boot 指定接口指标等指标

前言: 比如我们要监控spring boot 的各个指标,比如 JVM的内存各个指标,GC,线程数,甚至自己定义的指标,接口调用次数,成功数,失败数,一段时间调用频率等等。 最好效果图如下:

shrek11的专栏 2719

Python与CAD系列基础篇(十)图形复制、移动、删除

①通过pyautocad连接AutoCAD进行处理②通过ezdxf处理dxf格式文件。进行图形复制、移动、删除的方法。pyautocad方式。pyautocad方式。

weixin_43894929的博客 2210

springboot+Prometheus+grafana 实现自定义监控(请求数、响应时间、JVM性能)

显然在 2.x 版本中有更高的集成度,使用起来也非常方便了。最后,我们再启动服务,然后在浏览器访问 http://127.0.0.1:9001/actuator/prometheus ,就可以看到服务的一系列不同类型 metrics 信息,例如 http_server_requests_seconds summary、jvm_memory_used_bytes gauge、jvm_gc_memory_promoted_bytes_total counter 等等。最后重启 Prometheus 服务。

Jelly 5623

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Prometheus + Grafana 监控 SpringBoot

整体结构 SpringBoot 的 actuator 提供了监控端点。 Prometheus 是监控系统,可以从 Springboot 获取监控数据,以时序数据的形式存储,并提供了监控数据的查询服务。 Grafana 是专业的 UI 仪表盘系统,支持非常多的数据源,其中就包括 Prometheus,可以便利的从中获取数据,使用仪表盘展示出来。 springboot 2 中引入了 micrometer,它可以更方便的对接各种监控系统,包括 Prometheus。 image 所以整体的结构就.

484

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

SpringBoot监控体系搭建:Prometheus+Grafana可视化监控实战

在当今的软件开发领域,Spring Boot 凭借其快速开发、简单配置等特性,成为了构建微服务架构的热门选择。然而,随着应用规模的不断扩大和复杂度的提升,对 Spring Boot 应用进行有效的监控变得至关重要。通过监控,我们可以实时了解应用的运行状态,及时发现并解决潜在的问题,保障应用的稳定运行。

梵心白莲的博客 491

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

SpringBoot监控终极方案:Prometheus+Grafana实现可视化监控

在当今的软件开发领域,Spring Boot 凭借其快速开发、便捷配置等特性,成为了构建微服务应用的首选框架。然而,随着应用的复杂度和规模不断增加,对应用的性能监控和问题排查变得尤为重要。传统的日志监控方式往往不够直观和全面,而 Prometheus 和 Grafana 的组合为 Spring Boot 应用提供了一种强大的可视化监控解决方案。本文将详细介绍如何使用 Prometheus 和 Grafana 对 Spring Boot 应用进行监控。

梵心白莲的博客 1272

Springboot整合Prometheus+Grafana自定义指标监控

prometheus自定义指标监控,监控大屏展示

LMC技术人生专栏 1165
上一篇: Spring Boot 3 步完成日志脱敏,简单实用~
下一篇: 自从项目用了灰度发布,睡觉真香!
公众号-芋道源码
博客等级 码龄10年 1636粉丝 377原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值