日志服务Dashboard加速
簡(jiǎn)介:?阿里云日志服務(wù)致力于為用戶提供統(tǒng)一的可觀測(cè)性平臺(tái),同時(shí)支持日志、時(shí)序以及Trace數(shù)據(jù)的查詢存儲(chǔ)。用戶可以基于收集到的各類數(shù)據(jù)構(gòu)建統(tǒng)一的監(jiān)控以及業(yè)務(wù)大盤,從而及時(shí)發(fā)現(xiàn)系統(tǒng)異常,感知業(yè)務(wù)趨勢(shì)。但是隨著收集到的數(shù)據(jù)量不斷增長(zhǎng),特別是遇到業(yè)務(wù)峰值的時(shí)候,大盤報(bào)表展示會(huì)產(chǎn)生明顯的延遲,無(wú)法及時(shí)查看重要數(shù)據(jù)。Scheduled SQL支持定時(shí)分析數(shù)據(jù)、存儲(chǔ)聚合數(shù)據(jù)、投影與過濾數(shù)據(jù),并將執(zhí)行的分析結(jié)果存入用戶指定的日志庫(kù)或者時(shí)序庫(kù)中,供用戶后續(xù)分析使用。由于在聚合后數(shù)據(jù)量將大大小于之前,因而非常適合進(jìn)行即時(shí)數(shù)據(jù)分析以及大盤展示。
背景
阿里云日志服務(wù)致力于為用戶提供統(tǒng)一的可觀測(cè)性平臺(tái),同時(shí)支持日志、時(shí)序以及Trace數(shù)據(jù)的查詢存儲(chǔ)。用戶可以基于收集到的各類數(shù)據(jù)構(gòu)建統(tǒng)一的監(jiān)控以及業(yè)務(wù)大盤,從而及時(shí)發(fā)現(xiàn)系統(tǒng)異常,感知業(yè)務(wù)趨勢(shì)。但是隨著收集到的數(shù)據(jù)量不斷增長(zhǎng),特別是遇到業(yè)務(wù)峰值的時(shí)候,大盤報(bào)表展示會(huì)產(chǎn)生明顯的延遲,無(wú)法及時(shí)查看重要數(shù)據(jù)。Scheduled SQL支持定時(shí)分析數(shù)據(jù)、存儲(chǔ)聚合數(shù)據(jù)、投影與過濾數(shù)據(jù),并將執(zhí)行的分析結(jié)果存入用戶指定的日志庫(kù)或者時(shí)序庫(kù)中,供用戶后續(xù)分析使用。由于在聚合后數(shù)據(jù)量將大大小于之前,因而非常適合進(jìn)行即時(shí)數(shù)據(jù)分析以及大盤展示。下面我們以服務(wù)的請(qǐng)求成功率為例,介紹下如何基于Scheduled SQL加速大盤報(bào)表。
方案
假如我們需要查看以一分鐘為粒度,一小時(shí)內(nèi)的請(qǐng)求成功率。在構(gòu)建報(bào)表的時(shí)候,需要基于當(dāng)前不足一分鐘的部分?jǐn)?shù)據(jù)配置實(shí)時(shí)報(bào)表,而針對(duì)之前已滿一分鐘的歷史數(shù)據(jù)配置歷史報(bào)表。當(dāng)然,如果用戶覺得一分鐘的數(shù)據(jù)延遲是可以接受的,就可以只配置歷史報(bào)表,而不需要實(shí)時(shí)報(bào)表。假如當(dāng)前時(shí)間為11:09:47,需要查看10:11:00一直到11:09:00的分鐘級(jí)請(qǐng)求成功率,以及11:09:00到11:09:47的秒級(jí)成功請(qǐng)求率。
日志內(nèi)容
| 字段名稱 | 示例 | 描述 |
| receive_time | 1636616663654 | 時(shí)間戳,毫秒級(jí) |
| status | 500 | http狀態(tài)碼,200表示成功,其余表示失敗 |
| error_code | 2001 | 錯(cuò)誤碼,標(biāo)識(shí)錯(cuò)誤原因 |
| message | server?is?busy | 錯(cuò)誤描述 |
| action_name | list_shop_product | 訪問的服務(wù)接口 |
| user_agent | chrome | 客戶瀏覽器 |
歷史報(bào)表
如圖所示展示了分鐘級(jí)的請(qǐng)求成功率,可以通過配置分鐘級(jí)的ScheduledSQL任務(wù),計(jì)算每分鐘的成功率,并通過歷史報(bào)表直接展示。因?yàn)橹恍枰苯永【酆辖Y(jié)果,不需要即時(shí)計(jì)算,所以展示速度大大提升。
實(shí)時(shí)報(bào)表
如圖所示展示了秒級(jí)的請(qǐng)求成功率,因?yàn)橹恍枰?jì)算不到一分鐘的數(shù)據(jù),而不是1小時(shí)的數(shù)據(jù),因而速度也得到的提升。
配置
下面仍然以請(qǐng)求成功率為例,向大家介紹下如何實(shí)現(xiàn)通過ScheduledSQL加速報(bào)表。
創(chuàng)建目標(biāo)時(shí)序庫(kù)
首先需要?jiǎng)?chuàng)建目標(biāo)時(shí)序庫(kù)存儲(chǔ)ScheduledSQL的聚合數(shù)據(jù)。
創(chuàng)建Scheduled SQL任務(wù)
在存儲(chǔ)服務(wù)請(qǐng)求的數(shù)據(jù)logstore查詢界面,輸入查詢語(yǔ)句,點(diǎn)擊查詢/分析按鈕,在成功執(zhí)行查詢分析之后,點(diǎn)擊創(chuàng)建Scheduled SQL按鈕。
*| select (__time__ - __time__ % 60) as time , sum(IF(status = 200, 1, 0)) * 1.0 / count(*) AS success_ratio from log group by time order by time計(jì)算配置
調(diào)度配置
因?yàn)槲覀冃枰榭捶昼娂?jí)別的服務(wù)請(qǐng)求成功率,所以調(diào)度間隔還有SQL時(shí)間窗口均需要以分鐘為粒度。用戶也可以根據(jù)自己的需求進(jìn)行調(diào)整。
查看任務(wù)詳情
在作業(yè)菜單中點(diǎn)擊Scheduled SQL,即可查看Scheduled SQL任務(wù)列表。點(diǎn)擊剛剛創(chuàng)建的任務(wù)名稱即可查看任務(wù)執(zhí)行詳情。在任務(wù)執(zhí)行成功之后,我們就可以創(chuàng)建歷史報(bào)表了。
配置歷史報(bào)表
在目標(biāo)時(shí)序庫(kù)查詢界面,執(zhí)行查詢語(yǔ)句,點(diǎn)擊添加到儀表盤,即可創(chuàng)建歷史報(bào)表。
* | select promql_query_range('success_ratio') from metrics limit 1000配置實(shí)時(shí)報(bào)表
在存儲(chǔ)服務(wù)請(qǐng)求的數(shù)據(jù)logstore查詢界面,輸入查詢語(yǔ)句,并選擇時(shí)間范圍為1分鐘,點(diǎn)擊添加到儀表盤創(chuàng)建實(shí)時(shí)報(bào)表:
*| select __time__ as time , sum(IF(status = 200, 1, 0)) * 1.0 / count(*) AS success_ratio from log group by time order by time總結(jié)
Scheduled SQL為用戶周期性的進(jìn)行分析數(shù)據(jù)、存儲(chǔ)聚合數(shù)據(jù)、投影與過濾數(shù)據(jù)提供了較大的便利。用戶還可以使用Scheduled SQL定時(shí)執(zhí)行聚合任務(wù),減少即時(shí)查詢所需要的數(shù)據(jù)量,從而加速大盤展示。
原文鏈接
本文為阿里云原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。?
總結(jié)
以上是生活随笔為你收集整理的日志服务Dashboard加速的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 移动端性能优化系列—启动速度
- 下一篇: 阿里云数字巡展:“云上峰会”背后的秘密武