news 2026/9/3 8:46:42

Resilience4j + Prometheus + Grafana实现熔断服务可视化监控

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Resilience4j + Prometheus + Grafana实现熔断服务可视化监控

springboot2.5后,Hystrix熔断器被官方弃用,同时用于可视化监控的Hystrix Dashboard仪表盘也被弃用,高版本springboot使用Resilience4j + Prometheus + Grafana替代Hystrix Dashboard仪表盘,实现服务熔断的可视化监控

一、可视化监控介绍

  1. 为什么要使用Prometheus + Grafana可视化监控
    Prometheus + Grafana依靠其实时性、灵活性、可扩展性、强大的可视化能力,成为云原生和微服务框架下的主流选择:
    ①Prometheus负责采集与告警触发,Grafana提供直观展示,Alertmanager处理告警分发,形成“采集>存储>分析>可视化>告警”的全链路监控;
    ②Prometheus支持Kubernetes服务发现,自动追踪Pod变化;
    ③通过可视化仪表盘快速定位资源瓶颈,结合PromQL实现根因分析;

  2. Prometheus优势
    ①为云原生设计:
    由springcloud开发,天然适配Kubernetes、Docker等容器化环境;
    ②轻量级易部署:
    单个二进制文件运行,无外部依赖,支持Docker、Kubernetes等多种部署方式;
    ③丰富的Exporter生态:
    支持Node、MySQL、Redis、Kafka等主流组件的指标采集;
    ④强大查询语言PromQL‌:
    可对监控数据进行复杂查询、聚合、预测;
    ⑤多维数据模型与时序存储‌:
    每条指标由名称 + 标签(Labels)唯一标识,支持灵活聚合与过滤,内置高效时序数据库(TSDB)‌;
    ⑥Pull模型采集数据‌:
    主动从目标Exporter拉取指标,降低被监控端耦合;

  3. Grafana优势
    ①跨平台、易操作:
    支持 Web 访问,支持 RBAC 权限管理,适合团队协作;
    ②海量预置仪表盘‌:
    通过Grafana Dashboard官网提供了不同场景的成熟模板;
    ③告警功能‌:
    可基于面板设置告警规则,并通过邮件、钉钉等渠道通知;
    ④多数据源支持‌:
    除Prometheus外,还兼容InfluxDB、Elasticsearch、MySQL、CloudWatch;
    ⑤丰富的可视化能力‌:
    提供折线图、热力图、仪表盘等丰富图表类型,支持自定义面板与模板变量;

  4. Prometheus + Grafana应用场景
    ①服务器监控‌:
    通过Node Exporter + Grafana监控 CPU、内存、磁盘、网络等指标变化;
    ②数据库监控‌:
    结合mysqld_exporter或redis_exporter实现MySQL/Redis性能指标可视化;
    ③应用性能监控‌:
    Java应用集成Prometheus Client Library,暴露自定义业务指标;
    ④Kubernetes集群监控‌:
    通过kube-state-metrics + cAdvisor + Grafana实现Pod/Node资源全景视图;

  5. Resilience4j + Prometheus + Grafana监控架构

二、Prometheus安装

  1. Prometheus下载

    说明:选择所需要的环境和对应版本的安装包进行下载

  2. Windows环境安装
    Windows环境解压压缩包后即可直接运行,Prometheus默认访问端口9090,本地启动后访问http://localhost:9090,即可打开Prometheus提供的建议UI页面

  3. Linux环境安装
    ①Linux在线环境执行wget https://github.com/prometheus/prometheus/releases/download/v3.11.2/prometheus-3.11.2.linux-amd64.tar.gz命令,将指定版本的Prometheus下载到想要存放的目录下(如果需要下载其他版本,替换命令中的版本号即可

    Linux离线环境下,先访问Prometheus官网,下载Linux环境的Prometheus压缩包,再将下载的Prometheus压缩包上传至Linux服务器的指定存放目录下

    ③执行tar -xvf prometheus-3.11.2.linux-amd64.tar.gzprometheus压缩包解压

    ④在prometheus文件目录下执行nohup ./prometheus --config.file="prometheus.yml" &后台启动prometheus服务,浏览器访问http://192.168.201.129:9090(对应服务器ip)验证服务是否启动

    说明:也可以创建Systemd服务文件启动prometheus服务
    -执行vi /etc/systemd/system/prometheus.service命令,在系统文件夹下创建prometheus.service文件,文件内容如下:

    -其中[Service]模块的UserExecStart在配置时需要特别注意,User需要配置具有权限的用户,ExecStart需要配置Prometheus安装相应的路径;
    -执行systemctl daemon-reload重新加载单元模块,再执行systemctl start prometheus启动prometheus服务,最后执行systemctl status prometheus查看prometheus服务启动状态;

    -浏览器验证http://192.168.201.129:9090UI界面是否可以打开;

  4. prometheus.yml文件配置
    prometheus.ymlPrometheus的核心配置文件,定义了全局采集规则、告警规则文件位置以及需要监控的采集目标。下面给出一个完整的配置示例,并逐项说明每个配置项的作用:

