日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Sentinel(十四)之控制台

發(fā)布時(shí)間:2023/12/3 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Sentinel(十四)之控制台 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

轉(zhuǎn)載自??Sentinel 控制臺(tái)

1. 概述

Sentinel 提供一個(gè)輕量級(jí)的開源控制臺(tái),它提供機(jī)器發(fā)現(xiàn)以及健康情況管理、監(jiān)控(單機(jī)和集群),規(guī)則管理和推送的功能。這里,我們將會(huì)詳細(xì)講述如何通過簡單的步驟就可以使用這些功能。

接下來,我們將會(huì)逐一介紹如何整合 Sentinel 核心庫和 Dashboard,讓它發(fā)揮最大的作用。同時(shí)我們也在阿里云上提供企業(yè)級(jí)的控制臺(tái):AHAS Sentinel 控制臺(tái),您只需要幾個(gè)簡單的步驟,就能最直觀地看到控制臺(tái)如何實(shí)現(xiàn)這些功能。

Sentinel 控制臺(tái)包含如下功能:

  • 查看機(jī)器列表以及健康情況:收集 Sentinel 客戶端發(fā)送的心跳包,用于判斷機(jī)器是否在線。
  • 監(jiān)控 (單機(jī)和集群聚合):通過 Sentinel 客戶端暴露的監(jiān)控 API,定期拉取并且聚合應(yīng)用監(jiān)控信息,最終可以實(shí)現(xiàn)秒級(jí)的實(shí)時(shí)監(jiān)控。
  • 規(guī)則管理和推送:統(tǒng)一管理推送規(guī)則。
  • 鑒權(quán):生產(chǎn)環(huán)境中鑒權(quán)非常重要。這里每個(gè)開發(fā)者需要根據(jù)自己的實(shí)際情況進(jìn)行定制。

注意:Sentinel 控制臺(tái)目前僅支持單機(jī)部署。Sentinel 控制臺(tái)項(xiàng)目提供 Sentinel 功能全集示例,不作為開箱即用的生產(chǎn)環(huán)境控制臺(tái),若希望在生產(chǎn)環(huán)境使用請根據(jù)文檔自行進(jìn)行定制和改造。

2. 啟動(dòng)控制臺(tái)

2.1 獲取 Sentinel 控制臺(tái)

您可以從?release 頁面?下載最新版本的控制臺(tái) jar 包。

您也可以從最新版本的源碼自行構(gòu)建 Sentinel 控制臺(tái):

  • 下載?控制臺(tái)?工程
  • 使用以下命令將代碼打包成一個(gè) fat jar:?mvn clean package

2.2 啟動(dòng)

注意:啟動(dòng) Sentinel 控制臺(tái)需要 JDK 版本為 1.8 及以上版本。

使用如下命令啟動(dòng)控制臺(tái):

java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard.jar

其中?-Dserver.port=8080?用于指定 Sentinel 控制臺(tái)端口為?8080。

從 Sentinel 1.6.0 起,Sentinel 控制臺(tái)引入基本的登錄功能,默認(rèn)用戶名和密碼都是?sentinel??梢詤⒖?鑒權(quán)模塊文檔?配置用戶名和密碼。

注:若您的應(yīng)用為 Spring Boot 或 Spring Cloud 應(yīng)用,您可以通過 Spring 配置文件來指定配置,詳情請參考?Spring Cloud Alibaba Sentinel 文檔。

3. 客戶端接入控制臺(tái)

控制臺(tái)啟動(dòng)后,客戶端需要按照以下步驟接入到控制臺(tái)。

3.1 引入JAR包

客戶端需要引入 Transport 模塊來與 Sentinel 控制臺(tái)進(jìn)行通信。您可以通過?pom.xml?引入 JAR 包:

<dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-transport-simple-http</artifactId><version>x.y.z</version> </dependency>

3.2 配置啟動(dòng)參數(shù)

啟動(dòng)時(shí)加入 JVM 參數(shù)?-Dcsp.sentinel.dashboard.server=consoleIp:port?指定控制臺(tái)地址和端口。若啟動(dòng)多個(gè)應(yīng)用,則需要通過?-Dcsp.sentinel.api.port=xxxx?指定客戶端監(jiān)控 API 的端口(默認(rèn)是 8719)。

從 1.6.3 版本開始,控制臺(tái)支持網(wǎng)關(guān)流控規(guī)則管理。您需要在接入端添加?-Dcsp.sentinel.app.type=1?啟動(dòng)參數(shù)以將您的服務(wù)標(biāo)記為 API Gateway,在接入控制臺(tái)時(shí)您的服務(wù)會(huì)自動(dòng)注冊為網(wǎng)關(guān)類型,然后您即可在控制臺(tái)配置網(wǎng)關(guān)規(guī)則和 API 分組。

