基于 Sentinel 实现历史监控数据回看

Sentinel(第三篇)_Springboot2.x+Sentinel监控信息基于MySQL持久化 前言 根据官方提供的wiki文档,sentinel控制台的实时监控数据,默认提供的存储数据时间为 5 分钟以内的数据。如果我们的需求是需要持久化的,那就需要我们自己定制实现相关的接口。 https://github.com/alibaba/Sentinel/wiki/%E5%AE%9E%E6%97%B6%E7%9B%91%E6%8E%A7 本文只做一个持久化基于MySQL的方式,对于监控数据,可能用MySQL关系数据库存储不太合适,虽然MySQL也可以通过事件或者任务定期清理或者通过代码定时的清理。 数据 阅读详情

👉 这是一个或许对你有用的社群

🐱 一对一交流/面试小册/简历优化/求职解惑,欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料: 

83e6a72255e1e33c2a4402a9037ca748.gif

👉这是一个或许对你有用的开源项目

国产 Star 破 10w+ 的开源项目,前端包括管理后台 + 微信小程序,后端支持单体和微服务架构。

功能涵盖 RBAC 权限、SaaS 多租户、数据权限、商城、支付、工作流、大屏报表、微信公众号等等功能:

  • Boot 地址:https://gitee.com/zhijiantianya/ruoyi-vue-pro

  • Cloud 地址:https://gitee.com/zhijiantianya/yudao-cloud

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

来源:juejin.cn/post/
7281912738862596136


众所周知,Sentinel 对监控数据的做法是定时落盘在客户端,然后 Sentinel 提供接口去拉取日志文件。所以 Sentinel 在监控数据上理论上是最少存储 1 天以上的数据;然而作为控制台展示,则仅在内存中聚合 5 分钟以内的统计数据,不进行持久化。

官方鼓励大家对 Dashboard 进行改造实现指标信息的持久化,并从其它的存储中(如 RDBMS、时序数据库等)拉取的监控信息,包括实时的和历史的数据。

基于此,结合公司内部的需求,我们自行改造并实现了监控指标的持久化。本文把一些实现过程分享给大家!

Sentinel 是阿里巴巴开源的流量治理平台,提供了 流量控制、熔断降级、系统负载保护、黑白名单访问控制 等功能。在实际的生产需求中,笔者进行了部分扩展:

  1. 流控规则持久化:适配 Apollo、Nacos、Zookeeper

  2. 监控数据持久化:适配 InfluxDB、Kafka、Elasticsearch

  3. 监控面板优化:新增时间控件,允许在任意时刻内查询监控数据。

如你需要我的完整简版源代码,请加我微信:xmtxtt,送给爱学习爱上进的人。

演示图例

改造前

cacd1e9dd463fe53f9b45ae39c412712.jpeg

改造后

25b6719941d567c23804dc332b06d7ad.jpeg

快捷时间选择。

61c0b27cfa64ddcae9e22d3447a59016.jpeg

自定义时间选择。

f87e2864888101877b517d0137041b5d.jpeg

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

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

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

如何构建

本项目默认使用 Maven 来构建,最快的使用方式是把我给你的代码导入的开发工具中。或在项目的根目录执行 mvn install -T 4C 完成本项目的构建。

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

  • 项目地址:https://github.com/YunaiV/yudao-cloud

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

如何启动

IDEA 启动

本项目默认不依赖外部组件,可以直接启动运行。

  1. 在项目目录下运行 mvn install(如果不想运行测试,可以加上 -DskipTests 参数)。

  2. 进入 sentinel-dashboard 目录,执行 mvn spring-boot:run 或者启动 SentinelApplication 类。运行成功的话,可以看到 Spring Boot 启动成功的界面。

在实际的生产需求,Sentinel 保存的规则和监控是需要持久化落盘的,因此,您可以在 sentinel-dashboard/src/main/resources/application.properties 接入外部组件。

  • 规则存储类型:memory(默认)、nacos(推荐)、apollo、zookeeper

