0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于Sentinel实现历史监控数据回看

jf_ro2CN3Fa 来源:稀土掘金 2023-11-27 14:34 次阅读

众所周知,Sentinel 对监控数据的做法是定时落盘在客户端,然后 Sentinel 提供接口去拉取日志文件。所以 Sentinel 在监控数据上理论上是最少存储 1 天以上的数据;然而作为控制台展示,则仅在内存中聚合 5 分钟以内的统计数据,不进行持久化。

官方鼓励大家对 Dashboard 进行改造实现指标信息的持久化,并从其它的存储中(如 RDBMS、时序数据库等)拉取的监控信息,包括实时的和历史的数据。

基于此,结合公司内部的需求,我们自行改造并实现了监控指标的持久化。本文把一些实现过程分享给大家!

Sentinel 是阿里巴巴开源的流量治理平台,提供了 流量控制、熔断降级、系统负载保护、黑白名单访问控制 等功能。在实际的生产需求中,笔者进行了部分扩展:

流控规则持久化:适配 Apollo、Nacos、Zookeeper

监控数据持久化:适配 InfluxDB、Kafka、Elasticsearch

监控面板优化:新增时间控件,允许在任意时刻内查询监控数据。

演示图例

改造前

3ae464bc-8cc5-11ee-939d-92fbcf53809c.jpg

改造后

3af51960-8cc5-11ee-939d-92fbcf53809c.jpg

快捷时间选择。

3b0c621e-8cc5-11ee-939d-92fbcf53809c.jpg

自定义时间选择。

3b17bc22-8cc5-11ee-939d-92fbcf53809c.jpg

如何构建

本项目默认使用 Maven 来构建,最快的使用方式是把我给你的代码导入的开发工具中。或在项目的根目录执行 mvn install -T 4C 完成本项目的构建。

如何启动

IDEA 启动

本项目默认不依赖外部组件,可以直接启动运行。

在项目目录下运行 mvn install(如果不想运行测试,可以加上 -DskipTests 参数)。

进入 sentinel-dashboard 目录,执行 mvn spring-boot:run 或者启动 SentinelApplication 类。运行成功的话,可以看到 Spring Boot 启动成功的界面。

在实际的生产需求,Sentinel 保存的规则和监控是需要持久化落盘的,因此,您可以在 sentinel-dashboard/src/main/resources/application.properties 接入外部组件。

规则存储类型:memory(默认)、nacos(推荐)、apollo、zookeeper

#规则存储类型,可选项:memory(默认)、nacos(推荐)、apollo、zookeeper
sentinel.rule.type=nacos
#Nacos存储规则,如果您设置了sentinel.metrics.type=nacos,需要调整相关配置
sentinel.rule.nacos.server-addr=localhost:8848
sentinel.rule.nacos.namespace=demo
sentinel.rule.nacos.group-id=sentinel
sentinel.rule.nacos.username=nacos
sentinel.rule.nacos.password=nacos
#Apollo存储规则,如果您设置了sentinel.metrics.type=apollo,需要调整相关配置
sentinel.rule.apollo.portal-url=http://localhost:10034
sentinel.rule.apollo.token=
sentinel.rule.apollo.env=
#Zookeeper存储规则,如果您设置了sentinel.metrics.type=zookeeper,需要调整相关配置
sentinel.rule.zookeeper.connect-string=localhost:2181
sentinel.rule.zookeeper.root-path=/sentinel_rule

监控存储类型:memory(默认)、influxdb(推荐)、elasticsearch

#监控存储类型,可选项:memory(默认)、influxdb(推荐)、elasticsearch
sentinel.metrics.type=memory
#InfluxDB存储监控数据,如果您设置了sentinel.metrics.type=influxdb,需要调整相关配置
influx.url=http://localhost:8086/
influx.token=UfgaW37A93PkncmJum25G7M2QkBg6xqqjGthh-o-UIVIynC_-Q7RFWlTtEpMqhGLCuAsX64k3Isc2uN33YgElw==
influx.org=sentinel
influx.bucket=sentinel
influx.log-level=NONE
influx.read-timeout=10s
influx.write-timeout=10s
influx.connect-timeout=10s
#Elasticsearch存储监控数据,如果您设置了sentinel.metrics.type=elasticsearch,需要调整相关配置
sentinel.metrics.elasticsearch.index-name=sentinel_metric
spring.elasticsearch.rest.uris=http://localhost:9200
spring.elasticsearch.rest.connection-timeout=3000
spring.elasticsearch.rest.read-timeout=5000
spring.elasticsearch.rest.username=
spring.elasticsearch.rest.password=
#监控数据存储缓冲设置,降低底层存储组件写入压力。可选项:none(默认不启用)、kafka(推荐)
sentinel.metrics.sender.type=none
#Kafka存储监控数据,如果您设置了sentinel.metrics.sender.type=kafka,需要调整相关配置
sentinel.metrics.sender.kafka.topic=sentinel_metric
spring.kafka.producer.bootstrap-servers=localhost:9092
spring.kafka.producer.batch-size=4096
spring.kafka.producer.buffer-memory=40960
spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer
spring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer

镜像启动

本项目已发布到 Docker Hubhttps://hub.docker.com/repository/docker/shiyindaxiaojie/sentinel-dashboard,请执行参考命令运行。

dockerrun-p8090:8090--name=sentinel-dashboard-dshiyindaxiaojie/sentinel-dashboard

如何部署

FatJar 部署

执行 mvn clean package 打包成一个 fat jar,参考如下命令启动编译后的控制台。