除了修改 JVM 參數(shù),也可以通過配置文件取得同樣的效果。更詳細(xì)的信息可以參考?啟動(dòng)配置項(xiàng)。

3.3 觸發(fā)客戶端初始化

確保客戶端有訪問量,Sentinel 會(huì)在客戶端首次調(diào)用的時(shí)候進(jìn)行初始化,開始向控制臺(tái)發(fā)送心跳包。

注意:您還需要根據(jù)您的應(yīng)用類型和接入方式引入對應(yīng)的?適配依賴,否則即使有訪問量也不能被 Sentinel 統(tǒng)計(jì)。

4. 查看機(jī)器列表以及健康情況

當(dāng)您在機(jī)器列表中看到您的機(jī)器,就代表著您已經(jīng)成功接入控制臺(tái);如果沒有看到您的機(jī)器,請檢查配置,并通過?${user.home}/logs/csp/sentinel-record.log.xxx?日志來排查原因,詳細(xì)的部分請參考?日志文檔。

注意:若接入 Sentinel 控制臺(tái)不成功,可以參考?FAQ?排查問題。

5. 監(jiān)控

5.1 "簇點(diǎn)鏈路"中顯示剛剛調(diào)用的資源(單機(jī)實(shí)時(shí))

簇點(diǎn)鏈路(單機(jī)調(diào)用鏈路)頁面實(shí)時(shí)的去拉取指定客戶端資源的運(yùn)行情況。它一共提供兩種展示模式:一種用樹狀結(jié)構(gòu)展示資源的調(diào)用鏈路,另外一種則不區(qū)分調(diào)用鏈路展示資源的實(shí)時(shí)情況。

注意:?簇點(diǎn)鏈路監(jiān)控是內(nèi)存態(tài)的信息,它僅展示啟動(dòng)后調(diào)用過的資源。

樹狀鏈路平鋪鏈路

5.2 "實(shí)時(shí)監(jiān)控"匯總資源信息(集群聚合)

同時(shí),同一個(gè)服務(wù)下的所有機(jī)器的簇點(diǎn)信息會(huì)被匯總,并且秒級(jí)地展示在"實(shí)時(shí)監(jiān)控"下。

注意:?實(shí)時(shí)監(jiān)控僅存儲(chǔ) 5 分鐘以內(nèi)的數(shù)據(jù),如果需要持久化,需要通過調(diào)用實(shí)時(shí)監(jiān)控接口來定制。

注意:請確保 Sentinel 控制臺(tái)所在的機(jī)器時(shí)間與自己應(yīng)用的機(jī)器時(shí)間保持一致,否則會(huì)導(dǎo)致拉不到實(shí)時(shí)的監(jiān)控?cái)?shù)據(jù)。

6. 規(guī)則管理及推送

Sentinel 控制臺(tái)同時(shí)提供簡單的規(guī)則管理以及推送的功能。規(guī)則推送分為 3 種模式,包括 "原始模式"、"Pull 模式" 和"Push 模式"。

這里先簡單的介紹"原始模式"。

6.1 規(guī)則管理

您可以在控制臺(tái)通過接入端暴露的?HTTP API?來查詢規(guī)則。

6.2 規(guī)則推送

目前控制臺(tái)的規(guī)則推送也是通過?規(guī)則查詢更改 HTTP API?來更改規(guī)則。這也意味著這些規(guī)則僅在內(nèi)存態(tài)生效,應(yīng)用重啟之后,該規(guī)則會(huì)丟失。

注:若通過控制臺(tái)推送規(guī)則時(shí)出現(xiàn) invalid type 或 empty type 的錯(cuò)誤,請確保 transport 模塊版本與 core 模塊版本保持一致;若控制臺(tái)版本 >= 1.7.1,請將接入端的相關(guān)依賴也升級(jí)至 1.7.1 及以上版本。

以上是原始模式。當(dāng)了解了原始模式之后,我們非常鼓勵(lì)您通過?動(dòng)態(tài)規(guī)則?并結(jié)合各種外部存儲(chǔ)來定制自己的規(guī)則源。我們推薦通過動(dòng)態(tài)配置源的控制臺(tái)來進(jìn)行規(guī)則寫入和推送,而不是通過 Sentinel 客戶端直接寫入到動(dòng)態(tài)配置源中。在生產(chǎn)環(huán)境中,我們推薦?push 模式,具體可以參考:在生產(chǎn)環(huán)境使用 Sentinel。

注:若要使用集群流控功能,則必須對接動(dòng)態(tài)規(guī)則源,否則無法正常使用。

Sentinel 同時(shí)還提供應(yīng)用維度規(guī)則推送的示例頁面(流控規(guī)則頁面,前端路由為?/v2/flow),用戶改造控制臺(tái)對接配置中心后可直接通過 v2 頁面推送規(guī)則至配置中心。Sentinel 抽取了通用接口用于向遠(yuǎn)程配置中心推送規(guī)則以及拉取規(guī)則:

  • DynamicRuleProvider<T>: 拉取規(guī)則(應(yīng)用維度)
  • DynamicRulePublisher<T>: 推送規(guī)則(應(yīng)用維度)