# 规则存储类型,可选项:memory(默认)、nacos(推荐)、apollo、zookeeper
sentinel.rule.type=nacos
# Nacos 存储规则,如果您设置了 sentinel.metrics.type=nacos,需要调整相关配置
sentinel.rule.nacos.server-addr=localhost:8848
sentinel.rule.nacos.namespace=demo
sentinel.rule.nacos.group-id=sentinel
sentinel.rule.nacos.username=nacos
sentinel.rule.nacos.password=nacos
# Apollo 存储规则,如果您设置了 sentinel.metrics.type=apollo,需要调整相关配置
sentinel.rule.apollo.portal-url=http://localhost:10034
sentinel.rule.apollo.token=
sentinel.rule.apollo.env=
# Zookeeper 存储规则,如果您设置了 sentinel.metrics.type=zookeeper,需要调整相关配置
sentinel.rule.zookeeper.connect-string=localhost:2181
sentinel.rule.zookeeper.root-path=/sentinel_rule
  • 监控存储类型:memory(默认)、influxdb(推荐)、elasticsearch

# 监控存储类型,可选项:memory(默认)、influxdb(推荐)、elasticsearch
sentinel.metrics.type=memory
# InfluxDB 存储监控数据,如果您设置了 sentinel.metrics.type=influxdb,需要调整相关配置
influx.url=http://localhost:8086/
influx.token=UfgaW37A93PkncmJum25G7M2QkBg6xqqjGthh-o-UIVIynC_-Q7RFWlTtEpMqhGLCuAsX64k3Isc2uN33YgElw==
influx.org=sentinel
influx.bucket=sentinel
influx.log-level=NONE
influx.read-timeout=10s
influx.write-timeout=10s
influx.connect-timeout=10s
# Elasticsearch 存储监控数据,如果您设置了 sentinel.metrics.type=elasticsearch,需要调整相关配置
sentinel.metrics.elasticsearch.index-name=sentinel_metric
spring.elasticsearch.rest.uris=http://localhost:9200
spring.elasticsearch.rest.connection-timeout=3000
spring.elasticsearch.rest.read-timeout=5000
spring.elasticsearch.rest.username=
spring.elasticsearch.rest.password=
# 监控数据存储缓冲设置,降低底层存储组件写入压力。可选项:none(默认不启用)、kafka(推荐)
sentinel.metrics.sender.type=none
# Kafka 存储监控数据,如果您设置了 sentinel.metrics.sender.type=kafka,需要调整相关配置
sentinel.metrics.sender.kafka.topic=sentinel_metric
spring.kafka.producer.bootstrap-servers=localhost:9092
spring.kafka.producer.batch-size=4096
spring.kafka.producer.buffer-memory=40960
spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer
spring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer

镜像启动

本项目已发布到 Docker Hubhttps://hub.docker.com/repository/docker/shiyindaxiaojie/sentinel-dashboard,请执行参考命令运行。

docker run -p 8090:8090 --name=sentinel-dashboard -d shiyindaxiaojie/sentinel-dashboard

如何部署

FatJar 部署

执行 mvn clean package 打包成一个 fat jar,参考如下命令启动编译后的控制台。

java -Dserver.port=8080 \
-Dsentinel.rule.nacos.server-addr=localhost:8848 \
-Dsentinel.rule.nacos.namespace=demo \
-Dsentinel.rule.nacos.group-id=sentinel \
-Dsentinel.metrics.type=influxdb \
-Dinflux.url=http://localhost:8086 \
-Dinflux.token=XXXXXX \
-Dinflux.org=sentinel \
-Dinflux.bucket=sentinel \
-jar target/sentinel-dashboard.jar

Docker 部署

本项目使用了 Spring Boot 的镜像分层特性优化了镜像的构建效率,请确保正确安装了 Docker 工具,然后执行以下命令。

docker build -f docker/Dockerfile -t sentinel-dashboard:{tag} .

Helm 部署

以应用为中心,建议使用 Helm 统一管理所需部署的 K8s 资源描述文件,请参考以下命令完成应用的安装和卸载。

helm install sentinel-dashboard ./helm # 部署资源
helm uninstall sentinel-dashboard # 卸载资源

如何接入

为了减少客户端集成的工作,您可以使用 eden-architect 框架,只需要两步就可以完成 Sentinel 的集成。

  1. 引入 Sentinel 依赖

<dependency>
    <groupId>io.github.shiyindaxiaojie</groupId>
    <artifactId>eden-sentinel-spring-cloud-starter</artifactId>
</dependency>
  1. 开启 Sentinel 配置

spring:
  cloud:
    sentinel: # 流量治理组件
      enabled: false # 默认关闭,请按需开启
      http-method-specify: true # 兼容 RESTful
      eager: true # 立刻刷新到 Dashboard
      transport:
        dashboard: localhost:8090
      datasource:
        flow:
          nacos:
            server-addr: ${spring.cloud.nacos.config.server-addr}
            namespace: ${spring.cloud.nacos.config.namespace}
            groupId: sentinel
            dataId: ${spring.application.name}-flow-rule
            rule-type: flow
            data-type: json

