dik111 / sentinel-dashboard

sentinel-dashboard

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Sentinel 控制台

0. 概述

Sentinel 控制台是流量控制、熔断降级规则统一配置和管理的入口,它为用户提供了机器自发现、簇点链路自发现、监控、规则配置等功能。在 Sentinel 控制台上,我们可以配置规则并实时查看流量控制效果。

Sentinel 控制台中监控数据聚合后直接存在内存中,未进行持久化,且仅保留最近 5 分钟的监控数据。若需要监控数据持久化的功能,可以自行扩展实现 MetricsRepository 接口 。

根据官方文档,对 Sentinel Dashboard 进行优化,将监控数据持久化到 MySQL 数据库,通过 MyBatis-Plus 对监控数据进行操作。

1. 编译和启动

1.1 配置 Sentinel Dashboard

配置 application.properties 中 MySQL 数据库连接

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/spring-boot?characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=root

执行 SQL 脚本

CREATE TABLE `metric` (
    `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
    `app` varchar(255) DEFAULT NULL COMMENT '应用名称',
    `resource` varchar(255) DEFAULT NULL COMMENT '资源名称',
    `timestamp` datetime DEFAULT NULL COMMENT '监控信息时间戳',
    `gmt_create` datetime DEFAULT NULL COMMENT '创建时间',
    `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
    `pass_qps` bigint(20) DEFAULT NULL COMMENT '通过QPS',
    `success_qps` bigint(20) DEFAULT NULL COMMENT '成功QPS',
    `block_qps` bigint(20) DEFAULT NULL COMMENT '限流QPS',
    `exception_qps` bigint(20) DEFAULT NULL COMMENT '异常QPS',
    `rt` decimal(10,2) DEFAULT NULL COMMENT '资源的平均响应时间',
    `count` int(10) DEFAULT NULL COMMENT '本次聚合的总条数',
    `resource_code` int(10) DEFAULT NULL COMMENT '资源hashcode',
    PRIMARY KEY (`id`),
    KEY `idx_app_timestamp` (`app`,`timestamp`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Sentinel监控信息表';

1.2 如何编译

使用如下命令将代码打包成一个 fat jar:

mvn clean package

1.3 如何启动

使用如下命令启动编译后的控制台:

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 分钟;

2. 客户端接入

选择合适的方式接入 Sentinel,然后在应用启动时加入 JVM 参数 -Dcsp.sentinel.dashboard.server=consoleIp:port 指定控制台地址和端口。 确保客户端有访问量,Sentinel 会在客户端首次调用的时候进行初始化,开始向控制台发送心跳包,将客户端纳入到控制台的管辖之下。

客户端接入的详细步骤请参考 Wiki 文档

3. 验证是否接入成功

客户端正确配置并启动后,会在初次调用后主动向控制台发送心跳包,汇报自己的存在; 控制台收到客户端心跳包之后,会在左侧导航栏中显示该客户端信息。如果控制台能够看到客户端的机器信息,则表明客户端接入成功了。

更多:控制台功能介绍

About

sentinel-dashboard

License:Apache License 2.0


Languages

Language:Java 56.3%Language:JavaScript 23.0%Language:HTML 15.9%Language:CSS 4.9%