Sentinel 控制台是流量控制、熔断降级规则统一配置和管理的入口,它为用户提供了机器自发现、簇点链路自发现、监控、规则配置等功能。在 Sentinel 控制台上,我们可以配置规则并实时查看流量控制效果。
有以下两种方式获取Sentinel控制台
下载最新版本的控制台 jar 包 下载地址:https://github.com/alibaba/Sentinel/releases
从最新版本的源码自行构建 Sentinel 控制台。源码地址:https://github.com/alibaba/Sentinel/tree/master/sentinel-dashboard
使用代码工具打开,执行maven打包,打包成功后会在target目录生成sentinel-dashboard.jar。
使用下面的命令启动控制台
java -Dserver.port=8800 -jar sentinel-dashboard.jar
-Dserver.port=8800 表示启动端口为8800
启动之后通过 http://localhost:8800/ 访问
默认情况下,登录的用户名和密码都是sentinel。这个可以修改,我们后面再说。
登录之后出现如下界面,说明我们控制台启动成功。
此时我们没有任何的菜单可以点击,因为我们还没有接入客户端。
控制台的一些特性可以通过配置项来进行配置,配置项主要有两个来源:System.getProperty() 和 System.getenv(),同时存在时后者可以覆盖前者。
通过环境变量进行配置时,因为不支持 . 所以需要将其更换为 _。
配置项 | 类型 | 默认值 | 最小值 | 描述 |
---|---|---|---|---|
auth.enabled | boolean | true | - | 是否开启登录鉴权,仅用于日常测试,生产上不建议关闭 |
sentinel.dashboard.auth.username | String | sentinel | - | 登录控制台的用户名,默认为 sentinel |
sentinel.dashboard.auth.password | String | sentinel | - | 登录控制台的密码,默认为 sentinel |
sentinel.dashboard.app.hideAppNoMachineMillis | Integer | 0 | 60000 | 是否隐藏无健康节点的应用,距离最近一次主机心跳时间的毫秒数,默认关闭 |
sentinel.dashboard.removeAppNoMachineMillis | Integer | 0 | 120000 | 是否自动删除无健康节点的应用,距离最近一次其下节点的心跳时间毫秒数,默认关闭 |
sentinel.dashboard.unhealthyMachineMillis | Integer | 60000 | 30000 | 主机失联判定,不可关闭 |
sentinel.dashboard.autoRemoveMachineMillis | Integer | 0 | 300000 | 距离最近心跳时间超过指定时间是否自动删除失联节点,默认关闭 |
sentinel.dashboard.unhealthyMachineMillis | Integer | 60000 | 30000 | 主机失联判定,不可关闭 |
server.servlet.session.cookie.name | String | sentinel_dashboard_cookie | - | 控制台应用的 cookie 名称,可单独设置避免同一域名下 cookie 名冲突 |
java -Dsentinel.dashboard.app.hideAppNoMachineMillis=60000
System.setProperty(“sentinel.dashboard.app.hideAppNoMachineMillis”, “60000”);
sentinel_dashboard_app_hideAppNoMachineMillis=60000
客户端需要引入 Transport 模块来与 Sentinel 控制台进行通信
com.alibaba.csp sentinel-transport-simple-http 1.8.6
注:本文使用的Sentinel版本为1.8.6。若使用我们上篇文章的示例,此模块已经引入。
# 应用名称(可以为中文,但建议和我们的项目名称一致)
project.name = SentinelDemo# 控制台的地址,指定控制台后客户端会自动向该地址发送心跳包。格式为host:port,必须
csp.sentinel.dashboard.server = 127.0.0.1:8800# 本地启动 HTTP API Server 的端口号,默认8179
#(我启动后是8720端口,官网说明:默认为 8719,若端口冲突会自动向下探测可用的端口)
csp.sentinel.api.port = 8179
这些均为客户端配置项。关于客户端配置项,我们会在后面详解。
Sentinel 会在客户端首次调用的时候进行初始化,开始向控制台发送心跳包。也就是说,启动客户端之后,需要请求一次,客户端才会对控制台发送心跳包,控制台界面才能看到我们的客户端应用信息。
簇点链路(单机调用链路)页面实时的去拉取指定客户端资源的运行情况。它一共提供两种展示模式:一种用树状结构展示资源的调用链路,另外一种则不区分调用链路展示资源的实时情况。
注: 簇点链路监控是内存态的信息,它仅展示启动后调用过的资源。
同一个服务下的所有机器的簇点信息会被汇总,并且秒级地展示在"实时监控"下
实时监控仅存储 5 分钟以内的数据,如果需要持久化,需要通过调用实时监控接口来定制。
请确保 Sentinel 控制台所在的机器时间与自己应用的机器时间保持一致,否则会导致拉不到实时的监控数据。
关于规则的推送我们将会单独讲解,此处不做过多介绍。
Sentinel 提供如下的配置方式:
优先级顺序:JVM -D 参数的优先级最高。若 properties 和 JVM 参数中有相同项的配置,以 JVM 参数配置的为准。
用户可以通过 -Dcsp.sentinel.config.file 参数配置 properties 文件的路径,支持 classpath 路径配置(如 classpath:sentinel.properties)。默认 Sentinel 会尝试从 classpath:sentinel.properties 文件读取配置,读取编码默认为 UTF-8。
在Spring boot中如果我们使用sentinel 的start,则我们可以在application配置文件中直接配置
com.alibaba.cloud spring-cloud-starter-alibaba-sentinel
spring:cloud:sentinel:transport:port: 8719dashboard: localhost:8080
其配置项在spring.cloud.sentinel 下
名称 | 含义 | 类型 | 默认值 | 是否必需 | 备注 |
---|---|---|---|---|---|
project.name | 指定应用的名称 | String | null | 否 | |
csp.sentinel.app.type | 指定应用的类型 | int | 0 (APP_TYPE_COMMON) | 否 | 1.6.0 引入 |
csp.sentinel.metric.file.single.size | 单个监控日志文件的大小 | long 52428800 (50MB) | 否 | ||
csp.sentinel.metric.file.total.count | 监控日志文件的总数上限 | int | 6 | 否 | |
csp.sentinel.statistic.max.rt | 最大的有效响应时长(ms),超出此值则按照此值记录 | int | 4900 | 否 | 1.4.1 引入 |
csp.sentinel.spi.classloader | SPI 加载时使用的 ClassLoader,默认为给定类的 ClassLoader | String | default | 否 | 若配置 context 则使用 thread context ClassLoader。1.7.0 引入 |
project.name 项用于指定应用名(appName)。若未指定,则默认解析 main 函数的类名作为应用名。建议手动指定应用名。
名称 | 含义 | 类型 | 默认值 | 是否必需 |
---|---|---|---|---|
csp.sentinel.dashboard.server | 控制台的地址,指定控制台后客户端会自动向该地址发送心跳包。地址格式为:hostIp:port | String | null | 是 |
csp.sentinel.heartbeat.interval.ms | 心跳包发送周期,单位毫秒 | long | null | 非必需,若不进行配置,则会从相应的 HeartbeatSender 中提取默认值 |
csp.sentinel.api.port | 本地启动 HTTP API Server 的端口号 | int | 8719 | 否 |
csp.sentinel.heartbeat.client.ip | 指定心跳包中本机的 IP | String | - | 若不指定则通过 HostNameUtil 解析;该配置项多用于多网卡环境 |
名称 | 含义 | 类型 | 默认值 | 是否必需 | 备注 |
---|---|---|---|---|---|
csp.sentinel.log.dir | Sentinel 日志文件目录 | String | ${user.home}/logs/csp/ | 否 | 1.3.0 引入 |
csp.sentinel.log.use.pid | 日志文件名中是否加入进程号,用于单机部署多个应用的情况 | boolean | false | 否 | 1.3.0 引入 |
csp.sentinel.log.output.type | Record 日志输出的类型,file 代表输出至文件,console 代表输出至终端 | String | file | 否 | 1.6.2 引入 |
若需要在单台机器上运行相同服务的多个实例,则需要加入 -Dcsp.sentinel.log.use.pid=true 来保证不同实例日志的独立性。
上一篇:ue4游戏dump
下一篇:C语言进阶——自定义类型:结构体