全部产品
Search
文档中心

日志服务:使用CloudLens for SLS分析资源用量

更新时间:Mar 20, 2024

本文介绍在CloudLens for SLS中自定义分析日志服务资源用量的常用场景。

背景信息

CloudLens for SLS推出账单数据(免费),用于监控计费用量。账单数据来源于费用中心,日志服务使用账单拉取加工任务将数据拉取到表格存储中进行存储(账单数据所使用的表格存储实例免费),并通过日志服务外部数据关联能力,提供账单数据的查询分析能力。

image

基于账单数据,CloudLens for SLS提供了资源用量监控报表,帮助您分析日志服务计费项用量,实时监控用量情况。另外,您还可以使用账单数据,实现日志服务资源用户的自定义SQL分析、告警等功能。image.png

功能入口

  1. 登录日志服务控制台
  2. 日志应用区域的云产品Lens页签中,单击CloudLens for SLS

    更多信息,请参见CloudLens for SLS

账单数据介绍

日志服务账单数据包含每一个日志服务实例在不同计费项产生的使用量。在自定义分析前,您需要了解日志服务账单数据中的实例、计费项等基本概念。

基本概念

字段

说明

实例

InstanceID

日志服务的最小粒度资源,对应日志服务Logstore。

计费项

BillingItem

日志服务的收费项,例如存储空间-日志热存储、索引流量-日志索引等。

实例

日志服务实例是日志服务的最小粒度资源(Logstore),组成结构为${aliUid};${Project};${Logstore};${Region},详细说明如下表所示。

变量

说明

${aliUid}

阿里云账号ID。

${Project}

日志服务的资源管理单元,是进行多用户隔离与访问控制的主要边界。更多信息,请参见项目(Project)

${Logstore}

日志服务中日志数据的采集、存储和查询单元。更多信息,请参见日志库(Logstore)

${Region}

日志服务数据中心所在的物理位置。您可以在创建Project时指定地域,一旦指定之后就不允许更改。更多信息,请参见开服地域

计费项

日志服务计费项是日志服务提供能力的收费项。在日志服务中所有计费项都是单独计费的,例如您存储日志会产生日志存储费用,您采集日志会产生写流量费用等。计费项说明,请参见按使用功能计费模式计费项

在账单数据中,BillingItem字段代表计费项。日志服务的计费项组成,请参见计费组成

SLS用量分析典型场景

在账单数据的基础上,您可以自定义分析账单,以实现实时监控资源用量的能力。

用量趋势与实例用量明细监控

您可以监控用量趋势与实例用量明细,从而处理账单数据异常突变情况。

  • 用量趋势监控

    您可以使用date_trunc函数实现不同时间粒度的用量趋势统计分析。

    • 查询与分析语句

      其中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
       "日期"
    • 查询与分析结果:您可以使用流图(Pro版本)直观地展示查询与分析结果。其中,设置x轴字段日期y轴字段用量聚合列BillingItemimage.png

  • 实例用量明细监控

    对用量明细进行统计分析时,往往需要精细到某个实例的费用以及用量,以SLS实例为例,您可以组合费用、用量和存储量的分析语句。其中:

    • t1为计费项用量统计,统计每个实例的各计费项的用量信息。

    • t2为实例费用统计,统计每个实例的应付费用、同比上月的占比,其中PretaxAmount为应付费用。

    • t3为存储量总量统计,存储量以天为单位,存储量的用量信息只统计截止到您所选时间范围最后一日的总量。

      • 查询与分析语句

        * | 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
      • 查询与分析结果

        您可以使用交叉表直观地展示每个实例的各个计费项明细。其中,设置分类列BillIngItem指标列Usage聚合列InstanceID费用(元)同比上月(%)存储空间。配置完成后,您可以监控到每个实例的费用及用量数据。同时通过对某个计费项进行排序,可以直观地统计某个计费项用量对应的Top实例。image.png

实现用量趋势与实例用量明细监控后,您可以清晰地观测到资源用量情况。接下来,可以继续对读写流量、存储空间、索引用量等典型用量的变动场景进行进一步分析。

读写流量增长场景

您可以使用如下查询与分析语句分析各实例的读写流量数据,然后通过统计图表展示查询与分析结果。

  • 查询与分析语句

    * |
    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

存储空间用量增长场景

  • 查询与分析语句

    * |
    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

您可以执行如下查询与分析语句,针对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
     "日期"

实际使用量没变,但用量统计为0场景

  1. 根据账单数据排查计费方式是否为资源包抵扣。

    • 查询与分析语句

      分别查询用量数据、资源包抵扣数据量。

      (*) |
      select
      	InstanceID,
       BillingItem,
       	Usage as "用量",
      	DeductedByResourcePackage as "资源包抵扣量"
      FROM instance_bill
      where
       productcode = 'sls'
  2. 判断资源包抵扣量是否为计费项总用量。

    • 查询与分析语句

      查询资源包抵扣前的原始资源用量。其中,资源包抵扣用量为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
       "日期"

配置用量告警

日志服务告警是一站式的告警监控、降噪、事务管理、通知分派的智能运维平台。您可以通过使用SLS的告警功能,实现实时监控日志服务用量的能力。在CloudLens for SLS中集成了异常检测,可以快速进入告警中心。具体操作,请参见设置告警

昨日整体用量告警

通常情况下,为了控制整体成本,您需要关注整体用量。例如使用如下查询与分析语句查询存储空间用量。

  • 查询与分析语句

     * | 
    select
    	round(sum(Usage), 2) as "存储空间用量"
    from instance_bill
    where ProductCode='sls' 
    and BillingItem='存储空间'

单一实例用量告警

为了优化成本,您还需要关注具体实例的用量告警。例如使用如下查询与分析语句查询存储空间用量,当单个实例的存储空间用量超过10则告警。

  • 查询与分析语句

    * |
    select
     InstanceID,
     "存储空间用量"
    from(
     select
     InstanceID,
     round(sum(Usage), 2) as "存储空间用量"
     FROM instance_bill
     where
     ProductCode = 'sls'
     and BillingItem = '存储空间'
     group by
     InstanceID
     )
    where
     "存储空间用量" > 10

除了上述两种告警场景外,您也可以根据实际业务需求自定义告警。具体操作,请参见快速设置日志告警