即时多库查询分析

多库查询分析功能允许您在查询时临时选择同一个 Project 下的多个 Logstore,使用一套查询分析语句获得聚合结果,从而提升问题排查和数据分析的效率,避免在多个查询页面间反复切换。相较于需要预先创建和固化的数据集(StoreView),多库查询分析提供了更灵活、即时的联合查询能力,尤其适用于探索性分析和紧急故障排查场景。

适用范围

目前功能处于内测阶段,如需使用,需提交工单申请,支持地域:

地域名称

地域ID

华东1(杭州)

cn-hangzhou

华南3(广州)

cn-guangzhou

华北2(北京)

cn-beijing

华北3(张家口)

cn-zhangjiakou

华南2(河源)

cn-heyuan

华北6(乌兰察布)

cn-wulanchabu

华北5(呼和浩特)

cn-huhehaote

华南1(深圳)

cn-shenzhen

西南1(成都)

cn-chengdu

华北1(青岛)

cn-qingdao

华东6(福州)

cn-fuzhou

华东(南通)

cn-nantong

中国香港

cn-hongkong

日本(东京)

ap-northeast-1

新加坡

ap-southeast-1

马来西亚(吉隆坡)

ap-southeast-3

印度尼西亚(雅加达)

ap-southeast-5

菲律宾(马尼拉)

ap-southeast-6

泰国(曼谷)

ap-southeast-7

韩国(首尔)

ap-northeast-2

德国(法兰克福)

eu-central-1

英国(伦敦)

eu-west-1

操作步骤

步骤一:授予 RAM 用户查询权限

确保执行查询的 RAM 用户或 RAM 角色拥有所有待查询 Logstore 的读取权限。缺少任一 Logstore 的读取权限都将导致整个查询失败。

关于如何为 RAM 用户或 RAM 角色授权,请参见创建RAM用户及授权创建可信实体为阿里云服务的RAM角色及授权。您可以选择以下任一方式进行授权:

  • (推荐)授予自定义策略:创建并授予一个仅包含目标 Logstore 读取及其他必要权限的自定义策略。核心策略示例如下,请将 ${projectName}${logstoreName}替换为您的实际 Project和待查询Logstore的名称:

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "log:ListProject",
          ],
          "Resource": "acs:log:*:*:project/*"
        },
        {
          "Effect": "Allow",
          "Action": "log:GetProject",
          "Resource": "acs:log:*:*:project/${projectName}"
        },
        {
          "Effect": "Allow",
          "Action": "log:ListLogStores",
          "Resource": "acs:log:*:*:project/${projectName}/logstore/*"
        },
        {
          "Effect": "Allow",
          "Action": [
            "log:GetLogStore",
            "log:GetLogStoreHistogram",
            "log:GetIndex",
            "log:GetLogStoreLogs"
          ],
          "Resource": [
            "acs:log:*:*:project/${projectName}/logstore/${logstoreName}",
            "acs:log:*:*:project/${projectName}/logstore/${logstoreName}"
          ]
        }
      ]
    }
  • 授予系统策略:直接授予 AliyunLogReadOnlyAccess。此策略操作简单,但授权范围较广,包含了日志服务所有资源的只读权限。

步骤二:进入多库查询页面

在日志服务控制台,进入多库查询分析页面。

  1. 登录日志服务控制台

  2. Project列表,点击目标Project名称

  3. 在左侧目录中选择日志存储image),在日志库列表中,点击任意待查询的Logstore,进入查询页面

  4. 查询页面,点击多库查询分析

image

步骤三:选择要多库查询的 Logstore

选择本次查询需要覆盖的多个 Logstore。

  1. 单击添加

  2. 在弹出的添加 Store页面中,将需要查询的多个 Logstore(最多50个),从logstore列表添加到应用logstore列表中;

  3. 单击确定添加

步骤四:编写查询分析语句并执行

编写查询语句,对选定的所有 Logstore 执行统一的查询和分析。在查询/分析页面的搜索栏,输入查询或分析语句,并单击查询/分析

示例

假设您有两个应用的访问日志分别存储在 access-log-app1access-log-app2 两个 Logstore 中,现在需要快速统计两个应用的总访问量,使用多库查询分析功能,输入如下查询分析语句:

* | SELECT __logstore__, count(*) AS pv GROUP BY __logstore__

预期结果

查询结果将以表格形式展示,其中包含两行数据,分别列出 access-log-app1access-log-app2 的访问量(pv)。__logstore__ 是系统内置的元数据字段,用于在结果中标识每条日志的来源 Logstore。

logstore

pv

access-log-app1

10520

access-log-app2

8790

步骤五(可选):另存为数据集

如果当前 Logstore 组合需要频繁查询,建议将其保存为数据集,以便后续复用。

  1. 步骤一:授予 RAM 用户查询权限配置的策略中新增数据集权限,新增授权如下:

        {
          "Effect": "Allow",
          "Action": [
            "log:ListStoreViews",
            "log:CreateStoreView",
            "log:GetStoreViewIndex",
            "log:GetStoreView"
          ],
          "Resource": "acs:log:*:*:/project/${projectName}/storeview/*"
          }
  2. 单击另存为数据集

  3. 在弹出的对话框中,输入Storeview 名称

  4. 单击确定

配额与限制

  • Project 范围:仅支持查询同一个 Project 内的多个 Logstore。

  • Logstore 数量:单次查询最多支持 50 个 Logstore。

  • 权限要求:执行查询的 RAM 用户或 RAM 角色必须拥有所有被选 Logstore 的 log:GetLogStoreLogs 权限。任意 Logstore 权限不足,整个查询都将失败。

  • 索引要求:所有被选 Logstore 都必须开启索引。如果查询语句中的字段在某个 Logstore 中未配置索引,查询将失败并报错 index not configured for field

计费说明

多库查询分析功能本身不产生额外费用。

常见问题

Q:查询报错 Query failed, index not configured for field: [xxx] 怎么办?

A:此错误表示查询语句中使用的字段 xxx 未在全部 Logstore 中配置字段索引。请根据错误提示,检查并为相关 Logstore 的该字段开启索引和统计功能。

Q:为什么查询失败,提示权限不足?

A:多库查询分析要求您对所有选择的 Logstore 都具有读取权限。请参考本文“步骤一:授予 RAM 用户查询权限”的指引,确保您的 RAM 用户或 RAM 角色拥有所有目标 Logstore 的读取权限。

排查建议:可以尝试逐一减少 Logstore 的方式进行查询,以定位到具体是哪个 Logstore 存在权限问题。

Q:如何对分布在不同 Project 的 Logstore 进行联合查询?

A:多库查询分析功能仅支持同一个 Project 内的 Logstore。如果您的 Logstore 分布在不同 Project,建议您使用跨域查询与分析