java-Dserver.port=8080
-Dsentinel.rule.nacos.server-addr=localhost:8848
-Dsentinel.rule.nacos.namespace=demo
-Dsentinel.rule.nacos.group-id=sentinel
-Dsentinel.metrics.type=influxdb
-Dinflux.url=http://localhost:8086
-Dinflux.token=XXXXXX
-Dinflux.org=sentinel
-Dinflux.bucket=sentinel
-jartarget/sentinel-dashboard.jar

Docker 部署

本项目使用了 Spring Boot 的镜像分层特性优化了镜像的构建效率,请确保正确安装了 Docker 工具,然后执行以下命令。

dockerbuild-fdocker/Dockerfile-tsentinel-dashboard:{tag}.

Helm 部署

以应用为中心,建议使用 Helm 统一管理所需部署的 K8s 资源描述文件,请参考以下命令完成应用的安装和卸载。

helminstallsentinel-dashboard./helm#部署资源
helmuninstallsentinel-dashboard#卸载资源

如何接入

为了减少客户端集成的工作,您可以使用 eden-architect 框架,只需要两步就可以完成 Sentinel 的集成。

引入 Sentinel 依赖


io.github.shiyindaxiaojie
eden-sentinel-spring-cloud-starter

开启 Sentinel 配置

spring:
cloud:
sentinel:#流量治理组件
enabled:false#默认关闭,请按需开启
http-method-specify:true#兼容RESTful
eager:true#立刻刷新到Dashboard
transport:
dashboard:localhost:8090
datasource:
flow:
nacos:
server-addr:${spring.cloud.nacos.config.server-addr}
namespace:${spring.cloud.nacos.config.namespace}
groupId:sentinel
dataId:${spring.application.name}-flow-rule
rule-type:flow
data-type:json






审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • RDBMS
    +关注

    关注

    0

    文章

    9

    浏览量

    5793
  • nacos
    +关注

    关注

    0

    文章

    10

    浏览量

    165

原文标题:基于 Sentinel 实现历史监控数据回看

文章出处:【微信号:芋道源码,微信公众号:芋道源码】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Sentinel扩展性设计机制分析

    Sentinel 提供多样的 SPI 接口用于提供扩展的能力。用户可以在用同一个 sentinel-core 的基础上自行扩展接口实现,从而可以方便地给 Sentinel 添加自定义的
    的头像 发表于 10-26 10:03 3957次阅读

    求助,labview数据存储和历史数据查询功能应该如何做课程设计?

    纯labview小白,正在做声卡声音信号采集的课程设计,要求有数据存储和历史数据查询功能,搞不懂如何历史数据查询,都将数据存储在了文件夹,在文件夹直接
    发表于 04-15 09:32

    历史未来SCSI接口简介

    历史未来 SCSI接口简介SCSI (Small Computer System Interface/小型计算机系统接口)是一种通用接口,但其凭借着扩展性好、性能优越、可靠性高等特点,被广泛应用
    发表于 11-13 22:00

    GPRS RTU燃气数据采集监控方案设计分享 希望大家提供宝贵意

    燃气数据采集监控方案设计 关键字:燃气监控、远程监控、GPSR、RTU、数据采集、低功耗、自动化、一体化 案例背景燃气远程
    发表于 09-06 17:48

    医疗冷链监控系统

    电池电压、UPS温度等曲线;5)、中部文字提示当前设备登陆时间,采集数据的最后时间;历史记录1)用户可以根据时间段来搜索历史记录;2)历史
    发表于 09-09 16:29

    Labview读取ACCESS数据数据生成历史曲线

    `现在想做一个“历史数据曲线”功能:读取ACCESS数据库(多列数据,含时间),用曲线显示出来(X轴显示历史时间,Y轴显示各列数据)目前
    发表于 08-11 12:39

    通过组态软件自己制作APP实现PLC远程无线监控

    PLC数据实现PLC远程无线监控,通过巨控的GrmWebGUIDev开发环境组态好远程监控的图形界面,将图形界面通过网络将GRM模块关联起来,实现
    发表于 07-05 16:44

    求助:labview如何实现历史数据检索?

    毕设救急:labview历史数据检索如何实现
    发表于 05-14 10:35

    基于LabWindowsCVI的数据采集与监控系统的设计与实现

    基于LabWindowsCVI的数据采集与监控系统的设计与实现
    发表于 05-06 08:40

    无线录井监控软件的设计与实现

    介绍实时数据库系统和历史数据库系统的设计及管理,给出无线录井监控软件的设计实现过程。利用面向对象的编程方法,借助可视化的开发工具Visual C++设计了无线录井
    发表于 04-15 09:30 20次下载

    EAST低温历史数据可视化软件设计与实现

    在EAST低温远程监控系统中,需提供对EAST低温控制历史数据的分析处理和可视化。为此给出EAST低温历史数据可视化软件的设计与实现,详细说明了基于winsock网络传输和多线程技术的
    发表于 02-22 16:11 17次下载

    莱姆电子推出新一代Sentinel产品Sentinel 3+

    LEM莱姆电子宣布推出经过验证的新一代Sentinel 产品Sentinel 3+,可对不间断电源(UPS) 系统中的后备电池健康状态进行连续监测
    发表于 04-08 10:10 1229次阅读

    Sentinel如何通过限流实现服务的高可用性

    实现实时监控,精确度达秒级。三、Sentinel 基于 Dubbo的最佳实践Dubbo 接入 Sentinel后,可通过对Dubbo核心模块中的服务提供方和服务消费方的限流来进一步提
    发表于 08-20 16:19 241次阅读

    UltraSoC推出CAN Sentinel增强汽车的网络安全性

    UltraSoC近日宣布推出CAN Sentinel,从而推动其汽车网络安全产品实现重要迈进。
    发表于 02-25 11:48 802次阅读

    Sentinel高可用流量管理框架

    Sentinel.zip
    发表于 04-25 09:24 0次下载
    <b class='flag-5'>Sentinel</b>高可用流量管理框架