阿里 sentinel dashboard源码实现请求数据监控统计与持久化展示数据,集成spring cloud多环境打包jar包运行

本文介绍了如何通过源码修改阿里Sentinel Dashboard,实现请求数据的监控统计与持久化到MySQL,以及在Spring Cloud环境中打包运行。详细步骤包括持久化配置、前端界面修改和多环境打包。
摘要由CSDN通过智能技术生成

  最近在做一个要求统计api-gateway模块的所有请求数据展示的一个功能,所以查找了几个方案,包括以下:

1,alibaba sentinel 哨兵(最后决定使用这个,因为功能比较丰富,以后可能可以用到,而且想试一下阿里的框架,控制台dashboard的前端实时请求展示用的框架也是蚂蚁金服的G2可视化图表框架)

2,大众点评(这个功能很完善,而且也很丰富,完全符合要求,后端需要部署,前端集成,但是查资料网友说不支持api-gateway,所以放弃了)

3,spring boot Admin(主要针对服务的监控)

4,Hystrix Dashboard(单个微服务监控)+ Turbine 聚合监控(集群微服务监控)(可以监控,但是一些统计界面还是要自己统计实现)

5,Spring Cloud Sleuth + Zipkin +ELK(虽然集成了ELK,但是这个工程比较麻烦)

6,springboot  aop 切面拦截http请求(可以拦截,但要考虑到数据量持久化的性能问题)

以上使用到的方案,基本都试验过了,最后决定还是用阿里的哨兵吧:

     附上github地址:https://github.com/alibaba/Sentinel/wiki (手动点击看介绍)

现在的版本已经更新到1.6了,因为本人目前只是需要其中的一个数据请求统计的功能,所以就只下载了sentinel dashboard的源码来操作,修改里面的东西,实现自己想要的功能。

sentinel dashboard集成spring cloud的操作非常简单,只需要配置pom依赖和配置文件dashboard的地址就能连上sentinel dashboard控制台了;

第一步,在需要的监控的模块,配置依赖pom: 由于项目的spring boot版本是1.4.1的低版本,所以目前可以依赖0.1.0.RELEASE包,依赖0.2.0.RELEASE或以上的话就会报错,目前已经更新到0.9.0.RELEASE依赖包

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
    <version>0.1.0.RELEASE</version>
</dependency>

第二步,配置文件配置dashboard访问地址:(这里我改成了31017的访问地址,防止和其他端口冲突)

spring:
  cloud:
    sentinel:
      transport:
        dashboard: localhost:31017

好了,以上两步spring cloud配置就集成了sentinel dashboard了,简单吧

第三步,网上下载运行sentinel dashboard.jar包,一开始我下载的是网上已经打包好的1.6.0-jar包的,不过很抱歉,那个网址不知道扔哪里去了,不过既然下载了源码下来,我们也可以自己打包一个jar给自己用,而且后面的操作都会涉及到源码,打开源码,切到sentinel dashboard的模块下,在终端运行打包命令:mvn clean package

生成target包,进去里面找打包好的jar包,并且运行此jar包,命令:java -jar sentinel-dashboard.jar 

注意:打包的源码中的配置文件application.properties,记得修改里面的端口号为:31017

添加代码:     server.port = 31017

前端访问地址:gulpfile.js文件,拉倒最下面看到打开浏览器那里,修改你的前端访问端口号:

运行起来,就可以在浏览器打开链接:localhost:31017,看到控制台的页面了,如下(为了展示,下面两张图都是取别人的):

不修改其他代码的话,大致实现图如下:(左边是图表展示格式,右边是表格展示格式)

 

图表最左边是一堆功能选项列表,其中我想要的功能就在实时监控里面,这里展示的数据是实时的,并且是秒级展示的。

引用官网的一段话:Sentinel 会记录资源访问的秒级数据(若没有访问则不进行记录)并保存在本地日志中,具体格式请见 秒级监控日志文档。Sentinel 控制台可以通过 Sentinel 客户端预留的 HTTP API 从秒级监控日志中拉取监控数据,并进行聚合。

       目前 Sentinel 控制台中监控数据聚合后直接存在内存中,还没有进行持久化,且仅保留最近 5 分钟的监控数据。若需要监控数据持久化的功能,可以扩展实现 MetricsRepository 接口(0.2.0 版本);

注意:网上给出的持久化到配置中心apollo或者nacox等,实际上主要是持久化规则而已,实现数据持久化展示,还得自己持久化到自己的数据库中

但是我想要的功能其实不需要这么多,暂时只是需要实时的功能,所以其他功能用来作为以后续项目需求再拓展使用,暂先屏蔽

下面先给出我改造后的功能图:

左边列表暂时不需要用到的功能-前后端都屏蔽了,只留下了个实时功能,目前的效果是因为访问数据量过于庞大,故数据库里只保存了前6个小时以内的数据,超过6个小时便会删除数据,前端页面一分钟请求统计一次,亦可点击搜索按钮直接请求,后端实时拦截数据,内存保存时间改为1分钟,过滤其他不需要统计的请求url,前端图表只留下柱状图,并按分钟统计展示(取消秒级统计),曾测试过10万条假数据,浏览器很容易奔溃,减至5千条也仍然有此隐患,故前端修改为按分页懒加载查询,每页最大3千条数据统计为准。

下面一一给出持久化到数据库以及前后端修改的源码:

1,创建数据库:ssc_sentinel,并创建数据表sentinel_metric(建表语句如下):

CREATE TABLE `sentinel_metric` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id,主键',
  `gmt_create` datetime DEFAULT NULL COMMENT '创建时间',
  `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
  `app` varchar(100) DEFAULT NULL COMMENT '应用名称',
  `timestamp` datetime DEFAULT NULL COMMENT '统计时间',
  `resource` varchar(500) DEFAULT NULL COMMENT '资源名称',
  `pass_qps` int(11) DEFAULT NULL COMMENT '通过qps',
  `success_qps` int(11) DEFAULT NULL COMMENT '成功qps',
  `bl

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值