Sentinel 控制台

    接下来,我们将会逐一介绍如何整合 Sentinel 核心库和 Dashboard,让它发挥最大的作用。同时我们也在阿里云上提供企业级的控制台:,您只需要几个简单的步骤,就能最直观地看到控制台如何实现这些功能。

    Sentinel 控制台包含如下功能:

    • 查看机器列表以及健康情况:收集 Sentinel 客户端发送的心跳包,用于判断机器是否在线。
    • :通过 Sentinel 客户端暴露的监控 API,定期拉取并且聚合应用监控信息,最终可以实现秒级的实时监控。
    • 规则管理和推送:统一管理推送规则。

    2. 启动控制台

    您可以从 下载最新版本的控制台 jar 包。

    您也可以从最新版本的源码自行构建 Sentinel 控制台:

    • 下载 控制台 工程
    • 使用以下命令将代码打包成一个 fat jar:

    2.2 启动

    注意:启动 Sentinel 控制台需要 JDK 版本为 1.8 及以上版本。

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

    其中 -Dserver.port=8080 用于指定 Sentinel 控制台端口为 8080

    从 Sentinel 1.6.0 起,Sentinel 控制台引入基本的登录功能,默认用户名和密码都是 sentinel。可以参考 配置用户名和密码。

    注:若您的应用为 Spring Boot 或 Spring Cloud 应用,您可以通过 Spring 配置文件来指定配置,详情请参考 Spring Cloud Alibaba Sentinel 文档

    控制台启动后,客户端需要按照以下步骤接入到控制台。

    3.1 引入JAR包

    客户端需要引入 Transport 模块来与 Sentinel 控制台进行通信。您可以通过 pom.xml 引入 JAR 包:

    启动时加入 JVM 参数 -Dcsp.sentinel.dashboard.server=consoleIp:port 指定控制台地址和端口。若启动多个应用,则需要通过 -Dcsp.sentinel.api.port=xxxx 指定客户端监控 API 的端口(默认是 8719)。

    从 1.6.3 版本开始,控制台支持网关流控规则管理。您需要在接入端添加 -Dcsp.sentinel.app.type=1 启动参数以将您的服务标记为 API Gateway,在接入控制台时您的服务会自动注册为网关类型,然后您即可在控制台配置网关规则和 API 分组。

    除了修改 JVM 参数,也可以通过配置文件取得同样的效果。更详细的信息可以参考 。

    3.3 触发客户端初始化

    4. 查看机器列表以及健康情况

    当您在机器列表中看到您的机器,就代表着您已经成功接入控制台;如果没有看到您的机器,请检查配置,并通过 ${user.home}/logs/csp/sentinel-record.log.xxx 日志来排查原因,详细的部分请参考 日志文档

    注意:若接入 Sentinel 控制台不成功,可以参考 排查问题。

    5.1 “簇点链路”中显示刚刚调用的资源(单机实时)

    簇点链路(单机调用链路)页面实时的去拉取指定客户端资源的运行情况。它一共提供两种展示模式:一种用树状结构展示资源的调用链路,另外一种则不区分调用链路展示资源的实时情况。

    注意: 簇点链路监控是内存态的信息,它仅展示启动后调用过的资源。

    同时,同一个服务下的所有机器的簇点信息会被汇总,并且秒级地展示在”实时监控”下。

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

    dashboard-overview

    注意:请确保 Sentinel 控制台所在的机器时间与自己应用的机器时间保持一致,否则会导致拉不到实时的监控数据。

    6. 规则管理及推送

    Sentinel 控制台同时提供简单的规则管理以及推送的功能。规则推送分为 3 种模式,包括 “原始模式”、”Pull 模式” 和”Push 模式”。

    这里先简单的介绍”原始模式”。

    6.1 规则管理

    您可以在控制台通过接入端暴露的 来查询规则。

    6.2 规则推送

    dashboard-add-rule

    以上是原始模式。当了解了原始模式之后,我们非常鼓励您通过 动态规则 并结合各种外部存储来定制自己的规则源。我们推荐通过动态配置源的控制台来进行规则写入和推送,而不是通过 Sentinel 客户端直接写入到动态配置源中。在生产环境中,我们推荐 push 模式,具体可以参考:。

    注:若要使用集群流控功能,则必须对接动态规则源,否则无法正常使用。

    Sentinel 同时还提供应用维度规则推送的示例页面(流控规则页面,前端路由为 /v2/flow),用户改造控制台对接配置中心后可直接通过 v2 页面推送规则至配置中心。Sentinel 抽取了通用接口用于向远程配置中心推送规则以及拉取规则:

    • : 拉取规则(应用维度)
    • DynamicRulePublisher<T>: 推送规则(应用维度)

    用户只需实现 DynamicRuleProviderDynamicRulePublisher 接口,并在 v2 的 controller 中通过 @Qualifier 注解替换相应的 bean 即可实现应用维度推送。我们提供了 Nacos 和 Apollo 的示例,改造详情可参考 应用维度规则推送示例

    参考 。

    从 Sentinel 1.5.0 开始,控制台提供通用的鉴权接口 AuthService,用户可根据需求自行实现。

    从 Sentinel 1.6.0 起,Sentinel 控制台引入基本的登录功能,默认用户名和密码都是 sentinel

    用户可以通过如下参数进行配置:

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

    同样也可以直接在 Spring properties 文件中进行配置。

    注意:部署多台控制台时,session 默认不会在各实例之间共享,这一块需要自行改造。

    控制台配置项

    控制台的一些特性可以通过配置项来进行配置,配置项主要有两个来源:System.getProperty()System.getenv(),同时存在时后者可以覆盖前者。

    配置项类型默认值最小值描述
    auth.enabledbooleantrue-是否开启登录鉴权,仅用于日常测试,生产上不建议关闭
    sentinel.dashboard.auth.usernameStringsentinel-登录控制台的用户名,默认为 sentinel
    sentinel.dashboard.auth.passwordStringsentinel-登录控制台的密码,默认为 sentinel
    sentinel.dashboard.app.hideAppNoMachineMillisInteger060000是否隐藏无健康节点的应用,距离最近一次主机心跳时间的毫秒数,默认关闭
    sentinel.dashboard.removeAppNoMachineMillisInteger0120000是否自动删除无健康节点的应用,距离最近一次其下节点的心跳时间毫秒数,默认关闭
    sentinel.dashboard.unhealthyMachineMillisInteger6000030000主机失联判定,不可关闭
    sentinel.dashboard.autoRemoveMachineMillisInteger0300000距离最近心跳时间超过指定时间是否自动删除失联节点,默认关闭
    sentinel.dashboard.unhealthyMachineMillisInteger6000030000主机失联判定,不可关闭
    server.servlet.session.cookie.nameStringsentinel_dashboard_cookie-控制台应用的 cookie 名称,可单独设置避免同一域名下 cookie 名冲突

    配置示例:

    • 命令行方式:
    • Java 方式:
    • 环境变量方式: