【深入浅出Sentinel原理及实战】「基础实战专题」零基础探索分析Sentinel控制台开发指南(3)

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 【深入浅出Sentinel原理及实战】「基础实战专题」零基础探索分析Sentinel控制台开发指南(3)

Sentinel控制台


Sentinel提供了一个轻量级的开源控制台 Sentinel Dashboard,它提供了机器发现与健康情况管理、监控(单机和集群)、规则管理与推送等多种功能。


Sentinel控制台提供的功能如下


  • 查看机器列表以及健康情况:Sentnel 控制台能够收集 Sentinel 客户端发送的心跳包,判断机器是否在线。


  • 监控(单机和集群聚合):Sentinel 控制台通过 Sentinel 客户端暴露的监控 API,可以实现秒级的实时监控。


  • 规则管理和推送:通过 Sentinel 控制台,我们还能够针对资源定义和推送规则。


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


Sentinel Dashboard是我们配置和管理规则(例如流控规则、熔断降级规则等)的重要入口之一。通过它,我们不仅可以对规则进行配置和管理,还能实时查看规则的效果。




安装Sentinel 控制台


如何下载和安装 Sentinel 控制台,具体步骤如下。


  1. 使用浏览器,您可以从Sentinel Dashboard下载页面在release发行版中选择下载对应版本的Sentinel控制台的 jar 包,如下图所示。

image.png

1.1. 点击下载即可,如下图所示。

image.png

  1. 此外也可以从最新版本的源码仓库自行构建Sentinel控制台,下载源码。如下图所示

image.png



2.1. 使用以下命令将代码打包成一个 fat jar: mvn clean package即可。


  1. 打开命令行窗口,跳转到Sentinel Dashboard  jar包所在的目录,执行以下命令,启动 Sentinel Dashboard,使用如下命令启动编译后的控制台:
java -Dserver.port=8080 \
-Dcsp.sentinel.dashboard.server=localhost:8080 \
-Dproject.name=sentinel-dashboard \
-jar target/sentinel-dashboard.jar
复制代码



3.1. 上述命令中我们指定几个 JVM 参数,其中 -Dserver.port=8080 是 Spring Boot 的参数, 用于指定 Spring Boot 服务端启动端口为 8080。其余几个是 Sentinel 客户端的参数。



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


  • -Dcsp.sentinel.dashboard.server=localhost:8080 向Sentinel接入端指定控制台的地址,经过上述配置,控制台启动后会自动向自己发送心跳。程序启动后浏览器访问localhost:8080即可访问Sentinel 控制台。
  • -Dproject.name=sentinel-dashboard 向Sentinel指定应用名称,比如上面对应的应用名称就为sentinel-dashboard


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


  1. 启动完成后,使用浏览器访问“http://localhost:8080/”,跳转到 Sentinel 控制台登陆页面,如下图。

image.png

  1. 分别输入用户名(sentinel)和密码(123456),点击下方的登录按钮,结果如下图。

image.png



业务服务客户端接入Sentinel服务


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

<dependency>
    <groupId>com.alibaba.csp</groupId>
    <artifactId>sentinel-transport-simple-http</artifactId>
    <version>1.8.6</version>
</dependency>
复制代码



配置启动参数


启动时加入 JVM 参数 -Dcsp.sentinel.dashboard.server=consoleIp:port 指定控制台地址和端口。若启动多个应用,则需要通过 -Dcsp.sentinel.api.port=xxxx 指定客户端监控 API 的端口(默认是 8719)。除了修改 JVM 参数,也可以通过配置文件取得同样的效果。



sentinel-core 的配置项


project.name 项用于指定应用名(appName)。若未指定,则默认解析 main 函数的类名作为应用名。实际项目使用中建议手动指定应用名。

image.png


日志相关配置项


若需要在单台机器上运行相同服务的多个实例,则需要加入 -Dcsp.sentinel.log.use.pid=true 来保证不同实例日志的独立性

image.png

sentinel-transport-common 的配置项


csp.sentinel.api.port可不提供,默认为 8719,若端口冲突会自动向下探测可用的端口。

image.png

注意:确保业务客户端有访问量,Sentinel会在客户端首次调用的时候进行初始化,开始向控制台发送心跳包,将客户端纳入到控制台的管辖之下。


注意:您还需要根据您的应用类型和接入方式引入对应的 适配依赖,否则即使有访问量也不能被 Sentinel 统计。



验证是否接入成功 - 查看机器列表以及健康情况


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

image.png

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



规则管理及推送


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



原始模式


规则管理


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

image.png


规则推送


