Sign inSign up

osmiling/sentinel-dashboard

By osmiling

•Updated 10 months ago

阿里流量防卫sentinel-dashboard

Image
Integration & delivery
Databases & storage
Monitoring & observability
1

411

osmiling/sentinel-dashboard repository overview

⁠快速参考

注:本docker镜像来自github开源代码,如有侵权请联系作者删除。

⁠初始化一个实例

该镜像的持久化方式采用的是 redis,所以需要先在外部创建一个 redis 服务。

⁠docker

Docker run --name sentinel-dashboard -e REDIS_HOST=127.0.0.1 -e REDIS_PORT=6379 -p 8080:8080 osmiling/sentinel-dashboard:1.8.9-redis

⁠docker-compose
version: '3.1'

services:
  sentinel-dashboard:
    image: osmiling/sentinel-dashboard:1.8.9-redis
    container_name: sentinel-dashboard
    logging:
      driver: json-file
      options:
        max-size: "100m"
        max-file: "5"
    restart: always
    ports:
      - "8619:8619"
    environment:
      SERVER_PORT: 8619
      REDIS_HOST: 127.0.0.1
      REDIS_PORT: 6379
      REDIS_PASSWORD: 123456
      REDIS_DATABASE: 15
    volumes:
        - /etc/localtime:/etc/localtime #将外边时间直接挂载到容器内部,权限只读
        - ./logs:/root/logs

⁠环境变量

变量说明版本
SERVER_PORT端口配置,默认80801.8.5-redis
SENTINEL_USER控制台用户名1.8.5-redis
SENTINEL_PASSWORD控制台密码1.8.5-redis
REDIS_HOSTredis主机ip1.8.5-redis
REDIS_PORTredis端口1.8.5-redis
REDIS_PASSWORDredis密码1.8.5-redis
REDIS_DATABASEredis数据库1.8.5-redis
REDIS_CLUSTER_NODESredis集群节点1.8.5-redis
REDIS_CLUSTER_MRSredis集群重定向最大次数1.8.5-redis
REDIS_SENTINEL_MASTERredis哨兵模式主节点id1.8.5-redis
REDIS_SENTINEL_NODESredis哨兵模式节点1.8.5-redis
REDIS_SENTINEL_USERredis哨兵模式用户名1.8.5-redis
REDIS_SENTINEL_PASSWORDredis哨兵模式密码1.8.5-redis

注意:可在项目中对应 application.properties 使用。

如果环境变量无法满足配置,可自行映射 application.properties 配置启动。

⁠客户端应用(spring-boot)

  这里使用 springboot 做项目案例展示。

⁠1. 引入 jar 包
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<dependency>
    <groupId>com.alibaba.csp</groupId>
    <artifactId>sentinel-datasource-redis</artifactId>
</dependency>

注意:sentinel-core 的 1.8.5 版本和 1.8.6 版本存在 系统规则 无法正常使用的问题,所以要将该核心包升级到 1.8.7 版本及以上。

⁠2. application.yml添加配置
spring:
  cloud:
    # alibaba哨兵
    sentinel:
      enabled: true
      # 默认情况下 sentinel 会在客户端首次调用的时候进行初始化,开始向控制台发送心跳包,取消sentinel控制台懒加载功
      eager: true
      transport:
        # 默认7890端口,假如被占用会自动7890开始依次+1扫描,直至找到未被占用的端口
        port: 7890
        # 配置Sentinel dashboard地址
        dashboard: 127.0.0.1:8080
      datasource:
        ds1:
          redis:
            host: 127.0.0.1
            database: 15
            port: 6379
            password: dsk806888
            master-id: master
            rule-key: 'Sentinel:Config:${spring.application.name}:system'
            channel: 'Sentinel:Channel:${spring.application.name}:system'
            rule-type: system

        ds2:
          redis:
            host: 127.0.0.1
            database: 15
            port: 6379
            password: dsk806888
            master-id: master
            rule-key: 'Sentinel:Config:${spring.application.name}:flow'
            channel: 'Sentinel:Channel:${spring.application.name}:flow'
            rule-type: flow
        ds3:
          redis:
            host: 127.0.0.1
            database: 15
            port: 6379
            password: dsk806888
            master-id: master
            rule-key: 'Sentinel:Config:${spring.application.name}:degrade'
            channel: 'Sentinel:Channel:${spring.application.name}:degrade'
            rule-type: degrade
        ds4:
          redis:
            host: 127.0.0.1
            database: 15
            port: 6379
            password: dsk806888
            master-id: master
            rule-key: 'Sentinel:Config:${spring.application.name}:param-flow'
            channel: 'Sentinel:Channel:${spring.application.name}:param-flow'
            rule-type: param-flow
        ds5:
          redis:
            host: 127.0.0.1
            database: 15
            port: 6379
            password: dsk806888
            master-id: master
            rule-key: 'Sentinel:Config:${spring.application.name}:authority'
            channel: 'Sentinel:Channel:${spring.application.name}:authority'
            rule-type: authority

ds[1-5] 都是同一个 redis ,写这么多是为了不同的限流规则使用。

注意:规则 key 和 通道 channel 就是 redis 的健,需要和控制台的格式一致才能起作用,不是随便写的,格式如下:

"Sentinel:Config:" + 应用名称 + 规则枚举(com.alibaba.cloud.sentinel.datasource.RuleType)

"Sentinel:Channel:" + 应用名称 + 规则枚举(com.alibaba.cloud.sentinel.datasource.RuleType)

Tag summary

Content type

Image

Digest

sha256:426fa9848…

Size

235.7 MB

Last updated

10 months ago

docker pull osmiling/sentinel-dashboard:1.8.9-redis