0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于Sentinel實(shí)現(xiàn)歷史監(jiān)控?cái)?shù)據(jù)回看

jf_ro2CN3Fa ? 來源:稀土掘金 ? 2023-11-27 14:34 ? 次閱讀

眾所周知,Sentinel 對(duì)監(jiān)控?cái)?shù)據(jù)的做法是定時(shí)落盤在客戶端,然后 Sentinel 提供接口去拉取日志文件。所以 Sentinel 在監(jiān)控?cái)?shù)據(jù)上理論上是最少存儲(chǔ) 1 天以上的數(shù)據(jù);然而作為控制臺(tái)展示,則僅在內(nèi)存中聚合 5 分鐘以內(nèi)的統(tǒng)計(jì)數(shù)據(jù),不進(jìn)行持久化。

官方鼓勵(lì)大家對(duì) Dashboard 進(jìn)行改造實(shí)現(xiàn)指標(biāo)信息的持久化,并從其它的存儲(chǔ)中(如 RDBMS、時(shí)序數(shù)據(jù)庫等)拉取的監(jiān)控信息,包括實(shí)時(shí)的和歷史的數(shù)據(jù)。

基于此,結(jié)合公司內(nèi)部的需求,我們自行改造并實(shí)現(xiàn)了監(jiān)控指標(biāo)的持久化。本文把一些實(shí)現(xiàn)過程分享給大家!

Sentinel 是阿里巴巴開源的流量治理平臺(tái),提供了 流量控制、熔斷降級(jí)、系統(tǒng)負(fù)載保護(hù)、黑白名單訪問控制 等功能。在實(shí)際的生產(chǎn)需求中,筆者進(jìn)行了部分?jǐn)U展:

流控規(guī)則持久化:適配 Apollo、Nacos、Zookeeper

監(jiān)控?cái)?shù)據(jù)持久化:適配 InfluxDB、Kafka、Elasticsearch

監(jiān)控面板優(yōu)化:新增時(shí)間控件,允許在任意時(shí)刻內(nèi)查詢監(jiān)控?cái)?shù)據(jù)。

演示圖例

改造前

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

改造后

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

快捷時(shí)間選擇。

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

自定義時(shí)間選擇。

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

如何構(gòu)建

本項(xiàng)目默認(rèn)使用 Maven 來構(gòu)建,最快的使用方式是把我給你的代碼導(dǎo)入的開發(fā)工具中?;蛟陧?xiàng)目的根目錄執(zhí)行 mvn install -T 4C 完成本項(xiàng)目的構(gòu)建。

如何啟動(dòng)

IDEA 啟動(dòng)

本項(xiàng)目默認(rèn)不依賴外部組件,可以直接啟動(dòng)運(yùn)行。

在項(xiàng)目目錄下運(yùn)行 mvn install(如果不想運(yùn)行測(cè)試,可以加上 -DskipTests 參數(shù))。

進(jìn)入 sentinel-dashboard 目錄,執(zhí)行 mvn spring-boot:run 或者啟動(dòng) SentinelApplication 類。運(yùn)行成功的話,可以看到 Spring Boot 啟動(dòng)成功的界面。

在實(shí)際的生產(chǎn)需求,Sentinel 保存的規(guī)則和監(jiān)控是需要持久化落盤的,因此,您可以在 sentinel-dashboard/src/main/resources/application.properties 接入外部組件。

規(guī)則存儲(chǔ)類型:memory(默認(rèn))、nacos(推薦)、apollo、zookeeper

#規(guī)則存儲(chǔ)類型,可選項(xiàng):memory(默認(rèn))、nacos(推薦)、apollo、zookeeper
sentinel.rule.type=nacos
#Nacos存儲(chǔ)規(guī)則,如果您設(shè)置了sentinel.metrics.type=nacos,需要調(diào)整相關(guān)配置
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存儲(chǔ)規(guī)則,如果您設(shè)置了sentinel.metrics.type=apollo,需要調(diào)整相關(guān)配置
sentinel.rule.apollo.portal-url=http://localhost:10034
sentinel.rule.apollo.token=
sentinel.rule.apollo.env=
#Zookeeper存儲(chǔ)規(guī)則,如果您設(shè)置了sentinel.metrics.type=zookeeper,需要調(diào)整相關(guān)配置
sentinel.rule.zookeeper.connect-string=localhost:2181
sentinel.rule.zookeeper.root-path=/sentinel_rule

監(jiān)控存儲(chǔ)類型:memory(默認(rèn))、influxdb(推薦)、elasticsearch