目前控制台的规则推送也是通过规则查询更改HTTP API来更改规则。这也意味着这些规则仅在内存态生效,应用重启之后,该规则会丢失。以上是原始模式。

image.png


规则存储


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


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


  • DynamicRuleProvider: 拉取规则(应用维度)
  • DynamicRulePublisher: 推送规则(应用维度)


用户只需实现 DynamicRuleProvider 和 DynamicRulePublisher 接口,并在 v2 的 controller 中通过 @Qualifier 注解替换相应的 bean 即可实现应用维度推送。


  • Nacos的实现方式
  • Apollo的实现方式




相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
5月前
|
监控 Java Sentinel
使用Sentinel进行服务调用的熔断和限流管理(SpringCloud2023实战)
Sentinel是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。
153 3
|
1月前
|
负载均衡 算法 Java
蚂蚁面试:Nacos、Sentinel了解吗?Springcloud 核心底层原理,你知道多少?
40岁老架构师尼恩分享了关于SpringCloud核心组件的底层原理,特别是针对蚂蚁集团面试中常见的面试题进行了详细解析。内容涵盖了Nacos注册中心的AP/CP模式、Distro和Raft分布式协议、Sentinel的高可用组件、负载均衡组件的实现原理等。尼恩强调了系统化学习的重要性,推荐了《尼恩Java面试宝典PDF》等资料,帮助读者更好地准备面试,提高技术实力,最终实现“offer自由”。更多技术资料和指导,可关注公众号【技术自由圈】获取。
蚂蚁面试:Nacos、Sentinel了解吗?Springcloud 核心底层原理,你知道多少?
|
1月前
|
Dubbo IDE Java
dubbo学习二:下载Dubbo-Admin管理控制台,并分析在2.6.1及2.6.1以后版本的变化
这篇文章是关于如何下载和部署Dubbo管理控制台(dubbo-admin)的教程,并分析了2.6.1版本及以后版本的变化。
45 0
dubbo学习二:下载Dubbo-Admin管理控制台,并分析在2.6.1及2.6.1以后版本的变化
|
1月前
|
运维 监控 算法
聊一聊Sentinel背后的原理
本文介绍了Sentinel的核心原理,包括流量控制、熔断降级、系统负载保护、实时监控和统计、与多种微服务框架的集成能力以及扩展性,强调了Sentinel在保障分布式系统稳定性方面的重要性。
127 0
|
3月前
|
运维 监控 NoSQL
【Redis】哨兵(Sentinel)原理与实战全解~炒鸡简单啊
Redis 的哨兵模式(Sentinel)是一种用于实现高可用性的机制。它通过监控主节点和从节点,并在主节点故障时自动进行切换,确保集群持续提供服务。哨兵模式包括主节点、从节点和哨兵实例,具备监控、通知、自动故障转移等功能,能显著提高系统的稳定性和可靠性。本文详细介绍了哨兵模式的组成、功能、工作机制以及其优势和局限性,并提供了单实例的安装和配置步骤,包括系统优化、安装、配置、启停管理和性能监控等。此外,还介绍了如何配置主从复制和哨兵,确保在故障时能够自动切换并恢复服务。
|
5月前
|
监控 Java 应用服务中间件
Sentinel原理及实践
Sentinel原理及实践
111 1
|
3月前
|
Java UED Sentinel
微服务守护神:Spring Cloud Sentinel,让你的系统在流量洪峰中稳如磐石!
【8月更文挑战第29天】Spring Cloud Sentinel结合了阿里巴巴Sentinel的流控、降级、熔断和热点规则等特性,为微服务架构下的应用提供了一套完整的流量控制解决方案。它能够有效应对突发流量,保护服务稳定性,避免雪崩效应,确保系统在高并发下健康运行。通过简单的配置和注解即可实现高效流量控制,适用于高并发场景、依赖服务不稳定及资源保护等多种情况,显著提升系统健壮性和用户体验。
87 1
|
2月前
|
监控 Java Nacos
SpringCloud基础5——微服务保护、Sentinel
sentinel、雪崩问题、流量控制、隔离和降级、授权规则、规则持久化
SpringCloud基础5——微服务保护、Sentinel
|
4月前
|
监控 Java 应用服务中间件
SpringCloud面试之流量控制组件Sentinel详解
SpringCloud面试之流量控制组件Sentinel详解
235 0
|
4月前
|
监控 Dubbo 应用服务中间件
通用快照方案问题之Sentinel与SpringCloud和Dubbo的整合如何解决
通用快照方案问题之Sentinel与SpringCloud和Dubbo的整合如何解决
49 0
下一篇
无影云桌面