在上一篇推文中,我們使用時(shí)序數(shù)據(jù)庫(kù) InfluxDb 做了流控?cái)?shù)據(jù)存儲(chǔ),但是數(shù)據(jù)存儲(chǔ)不是目的,分析監(jiān)控預(yù)警才是最終目標(biāo),那么問(wèn)題來(lái)了,如何更好的實(shí)現(xiàn)呢?用過(guò)阿里巴巴 Sentinel 控制臺(tái)的小伙伴,是不是覺(jué)得它的控制臺(tái)丑爆了,而且只有短短的五厘米,顯然不能滿足大部分人或者場(chǎng)景的使用。
架構(gòu)
工具
- sentinel-dashboard(控制臺(tái),收集數(shù)據(jù))
- Influxdb(時(shí)序數(shù)據(jù)庫(kù),存儲(chǔ)數(shù)據(jù))
- Chronograf (展示控制臺(tái),顯示數(shù)據(jù)并實(shí)現(xiàn)預(yù)警)
安裝
Sentinel 控制臺(tái) 和 時(shí)序數(shù)據(jù)庫(kù) Influxdb 的安裝方式前面已經(jīng)聊過(guò),這里不再贅述,簡(jiǎn)單說(shuō)下 Chronograf 展示控制臺(tái)的安裝方式,這里推薦使用 Docker 安裝方式。
$ docker run -p 8888:8888 -v $PWD:/var/lib/chronograf chronograf
安裝成功以后,瀏覽器訪問(wèn) http://ip:8888 你應(yīng)該看到一個(gè)歡迎頁(yè)面:
然后,自行配置數(shù)據(jù)源,根據(jù)業(yè)務(wù)場(chǎng)景組裝監(jiān)控大屏。
大屏
這里根據(jù) Sentinel 限流組件采集的數(shù)據(jù),組裝了一個(gè)簡(jiǎn)單的監(jiān)控大屏,可以監(jiān)控歷史訪問(wèn)總量、最近一小時(shí)的訪問(wèn)量、限流數(shù)以及最近幾分鐘或者幾小時(shí)的訪問(wèn)曲線等等,相比于阿里演示版是不是瞬間高大上的些許。
總訪問(wèn)量
SELECT SUM("successQps") AS "總訪問(wèn)量" FROM "sentinel_log"."autogen"."sentinelInfo"
最近一小時(shí)訪問(wèn)量
SELECT SUM("successQps") AS "訪問(wèn)量"
FROM "sentinel_log"."autogen"."sentinelInfo"
WHERE TIME > NOW() - 1h
最近一小時(shí)限流數(shù)
SELECT SUM("blockQps") AS "限流數(shù)"
FROM "sentinel_log"."autogen"."sentinelInfo"
WHERE time > now() - 1h
最近一小時(shí)異常數(shù)
SELECT SUM("exceptionQps") AS "異常數(shù)"
FROM "sentinel_log"."autogen"."sentinelInfo"
WHERE time > now() - 1h
最近一小時(shí)的訪問(wèn)趨勢(shì)圖(秒級(jí)別)
SELECT SUM("successQps") AS "訪問(wèn)量"
FROM "sentinel_log"."autogen"."sentinelInfo"
WHERE time > now() - 1h
GROUP BY time(1s)
最近12小時(shí)資源訪問(wèn)排名
SELECT SUM("successQps") AS "成功qps", SUM("blockQps") AS "限流qps"
FROM "sentinel_log"."autogen"."sentinelInfo"
WHERE time > now() - 12h
GROUP BY resource
預(yù)警
后期我們?cè)?Chronograf 中接入 Kapacitor ,Chronograf會(huì)自動(dòng)打開(kāi)該Configure Alert Endpoints部分,Kapacitor支持多個(gè)警報(bào)端點(diǎn)/事件處理程序。有興趣的小伙伴也可以在 Sentinel 控制臺(tái)中根據(jù)流控?cái)?shù)據(jù)進(jìn)行更智能化的設(shè)置,比如根據(jù)限流失敗數(shù)以及機(jī)器指標(biāo)動(dòng)態(tài)調(diào)整流控規(guī)則。