# ========== 全局配置 ==========global:# 默认抓取间隔:每15秒从目标端点拉取一次指标scrape_interval:15s# 默认告警评估间隔:每15秒评估一次告警规则evaluation_interval:15s# 默认抓取超时时间:超过10秒未响应则放弃本次抓取scrape_timeout:10s# ========== 告警规则文件 ==========# 指定告警规则文件路径,支持通配符匹配多个规则文件rule_files:# - "first_rules.yml" # 示例:自定义告警规则文件# - "second_rules.yml" # 示例:第二个告警规则文件# ========== 抓取配置 ==========# 定义Prometheus需要采集指标的目标端点列表scrape_configs:# 任务名称:Prometheus自身监控-job_name:"prometheus"# 静态配置的采集目标static_configs:-targets:["localhost:9090"]# Prometheus自身暴露的指标端点# 任务名称:Spring Boot应用(Resilience4j指标采集)-job_name:"spring-boot-app"# 抓取间隔:覆盖全局配置,每10秒采集一次scrape_interval:10s# 指标路径:Spring Boot Actuator暴露的Prometheus端点metrics_path:"/actuator/prometheus"# 静态配置的采集目标:指向部署了Resilience4j的Spring Boot服务static_configs:-targets:["192.168.201.129:8080"]# 替换为实际的应用IP和端口# 附加标签:便于在Grafana中区分不同环境或服务labels:application:"order-service"# 应用名称environment:"prod"# 部署环境