时间关系,就讲这么多吧。细节上的可以通过我的源码去进一步的研究。


欢迎加入我的知识星球,全面提升技术能力。

👉 加入方式,“长按”或“扫描”下方二维码噢:

95e36b553c99c6160b9bb0f90cce8692.png

星球的内容包括:项目实战、面试招聘、源码解析、学习路线。

7dc34728308b5ffea3de609a925976d5.png

ea9ad1883ff24fe4bbfcbd6cda9af6cb.pngc868a0f16cb57da98b3cca367582f24e.png29114ece9084184ae914ba19430283dc.png0d0f1f443a8e69ed59731c9f47a2fc93.png

文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)
sentinel-dashboard-plus:sentinel dashboard 升级,规则管理及推送持久化到Nacos、实时监控数据存储在ES sentinel 使用文档 sentinel dashboard 升级 ​ sentinel 提供一个轻量级的开源控制台,是流量控制、熔断降级规则统一配置和管理的入口,它为用户提供了机器自发现、簇点链路自发现、监控、规则配置和推送功能。原始的sentinel控制台配置的规则只存储在内存中,客户端服务配置好规则在应用重启后会出现丢失的问题,sentinel控制台的实时监控数据,默认只存储5分钟以内的数据。生产环境 sentinel dashboard的使用需改造几个特性:规则管理及推送持久化到Nacos、实时监控数据存储在ES、集成saas平台用户鉴权。 ​ 创建一个maven工程(sentinel-dashboard-plus),引入GitHub上开源的最新release发行版本的sentinel-dashboard.jar到项目工程中,进行sentinel控制 立即下载

相关推荐

从零到一:Quartus II连接开发板实战,打通绘图、管脚分配、编译与下载全链路

本文详细介绍了使用Quartus II软件连接FPGA开发板并完成首个项目的全流程。从硬件连接到驱动安装,到绘制电路框图、精准分配管脚,再到编译设置与最终下载,手把手指导您打通从设计到硬件实现的完整链路,是FPGA初学者的实战入门指南。

mqtt6iot的博客 717

Sentinel的实时监控功能是如何实现的?

Sentinel的实时监控功能是其核心特性之一,它能够帮助开发者实时了解应用程序的运行状态,包括但不限于流量、QPS、响应时间、异常比例等关键指标。

qq_33240556的博客 1万+

冒险岛脚本函数大全:cm.sendYesNo和cm.warp的20个实战用法

本文深入解析了冒险岛脚本中cm.sendYesNo和cm.warp两个核心函数的20个实战应用场景。从基础的确认对话框交互、条件判断,到复杂的装备强化系统、动态传送与副本入口逻辑,文章通过大量代码示例展示了如何组合运用这两个函数,实现从简单NPC到复杂任务系统的进阶脚本开发,并分享了状态管理、错误处理与性能优化等最佳实践。

t4y5u6i7o的博客 1063

Sentinel 之实时监控

Sentinel 提供了一套实时监控系统,用于收集和展示应用的运行时流量、资源调用情况以及规则触发等信息。实时监控是 Sentinel 控制台的核心功能之一,它帮助开发者直观地了解系统的状态,并根据需要调整流控、降级和其他保护策略。通过 Sentinel 的实时监控功能,开发人员可以基于实际业务需求灵活调整流量控制规则,优化服务性能,确保系统的稳定性及高可用性。

qq_33240556的博客 700

pcb印刷电路缺陷检测----数据集准备

PKU-Market-PCB 印刷电路板 (PCB) 瑕疵数据集是一个公共合成 PCB 数据集,包含 1,386 张图像,具有 6 种缺陷(漏孔、鼠咬、开路、短路、杂散、杂铜),可用于图像检测、分类和配准任务。

qq_30190551的博客 4439

Apache Hop环境搭建实战:从零到一的下载、安装与配置指南

本文详细介绍了Apache Hop环境搭建的全过程,包括下载、安装与配置指南。从选择正确的JDK17版本到设置关键环境变量,再到启动GUI界面和解决常见问题,提供了全面的实战指导。适合数据工程师和ETL开发者快速上手这一强大的数据集成工具。

weixin_42634811的博客 577

sentinel监控持久化:sentinel控制台监控数据持久化

根据官方wiki文档,sentinel控制台的实时监控数据,默认仅存储 5 分钟以内的数据。如需持久化,需要定制实现相关接口。 https://github.com/alibaba/Sentinel/wiki/在生产环境中使用-Sentinel-控制台 也给出了指导步骤: 1.自行扩展实现 MetricsRepository 接口; 2.注册成 Spring Bean 并在相应位置通过 @Qualifier 注解指定对应的 bean name 即可。 本文先学习官方提供的接口梳理思路,然后使用S.

penggerhe的博客 2511

CVE-2025-25249漏洞深度解析:FortiOS认证绕过与实战缓解

远程代码执行(RCE)是网络安全中最危险的漏洞类型之一,其核心往往源于认证机制失效或内存安全缺陷。CVE-2025-25249正属于此类高危漏洞——它不依赖用户凭证,也不需要交互触发,而是通过超长HTTP头(如X-Forwarded-For)引发内存越界写入,直接绕过FortiOS和FortiSwitchManager的完整认证流程。该漏洞影响广泛、CVSS评分高达9.8,凸显了嵌入式设备在HTTP协议栈实现中的深层风险。在企业网络中,FortiGate等设备常作为边界守门人,一旦失陷将导致root级控制权

weixin_33694620的博客 526

吞吐量(TPS)、QPS、并发数、响应时间(RT)概念

1. 响应时间(RT) 响应时间是指系统对请求作出响应的时间。直观上看,这个指标与人对软件性能的主观感受是非常一致的,因为它完整地记录了整个计算机系统处理请求的时间。由于一个系统通常会提供许多功能,而不同功能的处理逻辑也千差万别,因而不同功能的响应时间也不尽相同,甚至同一功能在不同输入数据的情况下响应时间也不相同。所以,在讨论一个系统的响应时间时,人们通常是指该系统所有功能的平均时间或者所有功能的...

weixin_40805537的博客 868

codevs 1620 轮船问题 DP 解题报告

某国家被一条河划分为南北两部分,在南岸和北岸总共有N对城市,每一城市在对岸都有唯一的友好城市,任何两个城市都没有相同的友好城市。

Hawo11的博客 819

vue3:最新实现腾讯人脸核身+增强版人脸核身使用方法及示例源码,Vue3如何使用腾讯云慧眼人脸核身,提供人脸核身案例、身份信息核验、活体检测与核身比对等示例代码(后端spring与thinkphp)