用戶只需實(shí)現(xiàn)?DynamicRuleProvider?和?DynamicRulePublisher?接口,并在 v2 的 controller 中通過?@Qualifier?注解替換相應(yīng)的 bean 即可實(shí)現(xiàn)應(yīng)用維度推送。我們提供了 Nacos 和 Apollo 的示例,改造詳情可參考?應(yīng)用維度規(guī)則推送示例。

6.3 網(wǎng)關(guān)流控規(guī)則

參考?網(wǎng)關(guān)流控控制臺(tái)文檔。

鑒權(quán)

從 Sentinel 1.5.0 開始,控制臺(tái)提供通用的鑒權(quán)接口?AuthService,用戶可根據(jù)需求自行實(shí)現(xiàn)。

從 Sentinel 1.6.0 起,Sentinel 控制臺(tái)引入基本的登錄功能,默認(rèn)用戶名和密碼都是?sentinel。該鑒權(quán)能力非?;A(chǔ),生產(chǎn)環(huán)境使用建議根據(jù)安全需要自行改造。

用戶可以通過如下參數(shù)進(jìn)行配置:

  • -Dsentinel.dashboard.auth.username=sentinel?用于指定控制臺(tái)的登錄用戶名為?sentinel;
  • -Dsentinel.dashboard.auth.password=123456?用于指定控制臺(tái)的登錄密碼為?123456;如果省略這兩個(gè)參數(shù),默認(rèn)用戶和密碼均為?sentinel;
  • -Dserver.servlet.session.timeout=7200?用于指定 Spring Boot 服務(wù)端 session 的過期時(shí)間,如?7200?表示 7200 秒;60m表示 60 分鐘,默認(rèn)為 30 分鐘;

同樣也可以直接在 Spring properties 文件中進(jìn)行配置。

注意:部署多臺(tái)控制臺(tái)時(shí),session 默認(rèn)不會(huì)在各實(shí)例之間共享,這一塊需要自行改造。

控制臺(tái)配置項(xiàng)

控制臺(tái)的一些特性可以通過配置項(xiàng)來進(jìn)行配置,配置項(xiàng)主要有兩個(gè)來源:System.getProperty()?和?System.getenv(),同時(shí)存在時(shí)后者可以覆蓋前者。

通過環(huán)境變量進(jìn)行配置時(shí),因?yàn)椴恢С?.?所以需要將其更換為?_。

配置項(xiàng)類型默認(rèn)值最小值描述
auth.enabledbooleantrue-是否開啟登錄鑒權(quán),僅用于日常測試,生產(chǎn)上不建議關(guān)閉
sentinel.dashboard.auth.usernameStringsentinel-登錄控制臺(tái)的用戶名,默認(rèn)為?sentinel
sentinel.dashboard.auth.passwordStringsentinel-登錄控制臺(tái)的密碼,默認(rèn)為?sentinel
sentinel.dashboard.app.hideAppNoMachineMillisInteger060000是否隱藏?zé)o健康節(jié)點(diǎn)的應(yīng)用,距離最近一次主機(jī)心跳時(shí)間的毫秒數(shù),默認(rèn)關(guān)閉
sentinel.dashboard.removeAppNoMachineMillisInteger0120000是否自動(dòng)刪除無健康節(jié)點(diǎn)的應(yīng)用,距離最近一次其下節(jié)點(diǎn)的心跳時(shí)間毫秒數(shù),默認(rèn)關(guān)閉
sentinel.dashboard.unhealthyMachineMillisInteger6000030000主機(jī)失聯(lián)判定,不可關(guān)閉
sentinel.dashboard.autoRemoveMachineMillisInteger0300000距離最近心跳時(shí)間超過指定時(shí)間是否自動(dòng)刪除失聯(lián)節(jié)點(diǎn),默認(rèn)關(guān)閉
sentinel.dashboard.unhealthyMachineMillisInteger6000030000主機(jī)失聯(lián)判定,不可關(guān)閉
server.servlet.session.cookie.nameStringsentinel_dashboard_cookie-控制臺(tái)應(yīng)用的 cookie 名稱,可單獨(dú)設(shè)置避免同一域名下 cookie 名沖突

配置示例:

  • 命令行方式:
java -Dsentinel.dashboard.app.hideAppNoMachineMillis=60000
  • Java 方式:
System.setProperty("sentinel.dashboard.app.hideAppNoMachineMillis", "60000");
  • 環(huán)境變量方式:
sentinel_dashboard_app_hideAppNoMachineMillis=60000

總結(jié)

以上是生活随笔為你收集整理的Sentinel(十四)之控制台的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。