全部产品
Search
文档中心

日志服务:跨日志库(Logstore)查询与分析

更新时间:Nov 19, 2024

数据集(Storeview) 支持多 Store 联合查询分析能力,本文介绍日志型数据集(Storeview)的创建,以及查询分析的使用方式。

创建日志型数据集

前提条件

已创建Project、标准型Logstore并完成日志采集。具体操作,请参见创建项目Project创建Logstore数据采集概述

操作步骤

  1. 登录日志服务控制台,在Project列表,单击打开目标Project。

  2. 在左侧导航栏选择数据集 > 日志型数据集,然后单击立即创建image创建日志型数据集

    image

  3. 创建数据集对话框,输入数据集名称,并添加关联的Logstore,然后单击确定。数据集创建需要等待大约一分钟。image

    说明
    • 每个日志服务Project支持总共最多创建10个日志型数据集

    • 每个日志型数据集最多关联50个Logstore

    • 日志型数据集中的所有Logstore必须属于同一个阿里云账号。

    警告

    如果存在跨境联合查询场景,需要阅读数据跨境合规承诺,并单击确定

查询功能说明

日志型数据集支持跨logstore查询能力,即如果日志型数据集中关联了logstore-1和logstore-2两个Store,logstore-1和logstore-2中均包含字段a,对于查询分析语句:* | select a from log where a > 1的结果将返回logstore-1和logstore-2中字段a符合a > 1的日志结果。

假如日志型数据集中包含两个日志内容完全一致Logstore。此时查询对应的关键字,即可返回不同Logstore里面的所有结果,可以通过tag字段判断日志是来自哪一个Logstore。

image

分析功能说明

数据集支持跨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名不一致的场景,可以通过预定义对部分数据进行过滤及对字段重命名。比如需要聚合logstore-1的a字段和logstore-2的b字段时,需要先将b重命名为a

说明

日志型数据集(StoreView)支持在创建StoreView时对于关联的Store通过SPL预法进行预定义(预定义SPL仅支持extendwhere关键字)。预定义可以用于对部分数据进行过滤及适配聚合分析中字段命名不一致问题等场景(聚合分析需要字段 key 一致,即要聚合logstore-1的a字段和logstore-2的b字段时需要通过extend a = b使得列名保持一致)。

以下列两个场景为例:

  • 场景 1:

    日志型数据集关联的是相同服务的不同Logstore,Logstore日志内容均一致。该场景下,需要先检查不同Logstore的索引配置是否相同(如均是全文索引,或需要的字段索引配置一致),而后将需要关联的Logstore添加到日志型数据集中。

    创建日志型数据集后,即可正常使用SQL进行分析,如图所示统计近期15分钟的不同status的结果为两个logstore所有日志的聚合结果。

    image

  • 场景 2

    日志型数据集关联的是相同服务的不同Logstore,但是Logstore的日志部分字段命名不同。此时可以通过预定义SPL重新定义一个新的字段与另一个Logstore的key名对齐。如图所示,使用SPL语句*|extend request_method = methodmethod字段重命名为 request_method字段。点击预览数据,可以预览预定义的结果数据。

    image.png后续可以使用 request_method进行查询分析。

    image.png

常见的查询/分析结果示例

场景描述

CreateStoreView时预定义Query

StoreView查询分析页面输入Query

输出结果

logstore-1、logstore-2均包含key 列

key:123

包含key:123的行

logstore-1、logstore-2均包含a、b列

*| select a where b=1

满足b =1的全部a

logstore-1、logstore-2均包含key、a列

key:123

*| select a

满足key:123的全部a

logstore-1、logstore-2均包含key、a列

key:123|where a>1

*| select a

同时满足key:123a > 1a

logstore-1、logstore-2均包含key、a列

key:123|where a>1 |extend y=upper(a)

*| select *

返回满足条件的所有列(包括y列)

logstore-1包含a,b,c,logstore-2包含b,c,d

select a,b,c,d

返回a、b、c、d列,空值填null

logstore-1有 a和b两个索引字段, logstore-2有 b和c两个索引字段

a:*** and b:*** | select a, count(1) group by a

在logstore-2中没有a的情况下,只统计logstore-1的数据。

部分不一致情况的处理

  • 查询语句同一个字段在两个Logstore配置的字段类型不一致时,可以正常返回。

  • 分析语句中仅在某些Store中包含对应字段场景时,仅返回包含对应字段Store的结果数据。

  • 分析语句多个Store之间索引字段Key索引配置不一致时,将返回报错,不返回结果。

相关文档

数据集(StoreView)概述

管理数据集的API接口,请参见: