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

本文介绍了如何将Sentinel控制台的实时监控数据持久化到MySQL数据库,通过实现MetricsRepository接口并使用Spring Data JPA进行数据操作。详细步骤包括设计sentinel_metric表结构,创建MetricPO实体类,编写JpaMetricsRepository实现类,并在MetricController、MetricFetcher中注入新实现。验证结果表明MySQL存储能够正常工作,但作者认为对于监控数据,时序数据库如InfluxDB可能是更好的选择。
摘要由CSDN通过智能技术生成

根据官方wiki文档,sentinel控制台的实时监控数据,默认仅存储 5 分钟以内的数据。如需持久化,需要定制实现相关接口。

1.自行扩展实现 MetricsRepository 接口;

2.注册成 Spring Bean 并在相应位置通过 @Qualifier 注解指定对应的 bean name 即可。

本文先学习官方提供的接口梳理思路,然后使用Spring Data JPA编写一个MySQL存储实现。

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

首先看接口定义:

repository.metric包下的MetricsRepository接口

c4eac54941dd7872702d518b79db87cb.png

该接口定义了4个方法,分别用于保存和查询sentinel的metric数据。注释其实很清楚了,这里简单过一下:

save:保存单个metric

saveAll:保存多个metric

queryByAppAndResourceBetween:通过应用名名称、资源名称、开始时间、结束时间查询metric列表

listResourcesOfApp:通过应用名称查询资源列表

注:发现跟接口定义跟Spring Data JPA用法很像,即某个实体类Xxx对应一个XxxRepository,方法的命令也很规范,save、queryBy...

8cd1d1b747a9f2cfa760be99b1212baf.png

结合控制台【实时监控】菜单的界面,大概能猜到列表页面的查询流程:

菜单属于某一个应用,这里应用名称是sentinel-dashborad;

先通过应用名称查询应用下所有的资源,图中看到有2个,资源名称分别是/resource/machineResource.json、/flow/rules.json;// listResourcesOfApp方法

再通过应用名称、资源名称、时间等查询metric列表用于呈现统计图表;// queryByAppAndResourceBetween方法

在MetricsRepository类名上Ctrl+H查看类继承关系(Type Hiberarchy):

默认提供了一个用内存存储的实现类:InMemoryMetricsRepository

在MetricsRepository类的各个方法上,通过Ctrl+Alt+H 查看方法调用关系(Call Hierarchy) :

31545897da9514320bbbebdf2ebbfb4f.png

200d20f80bf7d3c60a609446ebffe738.png

edaf19ca8c113e94192acecd6eac2e7e.png

可以看到,MetricsRepository接口的

save方法被它的实现类InMemoryMetricsRepository的saveAll调用,再往上走被MetricFetcher调用,用于保存metric数据;

queryByAppAndResourceBetween、listResourcesOfApp被MetricController调用,用于查询metric数据;

------------------------------------------------------------------------------------------------------------------

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将Sentinel Dashboard的监控数据持久化MySQL,可以按照以下步骤进行操作: 1. 首先,根据官方文档,对Sentinel Dashboard进行优化,使其支持将监控数据存储到MySQL数据库中。这通常涉及到修改配置文件和引入相应的依赖包。 2. 其次,需要创建一个MySQL数据库,并配置Sentinel Dashboard的连接信息,包括数据库地址、用户名和密码等。这样,Sentinel Dashboard就可以将监控数据存储到MySQL数据库中了。 3. 接下来,可以使用MyBatis-Plus这个工具对MySQL中的监控数据进行操作。MyBatis-Plus是一种优秀的持久层框架,可以方便地进行数据库操作。 4. 通过配置Sentinel规则持久化MySQL,可以实现限流、降级、热点等功能。这可以通过修改项目配置文件中的相关设置来实现。具体的步骤和配置可以参考项目文档或者示例代码。 总结起来,要将Sentinel Dashboard的监控数据持久化MySQL,首先需要对Sentinel Dashboard进行优化以支持MySQL存储,然后创建MySQL数据库并配置连接信息,接着使用MyBatis-Plus对数据进行操作,最后配置Sentinel规则持久化MySQL。这样就可以实现将Sentinel Dashboard的监控数据持久化MySQL的功能了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Sentinel 控制台实时监控持久化MySQL](https://blog.csdn.net/zhangchaoyang/article/details/124159139)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [sentinel规则(都已实现)持久化mysql数据库,解压修改数据库地址即可使用,里面有数据库需要创建的表sql](https://download.csdn.net/download/zbh1957282580/85561031)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值