# sentinel-dashboard-redis
**Repository Path**: anthony92/sentinel-dashboard-redis
## Basic Information
- **Project Name**: sentinel-dashboard-redis
- **Description**: 基于sentinel-dashboard 1.7.1版本改造规则持久化到redis
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 7
- **Created**: 2020-06-02
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## 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依赖引用
```
org.springframework.boot
spring-boot-starter-data-redis
${spring.boot.version}
```
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> ruleProvider;
@Autowired
@Qualifier("flowRuleRedisPublisher")
private DynamicRulePublisher> rulePublisher;
```
5、修改src\main\webapp\resources\app\scripts\directives\sidebar\sidebar.html将dashboard.flowV1替换为dashboard.flow
修改前源码
```
流控规则
```
修改后
```
流控规则
```
## 0. 概述
Sentinel 控制台是流量控制、熔断降级规则统一配置和管理的入口,它为用户提供了机器自发现、簇点链路自发现、监控、规则配置等功能。在 Sentinel 控制台上,我们可以配置规则并实时查看流量控制效果。
## 1. 编译和启动
### 1.1 如何编译
使用如下命令将代码打包成一个 fat jar:
```bash
mvn clean package
```
### 1.2 如何启动
使用如下命令启动编译后的控制台:
```bash
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`|
全部的配置项可以参考 [启动配置项文档](https://github.com/alibaba/Sentinel/wiki/%E5%90%AF%E5%8A%A8%E9%85%8D%E7%BD%AE%E9%A1%B9)。
经过上述配置,控制台启动后会自动向自己发送心跳。程序启动后浏览器访问 `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 文档](https://github.com/alibaba/Sentinel/wiki/%E6%8E%A7%E5%88%B6%E5%8F%B0#3-%E5%AE%A2%E6%88%B7%E7%AB%AF%E6%8E%A5%E5%85%A5%E6%8E%A7%E5%88%B6%E5%8F%B0)。
## 3. 验证是否接入成功
客户端正确配置并启动后,会**在初次调用后**主动向控制台发送心跳包,汇报自己的存在;
控制台收到客户端心跳包之后,会在左侧导航栏中显示该客户端信息。如果控制台能够看到客户端的机器信息,则表明客户端接入成功了。
更多:[控制台功能介绍](./Sentinel_Dashboard_Feature.md)。