#監(jiān)控存儲(chǔ)類型,可選項(xiàng):memory(默認(rèn))、influxdb(推薦)、elasticsearch
sentinel.metrics.type=memory
#InfluxDB存儲(chǔ)監(jiān)控?cái)?shù)據(jù),如果您設(shè)置了sentinel.metrics.type=influxdb,需要調(diào)整相關(guān)配置
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存儲(chǔ)監(jiān)控?cái)?shù)據(jù),如果您設(shè)置了sentinel.metrics.type=elasticsearch,需要調(diào)整相關(guān)配置
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=
#監(jiān)控?cái)?shù)據(jù)存儲(chǔ)緩沖設(shè)置,降低底層存儲(chǔ)組件寫入壓力??蛇x項(xiàng):none(默認(rèn)不啟用)、kafka(推薦)
sentinel.metrics.sender.type=none
#Kafka存儲(chǔ)監(jiān)控?cái)?shù)據(jù),如果您設(shè)置了sentinel.metrics.sender.type=kafka,需要調(diào)整相關(guān)配置
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

鏡像啟動(dòng)

本項(xiàng)目已發(fā)布到 Docker Hubhttps://hub.docker.com/repository/docker/shiyindaxiaojie/sentinel-dashboard,請(qǐng)執(zhí)行參考命令運(yùn)行。

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

如何部署

FatJar 部署

執(zhí)行 mvn clean package 打包成一個(gè) fat jar,參考如下命令啟動(dòng)編譯后的控制臺(tái)。

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 部署

本項(xiàng)目使用了 Spring Boot 的鏡像分層特性優(yōu)化了鏡像的構(gòu)建效率,請(qǐng)確保正確安裝了 Docker 工具,然后執(zhí)行以下命令。

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

Helm 部署

以應(yīng)用為中心,建議使用 Helm 統(tǒng)一管理所需部署的 K8s 資源描述文件,請(qǐng)參考以下命令完成應(yīng)用的安裝和卸載。

helminstallsentinel-dashboard./helm#部署資源
helmuninstallsentinel-dashboard#卸載資源

如何接入

為了減少客戶端集成的工作,您可以使用 eden-architect 框架,只需要兩步就可以完成 Sentinel 的集成。

引入 Sentinel 依賴


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

開啟 Sentinel 配置

spring:
cloud:
sentinel:#流量治理組件
enabled:false#默認(rèn)關(guān)閉,請(qǐng)按需開啟
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






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • RDBMS
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    5834
  • nacos
    +關(guān)注

    關(guān)注

    0

    文章

    10

    瀏覽量

    189

原文標(biāo)題:基于 Sentinel 實(shí)現(xiàn)歷史監(jiān)控?cái)?shù)據(jù)回看

