在业务场景中,日志数据可能存储在日志服务Project的不同Logstore/MetricStore中或不同地域的Project中。日志服务Project的数据集功能支持跨地域、跨Store联合查询,可帮助您提升工作效率。本文为您介绍如何使用日志型数据集和时序型数据集。
什么是StoreView
在日志服务的Project中,Storeview、Logstore、MetricStore都是重要的资源。但是Storeview并不是用于存储日志的实体资源,而是基于Logstore和MetricStore创建的虚拟资源,它们用于管理和保存多个Logstore或多个MetricStore之间的关联关系。通过数据集(Storeview),您可以对不同Logstore(或不同MetricStore)中的日志进行统一查询,但是数据集(Storeview)不支持对日志的修改操作。数据集(Storeview)分为日志型数据集和时序型数据集,其中日志型数据集支持对不同Logstore进行查询与分析以及对关联的Store通过SPL语法进行预定义,时序型数据集仅支持不同MetricStore之间进行查询。
在日志型数据集/时序型数据集中不同Logstore/MetricStore的日志内容支持关联查询,如Logstore1、Logstore2中均包含age字段,同时Logstore1、Logstore2通过数据集1关联,则在数据集1中查询age字段将返回Logstore1、Logstore2中的全部结果。
权限说明
使用RAM用户或扮演RAM角色使用数据集时,需要具备相应的权限。使用阿里云主账号为RAM用户或RAM角色授权的操作步骤,请参见创建RAM用户及授权、创建可信实体为阿里云服务的RAM角色及授权和使用RAM角色实现跨云账号的资源访问。
您可以为用户授予系统权限策略或自定义权限策略。
系统权限策略:统一由阿里云创建,用户只能使用,不能修改,策略的版本更新由阿里云维护。
日志服务的只读权限AliyunLogReadOnlyAccess。
日志服务的管理权限AliyunLogFullAccess。
自定义权限策略:用户可以自主创建、更新和删除,策略的版本更新由用户自己维护。
新建数据集或在数据集中查询时,RAM用户或RAM角色需要具有关联的所有Logstore、MetricStore的GetLogs - 查询日志库日志权限,即在自定义权限策略中添加如下内容:
重要权限策略中的Logstore包括了Logstore和MetricStore。当您的操作对象为MetricStore时,如下策略同样适用。
权限策略中的storeview包括了日志型数据集和时序型数据集。
{ "Version": "1", "Statement": [ { "Action": "log:GetLogStoreLogs", "Resource":[ "acs:log:*:*:project/${projectName}/Logstore/*", "acs:log:*:*:project/${projectName}/storeview/*" ], "Effect": "Allow" } ] }
使用限制
每个日志服务Project支持总共最多创建10个日志型数据集/时序型数据集。
每个日志型数据集/时序型数据集最多关联50个Logstore/MetricStore。
日志型数据集/时序型数据集中的所有Logstore/MetricStore必须属于同一个阿里云账号。
支持地域
目前以下地域支持查询、分析和预定义功能,其他地域目前支持查询功能。查询与分析区别请参见查询与分析概述。
华东1(杭州) | 泰国(曼谷) |
华北2(北京) | 菲律宾(马尼拉) |
华南1(深圳) | 韩国(首尔) |
预定义能力说明
概念
日志型数据集(StoreView)支持在创建StoreView 时对于关联的Store通过SPL语法进行预定义(预定义SPL仅支持extend、where关键字),预定义可以用于对于部分数据进行过滤及适配聚合分析中字段命名不一致问题等场景(聚合分析需要字段 key 一致,即要聚合logstore1的a
字段和logstore2的b
字段时需要通过extend a = b
使得列名保持一致),具体详情请参见示例。
使用限制
目前日志型数据集(StoreView)支持预定义,时序型数据集(StoreView)不支持预定义。
支持指令
日志型数据集(StoreView)预定义支持extend、where算子。
SQL和SPL支持的函数请参见函数概览。
示例
创建或者修改日志型数据集请参见创建日志型数据集。
例如,当需要聚合Logstore1的a
字段和Logstore2的b
字段时,可以在创建数据集或者修改数据集的时候通过extend a = b
(预定义)使列名保持一致。
示例1
在Logstore1预定义* | where a>1
,则表示StoreView中仅命中a>1
的日志参与后续的分析。
示例2
在Logstore1预定义 *| extend b = a
,表示StoreView中在 Logstore1中增加一列b
,与a
列的值相同,用于后续聚合。
查询能力说明
日志型数据集(StoreView)
日志型数据集(StoreView)支持跨logstore查询能力,即如果日志型数据集中关联了logstore-1和logstore-2两个Store,logstore-1和logstore-2中均包含字段request_method
,对于查询语句:(request_method:GET or request_method:POST) and status in [200 299]
的结果将返回logstore-1和logstore-2中符合的日志结果。日志型数据集(StoreView)查询详情请参见查询语法与功能。
假如日志型数据集中包含两个日志内容完全一致Logstore。此时查询对应的关键字,即可返回不同Logstore里面的所有结果,可以通过tag字段判断日志是来自哪一个Logstore。
时序型数据集(StoreView)
时序型数据集(StoreView)支持跨Store查询能力,即如果时序型数据集(StoreView)中关联了metricstore1和metricstore2 两个Store,直接在查询框中输入PromQL语句,后端计算引擎会自行完成跨多个时序库的计算处理。时序型数据集(StoreView)查询详情请参见时序数据查询和分析简介。创建或者修改时序型数据集(StoreView)请参见跨时序库(Metricstore)查询。
目前时序型数据集(Storeview)支持PromQL查询,不支持SQL查询、分析和预定义功能。
分析能力说明
概念
数据集支持跨Store聚合统计分析能力,即如果StoreView中关联了logstore-1,logstore-2两个Store,logstore-1和logstore-2中均包含字段 a
,对于查询语句:* | select a, count(1) group by a
的结果将返回logstore-1 和logstore-2的字段a的总数。
由于聚合分析需要字段key一致,对日志内容相同但是key名不一致的场景,可以通过预定义对部分数据进行过滤及对字段重命名。具体操作请参见预定义能力说明。
使用限制
目前日志型数据集(StoreView)支持数据分析,时序型数据集(StoreView)不支持数据分析。
支持函数
SQL和SPL支持的函数请参见函数概览。
示例
示例1
日志型数据集关联的是相同服务的不同Logstore,Logstore日志内容均一致。该场景下,需要先检查不同Logstore的索引配置是否相同(如均是全文索引,或需要的字段索引配置一致),而后将需要关联的Logstore添加到日志型数据集中。
创建日志型数据集后,即可正常使用SQL进行分析,如图所示统计近期15分钟的不同status
的结果为两个logstore所有日志的聚合结果。
示例2
日志型数据集关联的是相同服务的不同Logstore,但是Logstore的日志部分字段命名不同。此时可以通过预定义SPL重新定义一个新的字段与另一个Logstore的key名对齐。如图所示,使用SPL语句*|extend request_method = method
将method
字段重命名为 request_method
字段。点击预览数据,可以预览预定义的结果数据。
后续可以使用 request_method
进行查询分析。
数据集(Storeview)与常规Store功能区别
功能项 | logstore/metricstore | Storeview |
快速分析 | 支持 | 支持 |
统计图表 | 支持 | 支持 |
仪表盘 | 支持 | 支持 |
日志下载 | 支持 | 支持 |
快速查询 | 支持 | 不支持 |
定时SQL | 支持 | 不支持 |
告警 | 支持 | 不支持 |
日志聚类 | 支持 | 不支持 |
字段分析 | 支持 | 不支持 |