跳到主要内容

控制台

Sentinel 控制台是一个轻量级的开源控制台,提供机器发现、健康情况管理、监控(单机和集群)、规则管理和推送等功能。通过控制台,可以直观地查看资源的运行情况,并动态配置规则。

控制台功能

Sentinel 控制台包含以下核心功能:

  • 机器列表与健康情况:收集 Sentinel 客户端发送的心跳包,判断机器是否在线
  • 实时监控:通过客户端暴露的监控 API,定期拉取并聚合应用监控信息,实现秒级实时监控
  • 规则管理与推送:统一管理和推送规则,支持流控规则、熔断规则、系统规则等
  • 鉴权:提供基本的登录功能

启动控制台

下载控制台

从 GitHub Release 页面下载最新版本的控制台 JAR 包:

wget https://github.com/alibaba/Sentinel/releases/download/1.8.8/sentinel-dashboard-1.8.8.jar

或者从源码构建:

git clone https://github.com/alibaba/Sentinel.git
cd Sentinel
mvn clean package

构建完成后,JAR 包位于 sentinel-dashboard/target/sentinel-dashboard.jar

启动控制台

使用以下命令启动控制台:

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

启动参数说明:

参数说明默认值
server.port控制台端口8080
csp.sentinel.dashboard.server控制台地址-
project.name项目名称-

访问控制台

打开浏览器访问 http://localhost:8080,默认用户名和密码都是 sentinel

客户端接入控制台

引入依赖

客户端需要引入 Transport 模块来与控制台通信:

<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-transport-simple-http</artifactId>
<version>1.8.8</version>
</dependency>

配置启动参数

启动应用时添加 JVM 参数:

-Dcsp.sentinel.dashboard.server=localhost:8080

如果启动多个应用,需要指定客户端监控 API 的端口:

-Dcsp.sentinel.dashboard.server=localhost:8080
-Dcsp.sentinel.api.port=8719

Spring Boot 配置方式

在 Spring Boot 应用中,可以通过配置文件指定:

spring:
cloud:
sentinel:
transport:
dashboard: localhost:8080
port: 8719

触发客户端初始化

Sentinel 是懒加载的,需要确保客户端有访问量。首次调用时,Sentinel 会进行初始化,开始向控制台发送心跳包。

控制台界面介绍

机器列表

在"机器列表"页面可以查看接入控制台的所有应用及其机器状态:

  • 应用名称
  • 机器 IP 和端口
  • 心跳时间
  • 健康状态

簇点链路

"簇点链路"页面展示资源的调用链路,提供两种视图:

树状链路:以树形结构展示资源的调用关系

machine-root
├── entrance1
│ ├── resourceA
│ └── resourceB
└── entrance2
└── resourceA

平铺链路:不区分调用关系,展示资源的实时情况

资源信息包括:

  • 通过 QPS
  • 拒绝 QPS
  • 平均响应时间
  • 并发线程数

实时监控

"实时监控"页面汇总同一服务下所有机器的簇点信息,以秒级频率展示:

  • 通过 QPS
  • 拒绝 QPS
  • 响应时间
  • 异常数

注意:实时监控仅存储 5 分钟以内的数据。如需持久化,需要通过 API 定制。

规则管理

控制台支持管理以下规则:

  • 流控规则:流量控制规则配置
  • 熔断规则:熔断降级规则配置
  • 热点规则:热点参数限流规则配置
  • 系统规则:系统自适应保护规则配置
  • 授权规则:黑白名单授权规则配置

规则推送模式

原始模式

原始模式下,规则通过客户端暴露的 HTTP API 进行查询和修改。规则仅在内存中生效,应用重启后会丢失。

适用场景:开发测试环境

Pull 模式

客户端主动从规则源(如文件、数据库)拉取规则:

// 自定义规则源
public class FileRuleSource implements ReadableDataSource<String, List<FlowRule>> {
@Override
public List<FlowRule> readSource() throws Exception {
// 从文件读取规则
String content = Files.readString(Paths.get("rules.json"));
return JSON.parseArray(content, FlowRule.class);
}
}

// 注册规则源
ReadableDataSource<String, List<FlowRule>> flowRuleSource = new FileRuleSource();
FlowRuleManager.register2Property(flowRuleSource.getProperty());

Push 模式(推荐)

控制台将规则推送到规则中心(如 Nacos),客户端监听规则中心获取规则:

spring:
cloud:
sentinel:
datasource:
flow:
nacos:
server-addr: localhost:8848
dataId: ${spring.application.name}-flow-rules
groupId: SENTINEL_GROUP
rule-type: flow
degrade:
nacos:
server-addr: localhost:8848
dataId: ${spring.application.name}-degrade-rules
groupId: SENTINEL_GROUP
rule-type: degrade

Push 模式的优点:

  • 规则持久化存储
  • 支持规则版本管理
  • 规则变更实时生效
  • 支持多环境管理

控制台配置项

控制台支持通过 JVM 参数或环境变量配置:

配置项类型默认值说明
auth.enabledbooleantrue是否开启登录鉴权
sentinel.dashboard.auth.usernameStringsentinel登录用户名
sentinel.dashboard.auth.passwordStringsentinel登录密码
server.servlet.session.timeoutString30分钟Session 过期时间
sentinel.dashboard.app.hideAppNoMachineMillisInteger0隐藏无健康节点应用的时间
sentinel.dashboard.removeAppNoMachineMillisInteger0删除无健康节点应用的时间
sentinel.dashboard.unhealthyMachineMillisInteger60000主机失联判定时间
sentinel.dashboard.autoRemoveMachineMillisInteger0自动删除失联节点的时间

配置示例:

java -Dsentinel.dashboard.auth.username=admin \
-Dsentinel.dashboard.auth.password=admin123 \
-Dserver.servlet.session.timeout=60m \
-jar sentinel-dashboard-1.8.8.jar

生产环境部署

安全配置

生产环境建议:

  1. 修改默认用户名和密码
  2. 配置 HTTPS
  3. 配置防火墙规则,限制访问 IP

高可用部署

Sentinel 控制台目前仅支持单机部署。如需高可用:

  1. 部署多个控制台实例
  2. 使用负载均衡器分发请求
  3. 共享规则存储(如 Nacos)

监控数据持久化

控制台默认只保存 5 分钟的监控数据。如需持久化:

  1. 调用监控 API 获取数据
  2. 将数据存储到时序数据库(如 InfluxDB、Prometheus)
  3. 使用 Grafana 进行可视化
// 获取监控数据
curl http://localhost:8719/metric?startTime=1609459200000&endTime=1609459260000

常见问题

1. 控制台看不到应用?

检查:

  • 客户端是否添加了 sentinel-transport-simple-http 依赖
  • 启动参数是否正确配置了控制台地址
  • 应用是否有访问量(Sentinel 是懒加载)
  • 检查 ${user.home}/logs/csp/sentinel-record.log 日志

2. 规则配置后不生效?

检查:

  • 控制台版本与客户端版本是否一致
  • 资源名称是否正确
  • 规则配置是否正确

3. 监控数据不显示?

检查:

  • 控制台与应用机器时间是否一致
  • 客户端 API 端口是否正确(默认 8719)
  • 防火墙是否开放端口

下一步