使用DLI进行账单分析与优化
应用场景
本文主要介绍如何使用华为云DLI上的实际消费数据(文中涉及账户的信息已脱敏),在DLI的大数据分析平台上进行分析,找出费用优化的空间,并给出使用DLI过程中降低成本的一些优化措施。
流程介绍
使用DLI进行账单分析与优化的操作过程主要包括以下步骤:
步骤1:获取消费数据。获取账户的实际消费数据。
步骤2:分析账户消费结构并优化。在DLI上分析账户消费结构,找出开支较大的资源或用户,并给出降底成本的优化措施。
资源和成本规划
资源 |
资源说明 |
成本说明 |
---|---|---|
DLI |
数据湖探索(DLI)作为华为云大数据分析平台,其计费项包括存储费用与计算费用两项,计费类型包括包周期(包年包月),套餐包和按需计费三种。 |
DLI目前支持三种作业:SQL作业,Flink作业和Spark作业。
SQL作业的计费包括存储计费和计算计费,其中计算计费有包年包月计费和按需计费两种。
具体计费规则可以参考华为云官网价格详情。 。 |
步骤1:获取消费数据
- 获取消费明细数据。
- 使用华为云账户登录控制台。
- 通过“费用与成本”>“费用账单”进入费用中心。
图1 费用账单
- 在费用中心的“账单管理”界面,单击“消费详情”,统计维度选择“使用量类型”,统计周期选择“明细”,时间选择对应账期时间。
- 在导出记录界面,等待文件状态变为“文件生成完成”后,单击“下载”完成文件下载。
步骤2:分析账户消费结构并优化
- 在DLI上进行消费明细分析。
- 将步骤1:获取消费数据下载的消费明细数据上传到已建好的OBS桶中。
- 在数据湖探索服务中创建表。
- 登录DLI控制台,左侧导航栏单击“SQL编辑器”,执行引擎选择“spark”,选择执行的队列和数据库。本次演示队列和数据库选择“default”。
- 下载的文件中包含时间用量等,按表头意义在DLI上创建表,具体可以参考如下示例,其中amount列为费用。
CREATE TABLE `spending` ( account_period string, EnterpriseProject string, EnterpriseProjectID string, accountID string, product_type_code string, product_type string, product_code string, product_name string, product_id string, mode string, time1 string, use_start string, use_end string, orderid string, ordertime string, resource_type string, resource_id string, resouce_name string, tag string, skuid string, `c22name` STRING, `c23name` STRING, `c24name` STRING, `c25name` STRING, `c26name` STRING, `c27name` STRING, `c28name` STRING, `c29name` STRING, size STRING, `c31name` STRING, `c32name` STRING, `c33name` STRING, `c34name` STRING, `c35name` STRING, `amount` STRING, `c37name` STRING, `c38name` STRING, `c39name` STRING, `c40name` STRING, `c41name` STRING, `c42name` STRING, `c43name` STRING, `c44name` STRING, `c45name` STRING, `c46name` STRING, `c47name` STRING, `c48name` STRING, `c49name` STRING, `c50name` STRING, `c51name` STRING, `c52name` STRING, `c53name` STRING, `c54name` STRING ) USING csv options ( path 'obs://xxx/Spendings(ByTransaction)_20200501_20200531.csv', header true)
- 查询该时间内消费最高的resource_id, resource_name。
通过以下语句,可以发现sql和flink队列使用的费用均为1842元,在总费用3754元中占比为98%。
select resource_id, resouce_name, sum(size) as usage, sum(amount) as sum_amount from spending group by resource_id, resouce_name order by sum_amount desc
图3 查询结果
- 使用以下语句具体分析sql和flink这两个资源消费的时间段。
select * from spending where resource_id = 'd91d4616-b10c-471a-820d-e676e6c5f4b4' order by ordertime
可以发现sql队列从2020-05-14 17:00:00 GMT+08:00开始,每小时产生5.6元费用,持续到2020-05-28 10:00:00 GMT+08:00,说明这个sql队列在这段时间内持续使用。
同样,也可以发现flink队列在2020-05-14 17:00:00 GMT+08:00到2020-05-28 10:00:00 GMT+08:00这段 内持续使用。
- 优化建议。
通过以上分析,了解到sql和flink这两个队列几乎是在持续使用的,建议通过购买包周期队列来降低使用成本。另外,对于明确需要使用多少CU时的作业,也可以提前购买对应的CU时套餐包,来降低使用成本。
企业中的业务模式较多且经常变化,成本管理员通常并不能全面及时了解花销较大的业务在哪里,哪些是合理的,哪些是不合理的,通过在DLI中对费用明细进行分析,可以及时发现企业花销不合理的地方,及时进行成本管理,进一步降低企业使用华为云的成本。