MaxCompute的租户级别Information Schema从租户角度提供项目元数据及使用历史数据等信息,您可以一次性拉取您同一个元数据中心下所有Project的某类元数据,从而进行各类元数据的统计分析。我们在此推出系列元数据使用实践文章:
本文主要介绍通过元数据的“TUNNELS_HISTORY”视图进行相关统计。在此之前,您如果没还使用过租户级别Information Schema,需要您先详细阅读下租户级别Information Schema文档的背景信息、功能介绍、费用介绍、费用介绍、使用限制和注意事项,避免您在使用过程中遇到不必要的问题。
查看产生公网下载费用的信息
场景:近期在用户中心账单详情看到有几个项目有公网下载的费用,不符合预期,需要检查具体下载请求情况,以便进行治理。
解决方案:MaxCompute产生公网下载费用主要原因是走公网通过Tunnel Download通道成功发起了数据下载请求。您可以通过用户中心账单详分析具体的公网下载消费明细,找到具体的project和消费日期,再通过用量明细下载每天的详细使用信息,筛选数据分类为DownloadEx和InstanceDownloadEx的数据上传到MaxCompute的表,并与租户级别Information Schema的视图“SYSTEM_CATALOG.INFORMATION_SCHEMA.TUNNELS_HISTORY”进行关联查询,即可查更详细的下载请求信息。
步骤一: 下载用量明细。
- 产品选择“大数据计算服务MaxCOmpute(按量付费)”。
- 计量规格,看项目的默认计算Quota,如果选了按量付费的,则选“大数据计算服务MaxCompute(按量付费)”;如果选了包年包月的,则选ODPSDATAPLUS。
- 使用时间选择产生消费的日期。
步骤二:筛选公网下载的计量信息上传到MaxCompuet表(筛选数据分类为DownloadEx和InstanceDownloadEx),建表语句如下。
CREATE TABLE IF NOT EXISTS mc_tunnel_metering ( projectid STRING COMMENT '项目编号' ,metering_id STRING COMMENT '计费信息编号' ,type STRING COMMENT '数据分类,包括DownloadEx、InstanceDownloadEx' ,starttime STRING COMMENT '开始时间' ,endtime STRING COMMENT '结束时间' ,download BIGINT COMMENT '公网下行流量Byte' ,Region STRING COMMENT '地域' );
步骤三:关联“SYSTEM_CATALOG.INFORMATION_SCHEMA.TUNNELS_HISTORY”视图查询更多的tunnel下载请求信息。
SET odps.namespace.schema = true; --若您当前租户已经开启租户级别的schema语法开关,则无需执行这个flag。 WITH a AS ( SELECT tunnel_catalog ,request_id ,object_type ,object_name ,partition_spec ,owner_id ,owner_name ,start_time ,end_time ,client_ip ,user_agent ,`columns` FROM SYSTEM_CATALOG.INFORMATION_SCHEMA.TUNNELS_HISTORY WHERE ds IN ('xxx','xxx')--对应消费日期 ) ,b AS ( SELECT metering_id ,download ,region FROM mc_tunnel_metering WHERE download > 0 ) SELECT a.tunnel_catalog ,a.request_id ,b.metering_id ,( b.download / 1024 / 1024 / 1024 ) download_gb ,a.object_type ,a.object_name ,a.partition_spec ,a.owner_id ,a.owner_name ,a.start_time ,a.end_time ,a.client_ip ,a.user_agent ,a.`columns` ,b.region FROM a JOIN b ON a.request_id = b.metering_id ;
可以通过结果中:
- owner_name,发起请求的账号,可以找到账号的持有人。
- tunnel_catalog/object_name/partition_spec,项目/表名或select的instance id/表分区,可以定位到具体下载的数据。
- client_ip,客户端ip,可以查ip的归属。
通过VPC网络下载时不收取费用,您可以通过以上信息找到对应的请求业务,考虑配置成走VPC网,各地域及不同网络连接方式下的Endpoint信息,详情请参见Endpoint。
统计所有数据外流情况
场景
统计每日各个项目通过tunnel通道进出的数据量。
解决方案:
通过租户级别Information Schema的视图“SYSTEM_CATALOG.INFORMATION_SCHEMA.TUNNELS_HISTORY”进行统计,sql如下。
SET odps.namespace.schema = true; --若您当前租户已经开启租户级别的schema语法开关,则无需执行这个flag。 SELECT ds ,tunnel_catalog ,operate_type ,SUM(data_size) / 1024 / 1024 / 1024 s_data_size_gb ,SUM(length) s_length FROM SYSTEM_CATALOG.INFORMATION_SCHEMA.TUNNELS_HISTORY WHERE ds IN ('xxx','xxx') GROUP BY ds ,tunnel_catalog ,operate_type ;
注意,operate_type值为“DOWNLOADINSTANCELOG”的类型,大多是因为跑各类sql、spark或、pyodps等任务时需要数据回显场景时会走Tunnel的Instance Download,如果需要了解详情可以结合user_agent 等其他信息查看。
小结
以上只是给出了常见的两个场景,实际上您还可以通过“SYSTEM_CATALOG.INFORMATION_SCHEMA.CATALOGS”这个视图数据统计查看更多信息以便解决您的业务场景。