查询数据

在 IBM Cloud Logs中,可以使用 Lucene 查询,DataPrime 查询或直接从 IBM Cloud Object Storage (COS) 存储区查询日志数据。 您还可以将过滤器应用于查询。

从 UI 查询数据

在“浏览 日志”页面中,您可以:

过滤可以与使用 LuceneDataPrime 的搜索结合使用。

定义查询后,可以通过创建视图来保存该查询以供将来复用。 有关更多信息,请参阅 创建定制视图

从存储区查询数据时的注意事项

您可以从“资源管理器日志”页面或通过运行归档查询来查询数据。

从数据存储区查询日志数据时存在一些注意事项:

  • 数据桶中存储的数据包括通过 "优先级洞察、"分析和警报和 "存储和搜索数据管道获取的数据。 它还包括通过解析拦截规则匹配的日志,该规则启用了在实时尾部查看拦截日志并存档到IBM Cloud Object Storage选项。
  • 您可以维护存储区中的数据。 您可以根据需要保留数据,并通过“日志”页面 (选择 所有日志 选项) 进行查询。
  • 过滤可以与使用 LuceneDataPrime 的搜索结合使用。
  • 您可以使用无限制的时间范围来查询数据。 对于数据的回溯时间没有任何限制。 您会维护数据,并且只要保留数据,就会对数据进行访问。
  • 您可以查询日志,而不考虑日志优先级和每日配额。 仅阻止的日志不会发送到归档。
  • “归档查询”允许您使用任何文本或广泛的语法查询直接从归档中查询日志。 您可以查询日志,而不考虑日志优先级,每日配额或数据的时间范围。 有关更多信息,请参阅 查询归档数据

通过资源管理器查询数据的限制

在 IBM® Cloud Logs中查询数据时存在限制。

查询限制

查询中的字符

查询中可包含的字符数有限制。

  • 日志 "视图中的查询最多可包含 3000 个字符。

  • 警报查询定义中最多可包含 65,535 个字符。 警报查询定义也限制为最多 50 个 ANDOR 语句。

关键词类型

关键词代表在编制索引前未通过分析器的文本。 这种数据类型适用于正则表达式、聚合和排序。

在查询中使用关键字数据类型的语法是:<fieldName>.keyword

IBM Cloud Logs 当字段长度超过 256 个字符时,无法创建关键字类型。

返回的结果

从查询返回的最大行数取决于您是从 优先级洞察 或存储在 IBM Cloud Object Storage中的数据进行查询。

  • 从 优先级洞察 返回的最大结果数为 12 K。
  • 从 IBM Cloud Object Storage (使用所有日志进行查询)返回的结果数最多为 50 K。

扫描的字节数

最多扫描 100 MB 以获取 优先级洞察 数据。 扫描存储在 IBM Cloud Object Storage 中的数据时,不存在任何限制。

速率限制

每分钟最多可提交 10 个查询。

超过速率限制时,将返回 HTTP 429。

归档查询限制

以下是对查询的限制。

存档查询限制
限制 描述
已处理的字节数 最多 30% 的每日摄入字节
Parquet 文件 最多扫描 500K 个文件
克隆结果 运行归档查询时最多 1M 个结果
超时 最多 5 分钟的查询执行

在查询归档数据时,您还需要注意以下事项:

  • 可以在“归档查询”页面上使用相同的查询语法 (LuceneDataPrime)。

  • 与其他 Explore 查询相比,查询归档数据时可能会出现轻微延迟。

  • 达到限制后,将显示一条警告消息。 优化查询结果以避免达到限制。

优化归档查询结果

您可以使用以下方法来优化查询结果:

  • 将更多选择性过滤器应用于查询 (例如,应用程序或子系统)。

  • 如果使用 DataPrime extract 运算符并随后对其结果进行过滤,请改为创建解析规则并对解析的字段进行过滤。

  • 避免在过滤器中使用正则表达式或通配符。

  • DataPrime 中,从对字符串使用包含操作符切换到自由文本搜索操作符 (~)。

使用 CLI 查询日志数据

使用 CLI 查询日志数据有两种方法:

  • query
  • background-query-create

background-query-create 命令运行异步查询,而 query 运行同步查询。

后台查询可让您运行查询,并在稍后时间点获取结果。 查询结果准备就绪后,您可以使用 CLI 或 API 以文件形式下载结果。

后台查询最多可返回 1M 条记录。 query 命令仅限于返回 50K 记录。

查询 CLI 仅支持 logs-rawlogs-prettifyjson 作为输出。 默认值为 logs-raw

运行同步查询

您可以通过运行 ibmcloud logs query 命令来同步查询日志数据。

ibmcloud logs query --query QUERY --syntax QUERY_SYNTAX --metadata '{"start_date": START-DATE, "end_date": c, "syntax": SYNTAX , "limit": LIMIT, "strict-fields-validation": STRICT-FIELDS-VALIDATION, "tier": TIER}'

ibmcloud logs query --query QUERY --syntax QUERY_SYNTAX --start-date START-DATE --end-date END-DATE --syntax SYNTAX --limit 10

命令选项

--query (字符串)

要运行的查询。 这是必需参数。