vue3接入腾讯人脸核身,腾讯云人脸核身Vue3+后端代码,H5人脸核身,vue3 H5如何使用腾讯人脸核身sdk,vue3+thinkphp腾讯人脸核身,Spring Boot接入腾讯云人脸核身教程,hinkphp腾讯人脸核身,vue3人脸核身插件接入流程,vue+spring boot实现腾讯人脸核身,vue3接入腾讯云【增强版人脸核身接入】,vue3 h5微信公众号网页腾讯云慧眼人脸核身,tvue3接入人脸核身SDK,vue3+typescrip+vite接入慧眼实名认证,vue3腾讯云活体人脸核身(

✅ 精选推荐文章 4121

Sentinel

Sentinel 是什么 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式服务架构的轻量级流量控制产品,主要以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来帮助您保护服务的稳定性。 Sentinel 的历史 2012 年,Sentinel 诞生,主要功能为入口流量控制。 2013-2017 年,Sentinel 在阿里巴巴集团内部迅速发展,成为基础技术模块,覆盖了所有的核心场景。Sentinel 也因此积累了大量的流量归整场景以及生产实践。 20

帅帆的博客 504

Sigrity Power DC Single-BoardPackage IR Drop Analysis模式进行单板压降仿真分析操作指导

如果需要单独对某个via设置参数,右侧选择Setup by padstack,下方下拉选择某个via,单独设置参数即可。举例:板厚1.6mm,内层1OZ(1.2mil,即0.03mm),铜皮宽度1mm,20度温升,允许通流I为2.5A。目的是模拟实际情况,via的孔壁电镀1mil,中间是空心的,让via不完全被填充金属成为实心via。Upper/lower Tolerance:上下公差,设置为5%,也就是压降允许的范围。电流密度计算公式:J=I/A(J为电流密度,I为电流,A为横截面积)

weixin_54787054的博客 699

动手扩展 Sentinel:实现历史监控数据回看

来源:juejin.cn/post/7281912738862596136???? 欢迎加入小哈的星球,你将获得:专属的项目实战 / Java 学习路线 /一对一提问 / 学习打卡/ 赠书福利全栈前后端分离博客项目 1.0 版本完结啦,2.0 正在更新中...,演示链接:http://116.62.199.48/,全程手摸手,后端 + 前端全栈开发,从 0 到 1 讲解每个功能点开发步骤,1...

犬小哈 326

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

sentinel实时监控

sentinel实时监控

qq_36070104的博客 716

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Sentinel如何进行流量监控

0x01:启动sentinel-dashboard 要启动sentinel-dashboard首先要找到启动类,sentinel-dashboard是一个标准的SpringBoot工程,启动可以在sentinel-dashboard这个项目中找到。 直接启动DashboardApplication.java类,访问如下地址 http://127.0.0.1:8080/ 可以使用默认账号:sentinel / sentinel访问sentinel-dashboard,进入系统里..

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

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Sentinel —实时监控

Sentinel —实时监控

深圳市多克创新科技有限公司 1727

阿里巴巴 Sentinel + InfluxDB + Chronograf 实现监控大屏

前言 在上一篇推文中,我们使用时序数据库 InfluxDb 做了流控数据存储,但是数据存储不是目的,分析监控预警才是最终目标,那么问题来了,如何更好的实现呢?用过阿里巴巴 Sentinel 控制台的小伙伴,是不是觉得它的控制台丑爆了,而且只有短短的五厘米,显然不能满足大部分人或者场景的使用。 架构 工具 sentinel-dashboard(控制台,收集数据) Influxdb(时...

weixin_30721899的博客 1024

【sentinel】监控数据db持久化

【sentinel】实现监控数据持久化

qq_31426247的博客 775

sentinel数据持久化mysql_sentinel控制台监控数据持久化【MySQL】

根据官方wiki文档,sentinel控制台的实时监控数据,默认仅存储 5 分钟以内的数据。如需持久化,需要定制实现相关接口。1.自行扩展实现 MetricsRepository 接口;2.注册成 Spring Bean 并在相应位置通过 @Qualifier 注解指定对应的 bean name 即可。本文先学习官方提供的接口梳理思路,然后使用Spring Data JPA编写一个MySQL存储实...

weixin_34207925的博客 783

Sentinel—实时监控详解

Sentinel—实时监控详解

深圳市多克创新科技有限公司 983

快速学习-sentinel实时监控

9、实时监控 Sentinel 提供对所有资源的实时监控。如果需要实时监控,客户端需引入以下依赖(以Maven 为例): <dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-transport-simple-http</artifactId> <version>x.

逍遥云恋 1287

Sentinel系列(12) - Sentinel之实时监控

实时监控 Sentinel 提供对所有资源的实时监控,我们可以通过控制台查看。 可以很清楚的看到当前QPS流量趋势。 监控API 簇点监控 获取簇点列表 API: GET /clusterNode 当应用启动之后,可以运行下列命令,获得当前所有簇点(ClusterNode)的列表(JSON 格式): # 客户端IP+与控制台通信端口 http://localhost:8719/clusterNode 返回数组Json 结果示例: [ {"avgRt":0.0, //平均响应时间 "blockReq

记录知识、锤炼自我 4036

SpringBoot 2.0 + InfluxDB+ Sentinel 实时监控数据存储

点击▲关注 “爪哇笔记” 给公众号标星置顶更多精彩 第一时间直达前言阿里巴巴提供的控制台只是用于演示 Sentinel 的基本能力和工作流程,并没有依赖生产环境中所必...

不是太高的手的专栏 1605

springCloud-Alibaba——改造sentinel控制台实时监控数据持久化到mysql

目录 (1)改造目标: (2)源码分析: (3)设计表结构: (4)源码增加依赖: (5)源码增加实体类: (6)源码修改配置文件: (7)源码增加接口自定义实现类: (8)源码修改接口调用自定义实现类: (9)源码打包: (10)windows启动控制台: (11)windows关闭控制台: (12)linux启动控制台: (13)linux关闭控制台: A、查找服务...

LSY_优快云_的博客 1916
上一篇: 降低代码可读性,增加维护难度的 12 个编码“小技巧”,地位稳了!
下一篇: Mybatis Plus很好,但也有坑!
公众号-芋道源码
博客等级 码龄10年 1636粉丝 377原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值