1 Star 1 Fork 8

guopengfei / sentinel-dashboard-redis

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

Sentinel 控制台

特别说明

此项目基于sentinel-dashboard 1.7.1版本,增加控制台规则持久化到redis

官方资料:https://github.com/alibaba/Sentinel/wiki/Sentinel-%E6%8E%A7%E5%88%B6%E5%8F%B0%EF%BC%88%E9%9B%86%E7%BE%A4%E6%B5%81%E6%8E%A7%E7%AE%A1%E7%90%86%EF%BC%89#%E8%A7%84%E5%88%99%E9%85%8D%E7%BD%AE

变化内容如下:

1、pomx.ml增加redis依赖引用

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
    <version>${spring.boot.version}</version>
</dependency>

2、启动类增加(因为我本地无法启动,源码没有该代码,如果在你本地可以运行也可删除该代码)

exclude = {DataSourceAutoConfiguration.class}

3、新增类

FlowRuleRedisProvider:自定义实现基于redis的拉取规则

FlowRuleRedisPublisher:自定义实现流控配置推送规则

RedisConfig:redis配置类

RuleConstants:自定义常量类

说明:本次个人新增的类均在包com.alibaba.csp.sentinel.dashboard.rule.redis下面

4、修改com.alibaba.csp.sentinel.dashboard.controller.v2.FlowControllerV2类 替换为自定义拉取和推送规则实现类

@Autowired
@Qualifier("flowRuleRedisProvider")
private DynamicRuleProvider<List<FlowRuleEntity>> ruleProvider;
@Autowired
@Qualifier("flowRuleRedisPublisher")
private DynamicRulePublisher<List<FlowRuleEntity>> rulePublisher;

5、修改src\main\webapp\resources\app\scripts\directives\sidebar\sidebar.html将dashboard.flowV1替换为dashboard.flow

修改前源码

<li ui-sref-active="active" ng-if="!entry.isGateway">
            <a ui-sref="dashboard.flowV1({app: entry.app})">
              <i class="glyphicon glyphicon-filter"></i>&nbsp;&nbsp;流控规则</a>
          </li>

修改后

 <li ui-sref-active="active" ng-if="!entry.isGateway">
            <a ui-sref="dashboard.flow({app: entry.app})">
              <i class="glyphicon glyphicon-filter"></i>&nbsp;&nbsp;流控规则</a>
          </li>

0. 概述

Sentinel 控制台是流量控制、熔断降级规则统一配置和管理的入口,它为用户提供了机器自发现、簇点链路自发现、监控、规则配置等功能。在 Sentinel 控制台上,我们可以配置规则并实时查看流量控制效果。

1. 编译和启动

1.1 如何编译

使用如下命令将代码打包成一个 fat jar:

mvn clean package

1.2 如何启动

使用如下命令启动编译后的控制台:

java -Dserver.port=8080 \
-Dcsp.sentinel.dashboard.server=localhost:8080 \
-Dproject.name=sentinel-dashboard \
-jar target/sentinel-dashboard.jar

上述命令中我们指定几个 JVM 参数,其中 -Dserver.port=8080 是 Spring Boot 的参数, 用于指定 Spring Boot 服务端启动端口为 8080。其余几个是 Sentinel 客户端的参数。

为便于演示,我们对控制台本身加入了流量控制功能,具体做法是引入 Sentinel 提供的 CommonFilter 这个 Servlet Filter。 上述 JVM 参数的含义是:

参数 作用
Dcsp.sentinel.dashboard.server=localhost:8080 向 Sentinel 接入端指定控制台的地址
-Dproject.name=sentinel-dashboard 向 Sentinel 指定应用名称,比如上面对应的应用名称就为 sentinel-dashboard

全部的配置项可以参考 启动配置项文档

经过上述配置,控制台启动后会自动向自己发送心跳。程序启动后浏览器访问 localhost:8080 即可访问 Sentinel 控制台。

从 Sentinel 1.6.0 开始,Sentinel 控制台支持简单的登录功能,默认用户名和密码都是 sentinel。用户可以通过如下参数进行配置:

  • -Dsentinel.dashboard.auth.username=sentinel 用于指定控制台的登录用户名为 sentinel
  • -Dsentinel.dashboard.auth.password=123456 用于指定控制台的登录密码为 123456;如果省略这两个参数,默认用户和密码均为 sentinel
  • -Dserver.servlet.session.timeout=7200 用于指定 Spring Boot 服务端 session 的过期时间,如 7200 表示 7200 秒;60m 表示 60 分钟,默认为 30 分钟;

2. 客户端接入

选择合适的方式接入 Sentinel,然后在应用启动时加入 JVM 参数 -Dcsp.sentinel.dashboard.server=consoleIp:port 指定控制台地址和端口。 确保客户端有访问量,Sentinel 会在客户端首次调用的时候进行初始化,开始向控制台发送心跳包,将客户端纳入到控制台的管辖之下。

客户端接入的详细步骤请参考 Wiki 文档

3. 验证是否接入成功

客户端正确配置并启动后,会在初次调用后主动向控制台发送心跳包,汇报自己的存在; 控制台收到客户端心跳包之后,会在左侧导航栏中显示该客户端信息。如果控制台能够看到客户端的机器信息,则表明客户端接入成功了。

更多:控制台功能介绍

空文件

简介

基于sentinel-dashboard 1.7.1版本改造规则持久化到redis 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Java
1
https://gitee.com/CNCDBLOG/sentinel-dashboard-redis.git
git@gitee.com:CNCDBLOG/sentinel-dashboard-redis.git
CNCDBLOG
sentinel-dashboard-redis
sentinel-dashboard-redis
master

搜索帮助