查询语法可以是 Lucene 或 Dataprime。 查询的语法或类型通过 --syntax 参数设置。

--metadata (字符串)

查询执行的元数据。 使用此配置提供查询执行参数。

--start-date (字符串)

查询时间范围的起始点。 必须使用 UTC ISO 8601 格式,例如:2025-07-15T08:45:00Z。 默认值为 --end-date 值之前的 15 分钟。 如果未指定 --end-date,默认值为当前时间前 15 分钟。

--end-date (字符串)

查询时间范围的终点。 必须使用 UTC ISO 8601 格式,例如:2025-07-15T08:45:00Z。 默认值为 --start-date 值后 15 分钟。 如果未定义 --start-date,则 --end-date 为当前时间,--start-date 为当前时间前 15 分钟。

--limit (int)

限制返回记录的数量。 如果未指定,默认值为 2000。 搜索 优先级洞察 时返回的记录数最多为 12000 条。 否则,返回的最大记录数为:50000。

--syntax (字符串)

查询的语法。 允许值为:lucenedataprime

--since (持续时间)

查询数据时从当前时间开始回溯的持续时间。 使用该标记可覆盖 metadata-start-datemetadata-end-date。 例如,1h 可检索过去一小时的数据(默认为 1h0m0s )。

--tier (字符串)

运行查询的层级。 允许值为 archive, frequent_search ( 优先级洞察 ).

--output (字符串)

返回结果的输出格式。 有效值为 logs-rawlogs-prettifyjson

示例

ibmcloud logs query --query "Push and Query test" --metadata '{"start_date": "2025-06-16T12:00:00Z", "end_date": "2025-06-17T13:41:30Z","syntax": "lucene"}' --output logs-raw

query 命令还支持 metadata 参数之外的 --start-date--end-date--syntax。 例如:

ibmcloud logs query --query "source logs | filter \$d.text == 'Push and Query test'" --syntax dataprime --start-date 2025-08-03T12:00:00Z  --end-date 2025-08-04T13:41:30Z

运行后台查询

您可以异步查询日志数据。

首先,您要提交一份背景调查。 然后,您就可以在其他命令中使用该 ID。

 ibmcloud logs background-query-create --query QUERY --syntax SYNTAX [--start-date START-DATE] [--end-date END-DATE] [--now-date NOW-DATE]

命令选项

--query (字符串)

要运行的查询。 这是必需参数。

查询语法可以是 Lucene 或 Dataprime。 查询的语法或类型通过 --syntax 参数设置。

--syntax (字符串)

查询的语法。 允许值为:lucenedataprime

--start-date (字符串)

查询时间范围的起始点。 必须使用 UTC ISO 8601 格式,例如:2025-07-15T08:45:00Z。 默认值为 --end-date 值之前的 15 分钟。 如果未指定 --end-date,默认值为当前时间前 15 分钟。

--end-date (字符串)

查询时间范围的终点。 必须使用 UTC ISO 8601 格式,例如:2025-07-15T08:45:00Z。 默认值为 --start-date 值后 15 分钟。 如果未定义 --start-date,则 --end-date 为当前时间,--start-date 为当前时间前 15 分钟。

示例

ibmcloud logs background-query-create --query "Push and Query test" --syntax lucene --start-date 2025-06-16T12:00:00Z --end-date 2025-06-17T13:41:30Z

使用 DataPrime 语法的示例

ibmcloud logs background-query-create --query "source logs | filter \$d.text == 'Push and Query test'" --syntax dataprime --start-date 2025-08-03T12:00:00Z

确定后台查询的状态

您可以通过运行 后台 查询命令时返回的 ID 来确定后台查询的状态。

ibmcloud logs background-query-status --query-id QUERY-ID

命令选项

--query-id (strfmt.UUID)

后台查询 命令返回的查询 ID。 必需。

该值长度为 36 个字符,必须与正则表达式 /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/ 匹配。

示例

ibmcloud logs background-query-status --query-id 8b5e7151-da2b-4633-be8c-9b269bed2c81

检索后台查询结果

您可以使用运行 后台 查询命令时返回的 ID 来检索后台查询的查询结果。

ibmcloud logs background-query-data --query-id QUERY-ID --output OUTPUT

命令选项

--query-id (strfmt.UUID)

后台查询 命令返回的查询 ID。 必需。

该值长度为 36 个字符,必须与正则表达式 /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/ 匹配。

--output-file (字符串)

指定写入输出的文件路径。

--output (字符串)

返回结果的输出格式。 有效值为 logs-raw, logs-prettify, json, yaml, tuitable。 默认值为 table

示例

ibmcloud logs background-query-data --query-id df47fff7-131d-41dc-9328-05489a93e27c --output logs-raw

取消后台查询

您可以使用运行后台 查询 命令时返回的 ID 取消后台查询。

ibmcloud logs background-query-cancel --query-id QUERY-ID --force

命令选项

--query-id (strfmt.UUID)

后台查询 命令返回的查询 ID。 必需。

该值长度为 36 个字符,必须与正则表达式 /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/ 匹配。

--force|-f

运行命令,不再提示用户。

示例

ibmcloud logs background-query-cancel --query-id df47fff7-131d-41dc-9328-05489a93e27c