文章出處:【微信號(hào):芋道源碼,微信公眾號(hào):芋道源碼】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Sentinel擴(kuò)展性設(shè)計(jì)機(jī)制分析

    Sentinel 提供多樣的 SPI 接口用于提供擴(kuò)展的能力。用戶可以在用同一個(gè) sentinel-core 的基礎(chǔ)上自行擴(kuò)展接口實(shí)現(xiàn),從而可以方便地給 Sentinel 添加自定義的
    的頭像 發(fā)表于 10-26 10:03 ?4109次閱讀

    基于Sentinel自研組件的系統(tǒng)限流、降級(jí)、負(fù)載保護(hù)最佳實(shí)踐探索

    景 :Sentinel 承接了阿里巴巴 近 10 年的雙十一 大促流量的核心場(chǎng)景,例如秒殺(即突發(fā)流量控制在系統(tǒng)容量可以承受的范圍)、消息削峰填谷、集群流量控制、實(shí)時(shí)熔斷下游不可用應(yīng)用等。 ? 完備的實(shí)時(shí)監(jiān)控Sentinel
    的頭像 發(fā)表于 09-25 11:19 ?1214次閱讀
    基于<b class='flag-5'>Sentinel</b>自研組件的系統(tǒng)限流、降級(jí)、負(fù)載保護(hù)最佳實(shí)踐探索

    開源分析和落地方案—Sentinel

    作者:京東物流 劉達(dá) 一、Sentinel是什么? Sentinel是從阿里技術(shù)體系內(nèi)誕生并由相關(guān)社區(qū)從微服務(wù)到云原生階段持續(xù)孵化的流量治理組件,在服務(wù)熔斷限流以及秒級(jí)/分鐘級(jí)監(jiān)控方面提供了開箱即用
    的頭像 發(fā)表于 11-08 10:10 ?421次閱讀
    開源分析和落地方案—<b class='flag-5'>Sentinel</b>篇

    求助,labview數(shù)據(jù)存儲(chǔ)和歷史數(shù)據(jù)查詢功能應(yīng)該如何做課程設(shè)計(jì)?

    純labview小白,正在做聲卡聲音信號(hào)采集的課程設(shè)計(jì),要求有數(shù)據(jù)存儲(chǔ)和歷史數(shù)據(jù)查詢功能,搞不懂如何歷史數(shù)據(jù)查詢,都將數(shù)據(jù)存儲(chǔ)在了文件夾,在文件夾直接
    發(fā)表于 04-15 09:32

    歷史未來SCSI接口簡介

    歷史未來 SCSI接口簡介SCSI (Small Computer System Interface/小型計(jì)算機(jī)系統(tǒng)接口)是一種通用接口,但其憑借著擴(kuò)展性好、性能優(yōu)越、可靠性高等特點(diǎn),被廣泛應(yīng)用
    發(fā)表于 11-13 22:00

    GPRS RTU燃?xì)?b class='flag-5'>數(shù)據(jù)采集監(jiān)控方案設(shè)計(jì)分享 希望大家提供寶貴意

    燃?xì)?b class='flag-5'>數(shù)據(jù)采集監(jiān)控方案設(shè)計(jì) 關(guān)鍵字:燃?xì)?b class='flag-5'>監(jiān)控、遠(yuǎn)程監(jiān)控、GPSR、RTU、數(shù)據(jù)采集、低功耗、自動(dòng)化、一體化 案例背景燃?xì)膺h(yuǎn)程
    發(fā)表于 09-06 17:48

    Labview讀取ACCESS數(shù)據(jù)數(shù)據(jù)生成歷史曲線

    `現(xiàn)在想做一個(gè)“歷史數(shù)據(jù)曲線”功能:讀取ACCESS數(shù)據(jù)庫(多列數(shù)據(jù),含時(shí)間),用曲線顯示出來(X軸顯示歷史時(shí)間,Y軸顯示各列數(shù)據(jù))目前
    發(fā)表于 08-11 12:39

    求助:labview如何實(shí)現(xiàn)歷史數(shù)據(jù)檢索?

    畢設(shè)救急:labview歷史數(shù)據(jù)檢索如何實(shí)現(xiàn)
    發(fā)表于 05-14 10:35

    基于LabWindowsCVI的數(shù)據(jù)采集與監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

    基于LabWindowsCVI的數(shù)據(jù)采集與監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
    發(fā)表于 05-06 08:40

    EAST低溫歷史數(shù)據(jù)可視化軟件設(shè)計(jì)與實(shí)現(xiàn)

    在EAST低溫遠(yuǎn)程監(jiān)控系統(tǒng)中,需提供對(duì)EAST低溫控制歷史數(shù)據(jù)的分析處理和可視化。為此給出EAST低溫歷史數(shù)據(jù)可視化軟件的設(shè)計(jì)與實(shí)現(xiàn),詳細(xì)說明了基于winsock網(wǎng)絡(luò)傳輸和多線程技術(shù)的
    發(fā)表于 02-22 16:11 ?17次下載

    萊姆電子推出新一代Sentinel產(chǎn)品Sentinel 3+

    LEM萊姆電子宣布推出經(jīng)過驗(yàn)證的新一代Sentinel 產(chǎn)品Sentinel 3+,可對(duì)不間斷電源(UPS) 系統(tǒng)中的后備電池健康狀態(tài)進(jìn)行連續(xù)監(jiān)測(cè)
    發(fā)表于 04-08 10:10 ?1318次閱讀

    Sentinel如何通過限流實(shí)現(xiàn)服務(wù)的高可用性

    實(shí)現(xiàn)實(shí)時(shí)監(jiān)控,精確度達(dá)秒級(jí)。三、Sentinel 基于 Dubbo的最佳實(shí)踐Dubbo 接入 Sentinel后,可通過對(duì)Dubbo核心模塊中的服務(wù)提供方和服務(wù)消費(fèi)方的限流來進(jìn)一步提
    發(fā)表于 08-20 16:19 ?303次閱讀

    Sentinel 如何通過勻速請(qǐng)求和冷啟動(dòng)來保障服務(wù)的穩(wěn)定性

    摘要:?這是圍繞 Sentinel 的使用場(chǎng)景、技術(shù)對(duì)比和實(shí)現(xiàn)、開發(fā)者實(shí)踐等維度推出的系列文章的第二篇。 第一篇:Dubbo 的流量防衛(wèi)兵 | Sentinel如何通過限流實(shí)現(xiàn)服務(wù)的高
    發(fā)表于 08-28 14:09 ?311次閱讀

    UltraSoC推出CAN Sentinel增強(qiáng)汽車的網(wǎng)絡(luò)安全性

    UltraSoC近日宣布推出CAN Sentinel,從而推動(dòng)其汽車網(wǎng)絡(luò)安全產(chǎn)品實(shí)現(xiàn)重要邁進(jìn)。
    發(fā)表于 02-25 11:48 ?1080次閱讀

    Sentinel高可用流量管理框架

    Sentinel.zip
    發(fā)表于 04-25 09:24 ?0次下載
    <b class='flag-5'>Sentinel</b>高可用流量管理框架