查询数据
在 IBM Cloud Logs中,可以使用 Lucene 查询,DataPrime 查询或直接从 IBM Cloud Object Storage (COS) 存储区查询日志数据。 您还可以将过滤器应用于查询。
从 UI 查询数据
在“浏览 日志”页面中,您可以:
过滤可以与使用 Lucene 或 DataPrime 的搜索结合使用。
定义查询后,可以通过创建视图来保存该查询以供将来复用。 有关更多信息,请参阅 创建定制视图。
查询 优先级洞察 数据时的注意事项
在 IBM Cloud Logs 优先级洞察 管道中查询日志数据时存在一些注意事项:
-
将对 优先级洞察 管道 中的日志建立索引。 如果实例达到其最大已建立索引的字段数,那么其他字段将不可用于查询。 有关建立索引和数据映射的更多信息,请参阅 了解建立索引和字段映射。
-
当通过 优先级洞察 数据管道采集的数据检测到不同类型的不同日志记录发送的相同字段时,可能会发生映射异常。 映射异常使字段不可用于查询。 有关更多信息,请参阅 映射异常。
-
通过分析和警报和存储和搜索数据管道获取的日志只能 从归档文件中直接查询。
-
您可以使用 Lucene 查询或 DataPrime 查询来查询通过 优先级洞察 数据管道 采集和处理的日志。
例如,定义 Lucene 查询时,可以运行诸如自由文本搜索,常规 RegEX 表达式或使用字段搜索之类的查询。
如果您未看到期望的数据:
-
请考虑扩展查询或除去过滤器。
-
请注意,某些日志可能尚未建立索引,并且过滤器或查询将无法找到这些日志。
-
从存储区查询数据时的注意事项
您可以从“资源管理器日志”页面或通过运行归档查询来查询数据。
从数据存储区查询日志数据时存在一些注意事项:
- 数据桶中存储的数据包括通过 "优先级洞察、"分析和警报和 "存储和搜索数据管道获取的数据。 它还包括通过解析拦截规则匹配的日志,该规则启用了在实时尾部查看拦截日志并存档到IBM Cloud Object Storage选项。
- 您可以维护存储区中的数据。 您可以根据需要保留数据,并通过“日志”页面 (选择 所有日志 选项) 进行查询。
- 过滤可以与使用 Lucene 或 DataPrime 的搜索结合使用。
- 您可以使用无限制的时间范围来查询数据。 对于数据的回溯时间没有任何限制。 您会维护数据,并且只要保留数据,就会对数据进行访问。
- 您可以查询日志,而不考虑日志优先级和每日配额。 仅阻止的日志不会发送到归档。
- “归档查询”允许您使用任何文本或广泛的语法查询直接从归档中查询日志。 您可以查询日志,而不考虑日志优先级,每日配额或数据的时间范围。 有关更多信息,请参阅 查询归档数据。
通过资源管理器查询数据的限制
在 IBM® Cloud Logs中查询数据时存在限制。
查询限制
查询中的字符
查询中可包含的字符数有限制。
-
日志 "视图中的查询最多可包含 3000 个字符。
-
警报查询定义中最多可包含 65,535 个字符。 警报查询定义也限制为最多 50 个
AND和OR语句。
关键词类型
关键词代表在编制索引前未通过分析器的文本。 这种数据类型适用于正则表达式、聚合和排序。
在查询中使用关键字数据类型的语法是:<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 分钟的查询执行 |
在查询归档数据时,您还需要注意以下事项:
优化归档查询结果
您可以使用以下方法来优化查询结果:
使用 CLI 查询日志数据
使用 CLI 查询日志数据有两种方法:
querybackground-query-create
background-query-create 命令运行异步查询,而 query 运行同步查询。
后台查询可让您运行查询,并在稍后时间点获取结果。 查询结果准备就绪后,您可以使用 CLI 或 API 以文件形式下载结果。
后台查询最多可返回 1M 条记录。 query 命令仅限于返回 50K 记录。
查询 CLI 仅支持 logs-raw、logs-prettify 和 json 作为输出。 默认值为 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(字符串)-
查询的语法。 允许值为:
lucene和dataprime。 --since(持续时间)-
查询数据时从当前时间开始回溯的持续时间。 使用该标记可覆盖
metadata-start-date和metadata-end-date。 例如,1h可检索过去一小时的数据(默认为1h0m0s)。 --tier(字符串)-
运行查询的层级。 允许值为
archive,frequent_search( 优先级洞察 ). --output(字符串)-
返回结果的输出格式。 有效值为
logs-raw、logs-prettify和json。
示例
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(字符串)-
查询的语法。 允许值为:
lucene和dataprime。 --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,tui或table。 默认值为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