说明:
global配置块中的scrape_intervalevaluation_intervalscrape_timeout为全局默认值,若某个job未单独指定,则沿用全局配置;
scrape_configs中的每个job_name代表一个采集任务,static_configs.targets指定具体的采集地址,metrics_path指定指标暴露的HTTP路径;
③采集Resilience4j指标时,metrics_path必须配置为/actuator/prometheus,且Spring Boot应用需引入micrometer-registry-prometheus依赖并暴露actuator端点;
labels可以为采集到的指标附加自定义标签,便于在Grafana中按应用名、环境等维度进行过滤和聚合;
⑤配置完成后,需重启Prometheus服务使配置生效,可在PrometheusTargets页面(http://ip:9090/targets)查看采集目标是否处于UP状态。

三、Grafana安装

  1. Grafana下载

    说明:选择所需要的环境和对应版本的安装包进行下载
  2. Windows环境安装
    ①自定义选择安装位置

    ②下一步至最后一步安装即可

    ③找到Grafana安装目录下的grafana-server.exe启动程序,双击启动Grafana服务

    ④浏览器访问Grafana服务平台(http://localhost:3000)

    说明:默认访问地址为http://localhost:3000,默认账号密码均为admin
    ⑤服务停止:win+R并输入services.msc打开服务窗口查看服务列表,找到Grafana服务并停止

    说明:如果Grafana服务无法正常结束进程,可通过服务窗口启动或停止服务
  3. Linux环境安装
    ①Linux处于离线环境,可以先下载Grafana官网提供的tar.gz压缩包,然后再上传到Linux服务器上

    ②Linux在线环境下,先cd到需要下载的目录下,通过执行wget https://dl.grafana.com/grafana-enterprise/release/12.4.2/grafana-enterprise_12.4.2_23531306697_linux_amd64.tar.gz命令,进行在线下载

    ③下载完成后,执行tar -zxvf grafana-enterprise_12.4.2_23531306697_linux_amd64.tar.gz命令解压

    ④执行cd命令进入grafana下的bin目录,执行nohup ./grafana-server log > grafana-server.log 2>&1 &命令后台启动grafana服务

    ⑤浏览器访问Grafana服务平台(http://ip:3000)

四、Grafana配置Prometheus数据源

Grafana安装并启动成功后,需要先将Prometheus添加为数据源,才能在后续创建仪表盘时读取到Prometheus采集的指标数据。下面详细介绍配置步骤:

  1. 登录Grafana
    浏览器访问http://ip:3000ip为Grafana所在服务器地址),使用默认账号密码admin/admin登录,首次登录会提示修改密码,按提示设置新密码即可进入Grafana首页;

  2. 进入数据源管理页面
    左侧菜单栏中选择Connections功能模块,在下拉菜单中选择Data sources,进入数据源管理页面;

  3. 添加Prometheus数据源
    点击页面右上角的Add data source按钮,在数据源类型列表中找到并点击Prometheus,进入Prometheus数据源配置页面;在Connection配置区域,填写Prometheus服务的访问地址,格式为http://ip:9090,其中ip为部署Prometheus的服务器地址,9090Prometheus默认端口;

    说明:
    ①若GrafanaPrometheus部署在同一台服务器,可填写http://localhost:9090
    ②若GrafanaPrometheus部署在不同服务器,需填写Prometheus所在服务器的实际IP,并确保9090端口在防火墙中放行;
    Access访问模式一般保持默认的Server即可,由Grafana服务端去请求Prometheus;

  4. 保存并测试连接
    页面滚动到最底部,点击Save & test按钮,Grafana会立即向配置的Prometheus地址发起连接测试;
    若配置正确,页面会弹出绿色的Successfully queried the Prometheus API提示,表示数据源连接成功,此时即可在创建仪表盘时选择该数据源;

    说明:
    ①若提示Error,请检查Prometheus服务是否已启动、URL地址是否填写正确、网络及防火墙是否放行9090端口;
    ②连接成功后,可在Data sources列表中看到该数据源状态为Healthy,后续创建仪表盘时即可直接选用;

五、Resilience4j接入Prometheus

要让Prometheus成功采集到Resilience4j的熔断、限流等指标,需要先在Spring Boot应用中引入相关依赖、暴露Actuator端点,并确保Resilience4j的指标注册到Micrometer。下面详细介绍接入步骤:

  1. pom.xml添加依赖
    在Spring Boot项目的pom.xml中,添加以下三个核心依赖:
<!-- Spring Boot Actuator:提供健康检查、指标暴露等生产级监控端点 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!-- Micrometer Prometheus注册表:将应用指标以Prometheus格式暴露 --><dependency><groupId>io.micrometer</groupId><artifactId>micrometer-registry-prometheus</artifactId></dependency><!-- Resilience4j Micrometer:将Resilience4j的熔断、限流等指标注册到Micrometer --><dependency><groupId>io.github.resilience4j</groupId><artifactId>resilience4j-micrometer</artifactId></dependency>

说明:
spring-boot-starter-actuator负责暴露/actuator下的各类监控端点;
micrometer-registry-prometheus会把Micrometer收集到的指标转换为Prometheus格式,并通过/actuator/prometheus端点输出;
resilience4j-micrometer负责把Resilience4jCircuitBreakerRateLimiterBulkhead等组件的指标注册到Micrometer,三者缺一不可;
④若使用Spring Cloudresilience4j-spring-boot3等依赖已传递引入resilience4j-micrometer,可无需重复添加,但显式声明更稳妥。

  1. application.yml配置暴露Actuator端点
    application.yml中配置Actuator,仅暴露prometheus端点,并开启Resilience4j的指标注册:
# ========== Actuator端点配置 ==========management:endpoints:web:exposure:# 仅暴露prometheus端点,避免不必要的端点对外暴露include:prometheus# 开启Resilience4j指标注册到Micrometermetrics:tags:application:${spring.application.name:unknown}# 为所有指标附加应用名标签

说明:
management.endpoints.web.exposure.include指定通过HTTP暴露的端点,这里配置为prometheus,访问/actuator/prometheus即可获取指标;
management.metrics.tags.application为所有指标附加application标签,便于在Grafana中按应用维度过滤;
Resilience4j的指标默认会随Micrometer自动注册,无需额外配置即可在/actuator/prometheus中看到resilience4j_circuitbreaker_*等指标;
④若需在Grafana中按实例区分,可同时配置management.metrics.tags.instance等自定义标签。

  1. 验证指标端点
    完成上述配置后,启动Spring Boot应用,浏览器访问http://ip:port/actuator/prometheusip为应用所在服务器地址,port为应用端口),即可看到Prometheus格式的指标输出;

    在返回的指标中,重点查找resilience4j相关的指标,例如:

    说明:
    resilience4j_circuitbreaker_state表示熔断器当前状态(closed关闭、open打开、half_open半开);
    resilience4j_circuitbreaker_calls_total统计成功与失败的调用次数,kind标签区分successfulfailed
    ③若页面返回404,请检查Actuator端点是否已暴露、依赖是否引入完整;
    ④若页面返回401403,需检查是否配置了Spring Security,并放行/actuator/prometheus端点;
    ⑤确认指标正常返回后,回到PrometheusTargets页面(http://ip:9090/targets),即可看到spring-boot-app任务处于UP状态,随后便可在Grafana中创建仪表盘展示Resilience4j指标。
  2. Grafana中新建仪表盘,查询spring-boot-app节点的指标数据
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/3 8:43:23

专业ASMR音频制作全流程:从双耳录音技术到沉浸式内容创作

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/3 8:41:31

从压缩包到高阶音乐体验:资源处理、播放优化与音质验证全链路指南

简介&#xff1a;本资源是一份面向信号处理与通信系统方向的高阶谱估计算法实践代码包&#xff0c;主要服务于高校研究生、科研人员及雷达/无线通信领域工程师&#xff0c;用于深入理解并实现ROOT-MUSIC、MUSIC、ESPRIT等DOA估计算法及ISODATA聚类技术。压缩包仅含1个MATLAB源文…

作者头像 李华
网站建设 2026/9/3 8:40:12

倾斜摄影3D Tiles测试数据:构建、验证与性能评估全流程指南

简介&#xff1a;本资源是一套专为Cesium三维地理可视化开发准备的倾斜摄影测试数据集&#xff0c;面向GIS开发者、三维Web前端工程师及数字孪生项目实践者&#xff0c;解决倾斜摄影模型在Web端高效加载与渲染的技术验证需求。压缩包共2000个文件&#xff0c;主体为5142个.b3dm…

作者头像 李华
网站建设 2026/9/3 8:39:24

centos7 nginx php 玩Laravel卡安装?一文教你在CentOS7用Nginx+PHP搭环境

有一个被称作简洁、优雅的PHP开发框架, 然而不少首次接触这个框架的人, 却是在安装这一步遇到了阻碍, 实际上在Linux环境下, 仅需通过很简单的几步操作, 便能够将其搞定, 在此我们以PHP加上Nginx再加上Mysql的环境作为示例。首当其冲的是得去知悉, 关于安装依赖, 如同.2存在以下…

作者头像 李华
网站建设 2026/9/3 8:38:48

MiniMax H3 Turbo视频生成工作流:四步采样与防闪烁实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/3 8:38:38

基于Spring Boot的LIMS系统架构设计与核心模块实现

简介&#xff1a;本资源是一套基于Java与Spring Boot开发的样本库实验室管理系统&#xff08;LIMS&#xff09;完整源码&#xff0c;面向高校科研实验室、生物医学检测机构及企业研发部门的技术人员与Java全栈开发者&#xff0c;旨在解决样本登记、实验过程追踪、权限管控与数据…

作者头像 李华