小白学习Docker搭建Sentinel控制台

概述

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

Sentinel 控制台包含如下功能:

  • 查看机器列表以及健康情况: 收集Sentinel客户端发送的心跳包,用于判断机器是否在线。
  • 监控 (单机和集群聚合): 通过Sentinel客户端暴露的监控API,定期拉取并且聚合应用监控信息,最终可以实现秒级的实时监控。
  • 规则管理和推送: 统一管理推送规则。
  • 鉴权: 生产环境中鉴权非常重要。这里每个开发者需要根据自己的实际情况进行定制。

制作镜像

sentinel-dashboard就是一个SpringBoot项目,直接使用命令启动即可,所有自定义配置docker启动。

如果没有特殊需要可以直接下载jar,需要修改源码则下载源码包即可,下载地址:github.com/alibaba/Sen...,下载相应版本的jar包,比如sentinel-dashboard-1.8.1.jar

  1. 创建工作目录:
bash 复制代码
mkdir /usr/local/docker/sentinel -p
  1. 拷贝文件: 将从官网下载的或者是自定义编译好的jar包,拷贝到/usr/local/docker/sentinel目录下
  2. 编写Dockerfile
shell 复制代码
vi /usr/local/docker/sentinel/Dockerfile

内容如下:

bash 复制代码
#java 版本
FROM openjdk:8-jre
#挂载的docker卷
VOLUME /tmp
#前者是要操作的jar包  后者自定义jar包名
ADD *.jar sentinel-dashboard.jar
#定义时区参数
ENV TZ=Asia/Shanghai
#设置时区
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo '$TZ' > /etc/timezone
#配置启动命令,-D表示设置JVM参数,server后写所在服务器地址
ENTRYPOINT ["java","-jar","-Dserver.port=8080","-Dcsp.sentinel.dashboard.server=192.168.0.102:8080","-Dproject.name=sentinel-dashboard","/sentinel-dashboard.jar"]
  1. 制作镜像 保证jarDockerfile在同一个目录下 执行命令:
shell 复制代码
# sentinel-server表示镜像名称
docker build -t sentinel-server .

成功生成镜像

启动测试

shell 复制代码
docker run \
--name sentinel-server \
-p 8080:8080 \
--restart=always \
--privileged=true \
-d sentinel-server
  • 访问:

    地址:http://192.168.0.102:8080 ;默认账户密码:sentinel/sentinel

  • 鉴权: 从 Sentinel 1.6.0 起,Sentinel 控制台引入基本的登录功能,默认用户名和密码都是 sentinel。该鉴权能力非常基础,生产环境使用建议根据安全需要自行改造。

可以在Dockerfile文件中,通过如下JVM参数进行配置:

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

除了修改JVM启动参数的形式,还可以在源码中通过application.properties文件进行配置。

配置项目说明

控制台的一些特性可以通过配置项来进行配置

配置项 类型 默认值 最小值 描述
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 名冲突

通过JVM方式为:在配置DockerfielENTRYPOINT中加入相应配置就行。

比如:ENTRYPOINT [ "java" ,"-jar","-Dsentinel.dashboard.app.hideAppNoMachineMillis=60000"

镜像保存与加载

shell 复制代码
# 保存iamge到home目录下
docker save -o /home/sentinel-server.tar iamgeName

# 从home目录下导入image
docker load --input /home/sentinel-server.tar

# 测试:
# 1、save成功以后,删除原有images中的sentinel-server
# 2、导入成功后,重新启动容器,并且成功访问

控制台介绍

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

在机器列表中看到的连接到sentinel的机器,并且展示监控状况

簇点链路:

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

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

实时监控:

同一个服务下的所有机器的簇点信息会被汇总,并且秒级地展示在"实时监控"下。需要确保 Sentinel 控制台所在的机器时间与自己应用的机器时间保持一致,否则会导致拉不到实时的监控数据。

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

规则管理:

Sentinel规则分为:流控、降级、热点、 系统、授权,通过控制台可以对各个资源配置相应的规则

整合SpringCloud使用

yml 复制代码
spring:
 cloud:
  sentinel:
   transport:
     port: 9999 #跟控制台交流的端口,随意指定一个未使用的端口即可
     dashboard: 192.168.0.102:8080 # 指定控制台服务的地址
   log:
     dir: logs/sentinel #日志输出地址

验证: Sentinel 会在客户端首次调用的时候进行初始化,开始向控制台发送心跳包,我们启动服务后,请求任意一个接口后,即可成功注册。

参考:Sentinel(二)Docker搭建Sentinel 控制台环境搭建及使用介绍

相关推荐
红尘散仙41 分钟前
我把终端小说阅读器接上了 AI Agent:TRNovel 现在能用 skill 生成书源了
人工智能·后端·rust
卷毛的技术笔记2 小时前
告别硬编码!Spring AI Alibaba 实现 AI Agent 智能工具调用(Tool Calling)
java·人工智能·后端·python·spring·ai编程
会编程的土豆2 小时前
Go 语言反射(Reflection)详解
开发语言·后端·golang
喵个咪3 小时前
GoWind Toolkit Go后端代码生成 完整全流程实战
后端·go·orm
basketball6163 小时前
Go 语言从入门到进阶:4. 数组和MAP使用方法总结
开发语言·后端·golang
qq_2518364573 小时前
SpringBoot+Vue 共享电池柜管理系统 完整实现 前后端分离项目实战 完整代码
vue.js·spring boot·后端
zhangxingchao4 小时前
AI 大模型核心六:量化、Workflow 与 Agent、多轮 RAG
前端·人工智能·后端
IT_陈寒5 小时前
Vite打包时遇到的坑,原来问题出在这里
前端·人工智能·后端
半旧夜夏5 小时前
【保姆级】微服务组件环境搭建(Docker Compose版)
java·linux·spring cloud·微服务·云原生·容器
ayqy贾杰6 小时前
基层管理的三板斧,在AI时代行不通了
前端·后端·团队管理