使用CloudLens for SLS分析資源用量
本文介紹在CloudLens for SLS中自定義分析日志服務資源用量的常用場景。
背景信息
CloudLens for SLS推出賬單數(shù)據(jù)(免費),用于監(jiān)控計費用量。賬單數(shù)據(jù)來源于費用中心,日志服務使用賬單拉取加工任務將數(shù)據(jù)拉取到表格存儲中進行存儲(賬單數(shù)據(jù)所使用的表格存儲實例免費),并通過日志服務外部數(shù)據(jù)關聯(lián)能力,提供賬單數(shù)據(jù)的查詢分析能力。
基于賬單數(shù)據(jù),CloudLens for SLS提供了資源用量監(jiān)控報表,幫助您分析日志服務計費項用量,實時監(jiān)控用量情況。另外,您還可以使用賬單數(shù)據(jù),實現(xiàn)日志服務資源用戶的自定義SQL分析、告警等功能。
功能入口
- 登錄日志服務控制臺。
在日志應用區(qū)域的云產(chǎn)品Lens頁簽中,單擊CloudLens for SLS。
更多信息,請參見CloudLens for SLS。
賬單數(shù)據(jù)介紹
日志服務賬單數(shù)據(jù)包含每一個日志服務實例在不同計費項產(chǎn)生的使用量。在自定義分析前,您需要了解日志服務賬單數(shù)據(jù)中的實例、計費項等基本概念。
基本概念 | 字段 | 說明 |
實例 | InstanceID | 日志服務的最小粒度資源,對應日志服務Logstore。 |
計費項 | BillingItem | 日志服務的收費項,例如存儲空間-日志熱存儲、索引流量-日志索引等。 |
實例
日志服務實例是日志服務的最小粒度資源(Logstore),組成結(jié)構(gòu)為${aliUid};${Project};${Logstore};${Region}
,詳細說明如下表所示。
變量 | 說明 |
| 阿里云賬號ID。 |
| 日志服務的資源管理單元,是進行多用戶隔離與訪問控制的主要邊界。更多信息,請參見項目(Project)。 |
| 日志服務中日志數(shù)據(jù)的采集、存儲和查詢單元。更多信息,請參見日志庫(Logstore)。 |
| 日志服務數(shù)據(jù)中心所在的物理位置。您可以在創(chuàng)建Project時指定地域,一旦指定之后就不允許更改。更多信息,請參見開服地域。 |
計費項
日志服務計費項是日志服務提供能力的收費項。在日志服務中所有計費項都是單獨計費的,例如您存儲日志會產(chǎn)生日志存儲費用,您采集日志會產(chǎn)生寫流量費用等。計費項說明,請參見按使用功能計費模式計費項。
在賬單數(shù)據(jù)中,BillingItem字段代表計費項。日志服務的計費項組成,請參見計費組成。
SLS用量分析典型場景
在賬單數(shù)據(jù)的基礎上,您可以自定義分析賬單,以實現(xiàn)實時監(jiān)控資源用量的能力。
用量趨勢與實例用量明細監(jiān)控
您可以監(jiān)控用量趨勢與實例用量明細,從而處理賬單數(shù)據(jù)異常突變情況。
用量趨勢監(jiān)控
您可以使用date_trunc函數(shù)實現(xiàn)不同時間粒度的用量趨勢統(tǒng)計分析。
查詢與分析語句
其中BillingItem為計費項,Usage為用量。
* | select date_trunc('day', __time__) as "日期", BillingItem, round(sum(Usage), 3) as "用量" FROM instance_bill where productcode = 'sls' group by "日期", BillingItem order by "日期"
查詢與分析結(jié)果:您可以使用流圖(Pro版本)直觀地展示查詢與分析結(jié)果。其中,設置x軸字段為日期,y軸字段為用量,聚合列為BillingItem。
實例用量明細監(jiān)控
對用量明細進行統(tǒng)計分析時,往往需要精細到某個實例的費用以及用量,以SLS實例為例,您可以組合費用、用量和存儲量的分析語句。其中:
t1為計費項用量統(tǒng)計,統(tǒng)計每個實例的各計費項的用量信息。
t2為實例費用統(tǒng)計,統(tǒng)計每個實例的應付費用、同比上月的占比,其中PretaxAmount為應付費用。
t3為存儲量總量統(tǒng)計,存儲量以天為單位,存儲量的用量信息只統(tǒng)計截止到您所選時間范圍最后一日的總量。
查詢與分析語句
* | with t1 as ( select InstanceID, BillingItem, sum(Usage) as Usage FROM instance_bill where ProductCode = 'sls' and BillingItem not like '%存儲空間%' and BillingItem not like '%Storage%' group by InstanceID, BillingItem ), t2 as ( select InstanceID, round(di [1], 3) as "費用", concat( cast(round(di [3] * 100 -100, 3) as varchar), '%' ) "同比上月" from( select InstanceID, compare(cost, 2592000) as di FROM ( select InstanceID, round(sum(PretaxAmount), 2) as cost FROM instance_bill where ProductCode = 'sls' group by InstanceID ) group by InstanceID ) ), t3 as ( select InstanceID, max_by("存儲空間", t) as "存儲空間" FROM ( select t, InstanceID, round(sum("存儲空間"), 2) as "存儲空間" from( select date_trunc('day', __time__) as t, InstanceID, case when BillingItem like '%存儲空間%' or BillingItem like '%Storage%' then Usage else 0 end as "存儲空間" FROM instance_bill WHERE ProductCode = 'sls' group by t, InstanceID, "存儲空間" ) group by t, InstanceID order by t asc ) group by InstanceID ) select t1.InstanceID as InstanceID, t1.BillingItem as BillingItem, t1.Usage as Usage, t2."費用" as "費用(元)", t2."同比上月" as "同比上月(%)", t3."存儲空間" as "存儲空間" FROM t1 left join t2 on t1.InstanceID = t2.InstanceID left join t3 on t1.InstanceID = t3.InstanceID order by "費用 (元)" desc limit 150000
查詢與分析結(jié)果
您可以使用交叉表直觀地展示每個實例的各個計費項明細。其中,設置分類列為BillIngItem,指標列為Usage,聚合列為InstanceID、費用(元)、同比上月(%)、存儲空間。配置完成后,您可以監(jiān)控到每個實例的費用及用量數(shù)據(jù)。同時通過對某個計費項進行排序,可以直觀地統(tǒng)計某個計費項用量對應的Top實例。
實現(xiàn)用量趨勢與實例用量明細監(jiān)控后,您可以清晰地觀測到資源用量情況。接下來,可以繼續(xù)對讀寫流量、存儲空間、索引用量等典型用量的變動場景進行進一步分析。
讀寫流量增長場景
下圖為日志服務讀寫流量用量明細統(tǒng)計圖,您可以從圖中發(fā)現(xiàn)03-31~04-01期間讀寫流量用量明顯上升,需要進一步分析上升原因。
您可以使用如下查詢與分析語句分析各實例的讀寫流量數(shù)據(jù),然后通過統(tǒng)計圖表展示查詢與分析結(jié)果。
查詢與分析語句
* | select "日期", InstanceID, "用量" from( select date_trunc('day', __time__) as "日期", InstanceID, round(sum(Usage), 3) as "用量" FROM instance_bill where productcode = 'sls' and BillingItem = '讀寫流量' group by "日期", InstanceID ) group by "日期", "用量", InstanceID order by "日期" limit 10000
查詢與分析結(jié)果
您可以使用交叉表直觀地展示每個實例本周的讀寫流量情況。例如將2023-04-01的讀寫流量數(shù)據(jù)進行倒序排列,您可以發(fā)現(xiàn),instance1與instance2在2023-04-01發(fā)生了讀寫流量用量突變,導致整體的讀寫流量用量發(fā)生了突變。然后通過實例ID,您可以準確找到對應的Project、Logstore,便于進一步優(yōu)化讀寫流量。
存儲空間用量增長場景
下圖為日志服務存儲空間用量統(tǒng)計圖表,您可以從圖中發(fā)現(xiàn)12-26~01-09期間的存儲空間用量明顯上升,需要進一步分析上升原因,并優(yōu)化存儲空間。
您可以通過如下查詢與分析語句查詢1月3號這天各實例的存儲量,并統(tǒng)計同比-1天、同比-2天、同比-3天的數(shù)據(jù),然后通過統(tǒng)計圖表可視化展示查詢與分析結(jié)果。
查詢與分析語句
* | select InstanceID, round(diffreal [1], 3) as "Usage", concat( cast( round(diffreal [1] / sum(diffreal [1]) over() * 100, 2) as varchar ), '%' ) as "用量占比", concat( cast( coalesce(round(diffreal [5] * 100 -100), 2) as varchar ), '%' ) as "同比-1天", concat( cast( round(coalesce(diffreal [6] * 100 -100, 2)) as varchar ), '%' ) as "同比-2天", concat( cast( round(coalesce(diffreal [7] * 100 -100), 2) as varchar ), '%' ) as "同比-3天" from( select InstanceID, compare(Usage, 86400, 172800, 259200) as diffreal from( select InstanceID, sum(Usage) as Usage FROM instance_bill where ProductCode='sls' and BillingItem = '存儲空間' group by InstanceID ) group by InstanceID ) order by diffreal [1] desc limit 1000
查詢與分析結(jié)果
您可以使用交叉表直觀地展示查詢與分析結(jié)果。您可以按照實例存儲用量占比進行排序,從下述表格可知占比前四的實例均保持穩(wěn)定的用量趨勢,而instance5的存儲空間用量在近三天同比中呈現(xiàn)較明顯的上升趨勢。因此,您需要針對instance5進一步分析存儲量上升原因。
您可以執(zhí)行如下查詢與分析語句,針對instance5進一步分析存儲量上升原因。
查詢與分析語句
其中,需將
${instance5}
替換為具體的實例。* | select date_trunc('day', __time__) as "日期", BillingItem, round(sum(Usage), 3) as "Usage" FROM instance_bill where productcode = 'sls' and InstanceID = ${instance5} group by "日期", BillingItem order by "日期"
查詢與分析結(jié)果
通過該實例的用量趨勢圖可知,除存儲空間用量外,該實例的讀寫流量、索引流量都有所增長。雖然后面的讀寫流量與索引流量穩(wěn)定在一個固定區(qū)間,但存儲量持續(xù)增長,特別是01-01~01-09期間的存儲用量數(shù)據(jù)。這是因為存儲空間用量包含日志寫入流量和索引數(shù)據(jù)量,即數(shù)據(jù)存儲時長不變時,每日寫入流量、索引流量增加會導致總存儲量增加。
假設每日新寫入流量和索引流量固定為1 GB,數(shù)據(jù)存儲時長為30天,則總存儲量穩(wěn)定為30 GB。當新寫入流量和索引流量增加為2 GB后,增加后的第一天總存儲量為31 GB,第二天總存儲量為32 GB,以此類推,新寫入流量和索引流量增加的30天后,總存儲量為2 GB*30=60 GB。這就導致了雖然索引流量和讀寫流量后續(xù)沒有較大變化,但存儲量持續(xù)上升的情況。
在分析存儲空間用量增長的原因后,您需要對存儲空間用量進行優(yōu)化。由于寫入流量跟實際業(yè)務綁定,因此您可以根據(jù)實際使用情況適當減少索引數(shù),同時采取縮短存儲時長等方式減少存儲量。
索引用量增長場景
下圖展示了一個實例的用量趨勢情況,您可以從圖中發(fā)現(xiàn)該實例的索引流量于12-26~12-28期間有較明顯上升趨勢。
日志索引流量與寫入流量、索引數(shù)量(全文索引+字段索引)相關。根據(jù)賬單數(shù)據(jù)可知讀寫流量上升導致了索引流量同步上升。 由于讀寫流量與您的業(yè)務綁定,因此您可以采取減少索引數(shù)量的方式優(yōu)化索引流量,例如關閉全文索引、按需減少字段索引的數(shù)量,僅對關鍵字段設置索引。
實際使用量沒變,但用量統(tǒng)計為0場景
使用賬單數(shù)據(jù)分析資源用量時,會發(fā)生實際存在使用量,但賬單計算用量為0的情況。如下圖所示,從02-28這天起資源用量降為0。針對此問題,需要進一步分析原因。
根據(jù)賬單數(shù)據(jù)排查計費方式是否為資源包抵扣。
查詢與分析語句
分別查詢用量數(shù)據(jù)、資源包抵扣數(shù)據(jù)量。
(*) | select InstanceID, BillingItem, Usage as "用量", DeductedByResourcePackage as "資源包抵扣量" FROM instance_bill where productcode = 'sls'
查詢與分析結(jié)果
從下圖可知,雖然賬單計算用量為0,但資源包抵扣量不為0,說明存在資源包抵扣情況。
判斷資源包抵扣量是否為計費項總用量。
查詢與分析語句
查詢資源包抵扣前的原始資源用量。其中,資源包抵扣用量為DeductedByResourcePackage,抵扣前總用量為Usage+DeductedByResourcePackage。
* | select date_trunc('day', __time__) as "日期", BillingItem, round(sum(Usage + DeductedByResourcePackage), 3) as "抵扣前總用量" FROM instance_bill where productcode = 'sls' group by "日期", BillingItem order by "日期"
查詢與分析結(jié)果
配置用量告警
日志服務告警是一站式的告警監(jiān)控、降噪、事務管理、通知分派的智能運維平臺。您可以通過使用SLS的告警功能,實現(xiàn)實時監(jiān)控日志服務用量的能力。在CloudLens for SLS中集成了異常檢測,可以快速進入告警中心。具體操作,請參見設置告警。
昨日整體用量告警
通常情況下,為了控制整體成本,您需要關注整體用量。例如使用如下查詢與分析語句查詢存儲空間用量。
查詢與分析語句
* | select round(sum(Usage), 2) as "存儲空間用量" from instance_bill where ProductCode='sls' and BillingItem='存儲空間'
告警配置
在告警配置中,設置觸發(fā)條件為有數(shù)據(jù)匹配,并將匹配條件設置為存儲空間用量大于您的告警閾值,例如
"存儲空間用量">400
。
單一實例用量告警
為了優(yōu)化成本,您還需要關注具體實例的用量告警。例如使用如下查詢與分析語句查詢存儲空間用量,當單個實例的存儲空間用量超過10則告警。
查詢與分析語句
* | select InstanceID, "存儲空間用量" from( select InstanceID, round(sum(Usage), 2) as "存儲空間用量" FROM instance_bill where ProductCode = 'sls' and BillingItem = '存儲空間' group by InstanceID ) where "存儲空間用量" > 10
告警配置
在告警配置中,設置觸發(fā)條件為有數(shù)據(jù),即存在有實例存儲空間用量超過告警閾值則會告警。告警會展示實例ID與對應實例的存儲空間用量。
除了上述兩種告警場景外,您也可以根據(jù)實際業(yè)務需求自定義告警。具體操作,請參見快速設置日志告警。