Sentinel 控制台是流量控制、熔断降级规则统一配置和管理的入口,它为用户提供了机器自发现、簇点链路自发现、监控、规则配置等功能。在 Sentinel 控制台上,我们可以配置规则并实时查看流量控制效果。
使用如下命令将代码打包成一个 fat jar:
mvn clean package
使用如下命令启动编译后的控制台:
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 分钟;
选择合适的方式接入 Sentinel,然后在应用启动时加入 JVM 参数 -Dcsp.sentinel.dashboard.server=consoleIp:port
指定控制台地址和端口。
确保客户端有访问量,Sentinel 会在客户端首次调用的时候进行初始化,开始向控制台发送心跳包,将客户端纳入到控制台的管辖之下。
客户端接入的详细步骤请参考 Wiki 文档。
客户端正确配置并启动后,会在初次调用后主动向控制台发送心跳包,汇报自己的存在; 控制台收到客户端心跳包之后,会在左侧导航栏中显示该客户端信息。如果控制台能够看到客户端的机器信息,则表明客户端接入成功了。
更多:控制台功能介绍。
1、application.properties 添加nacos配置
sentinel.nacos.addr=localhost:8848
sentinel.nacos.namespace=sentinel-${spring.profiles.active}
2、将test下的包com.alibaba.csp.sentinel.dashboard.rule.nacos
中类添加到com.alibaba.csp.sentinel.dashboard.rule下
这几个类实现功能就是将控制台的流控规则持久化到nacos中
3、修改类 com.alibaba.csp.sentinel.dashboard.controller.v2.FlowControllerV2 原有:
@Autowired
@Qualifier("flowRuleDefaultProvider")
private DynamicRuleProvider<List<FlowRuleEntity>> ruleProvider;
@Autowired
@Qualifier("flowRuleDefaultPublisher")
private DynamicRulePublisher<List<FlowRuleEntity>> rulePublisher;
修改为:
@Autowired
@Qualifier("flowRuleNacosProvider")
private DynamicRuleProvider<List<FlowRuleEntity>> ruleProvider;
@Autowired
@Qualifier("flowRuleNacosPublisher")
private DynamicRulePublisher<List<FlowRuleEntity>> rulePublisher;
4、修改sentinel-dashboard/src/main/webapp/resources/app/scripts/directives/sidebar/sidebar.html 原有:
<li ui-sref-active="active" ng-if="!entry.isGateway">
<a ui-sref="dashboard.flowV1({app: entry.app})">
<i class="glyphicon glyphicon-filter"></i> 流控规则</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> 流控规则</a>
</li>