GetLogs - 查询日志库日志

查询指定Project下某个Logstore中的日志数据。

接口说明

接口说明

说明

日志服务支持创建定时 SQL 任务。具体操作,请参见创建定时 SQL 任务

  • 请求语法中 Host 由 Project 名称和日志服务 Endpoint 构成,您需要在 Host 中指定 Project。

  • 已创建并获取 AccessKey。更多信息,请参见访问密钥

阿里云账号 AccessKey 拥有所有 API 的访问权限,风险很高。强烈建议您创建并使用 RAM 用户进行 API 访问或日常运维。RAM 用户需具备操作日志服务资源的权限。具体操作,请参见创建 RAM 用户及授权

  • 已明确您查询日志所属的 Project 名称、所属地域、Logstore 名称等。如何查询,请参见管理 Project管理 Logstore

  • 日志服务查询日志时存在使用限制。请设计合理查询与分析语句、设置合理查询区间等。更多信息,请参见查询日志使用限制分析日志使用限制

  • 查询日志前,已配置索引。具体操作,请参见创建索引

  • 当查询涉及的日志数量变化非常大时,日志服务 API 无法预测需要调用多少次该接口来获取完整结果。所以需要您查看每次请求返回结果中的 x-log-progress 状态值,根据状态值来确定是否需要重复调用该接口来获取最终完整结果。每次重复调用该接口都会重新消耗相同数量的查询 CU。

  • 当日志写入到 Logstore 中,日志服务的查询接口(GetHistograms 和 GetLogs)能够查到该日志的延时因写入日志类型不同而异。日志服务按日志时间戳把日志分为如下两类:

    • 实时数据:日志中时间点为服务器当前时间点(-180 秒,900 秒]。例如,日志时间为 UTC 2014-09-25 12:03:00,服务器收到时为 UTC 2014-09-25 12:05:00,则该日志被作为实时数据处理,一般出现在正常场景下。

    • 历史数据:日志中时间点为服务器当前时间点[-7*86400 秒,-180 秒)。例如,日志时间为 UTC 2014-09-25 12:00:00,服务器收到时为 UTC 2014-09-25 12:05:00,则该日志被作为历史数据处理,一般出现在补数据场景下。 其中,实时数据写入至可查询的延时为 3 秒左右。

说明

日志服务将日志时间(字段名称为__time__)和服务器收到时间(字段名称为__tag__:receive_time)做差,若其差值位于(-180 秒,900 秒]范围,则为实时数据,若其差位于[-7x86400 秒,-180 秒),则为历史数据。

鉴权资源

下表列出了 API 对应的授权信息。您可以在 RAM 权限策略语句的 Action 元素中添加该信息,用于为 RAM 用户或 RAM 角色授予调用此 API 的权限。

动作(Action)授权策略中的资源描述方式(Resource)
log:GetLogStoreLogsacs:log:{#regionId}:{#accountId}:project/{#ProjectName}/logstore/{#LogstoreName}

调试

您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。

调试

授权信息

当前API暂无授权信息透出。

请求语法

GET /logstores/{logstore}?type=log HTTP/1.1

路径参数

名称

类型

必填

描述

示例值

logstore

string

查询 Logstore 中的数据。

example-logstore

请求参数

名称

类型

必填

描述

示例值

project

string

Project 名称。

ali-test-project

from

integer

查询开始时间点。该时间是指写入日志数据时指定的日志时间。

  • 请求参数 fromto 定义的时间区间遵循左闭右开原则,即该时间区间包括区间开始时间点,但不包括区间结束时间点。如果 fromto 的值相同,则为无效区间,函数直接返回错误。

  • Unix 时间戳格式,表示从 1970-1-1 00:00:00 UTC 计算起的秒数。

说明

如果您要确保不漏查数据,请将查询时间对齐到分钟级别。如果您在分析语句中设置了时间范围,则查询分析时以该时间范围为准。

如果您需要精确到秒,需要在分析语句中指定时间时,使用from_unixtime 函数to_unixtime 函数转换下时间格式。例如:

  • * | SELECT * FROM log WHERE from_unixtime(__time__) > from_unixtime(1664186624) AND from_unixtime(__time__) < now()

  • * | SELECT * FROM log WHERE __time__ > to_unixtime(date_parse('2022-10-19 15:46:05', '%Y-%m-%d %H:%i:%s')) AND __time__ < to_unixtime(now())

1627268185

to

integer

查询结束时间点。该时间是指写入日志数据时指定的日志时间。

  • 请求参数 fromto 定义的时间区间遵循左闭右开原则,即该时间区间包括区间开始时间点,但不包括区间结束时间点。如果 fromto 的值相同,则为无效区间,函数直接返回错误。

  • Unix 时间戳格式,表示从 1970-1-1 00:00:00 UTC 计算起的秒数。

说明

如果您要确保不漏查数据,请将查询时间对齐到分钟级别。如果您在分析语句中设置了时间范围,则查询分析时以该时间范围为准。

如果您需要精确到秒,需要在分析语句中指定时间时,使用from_unixtime 函数to_unixtime 函数转换下时间格式。例如:

  • * | SELECT * FROM log WHERE from_unixtime(__time__) > from_unixtime(1664186624) AND from_unixtime(__time__) < now()

  • * | SELECT * FROM log WHERE __time__ > to_unixtime(date_parse('2022-10-19 15:46:05', '%Y-%m-%d %H:%i:%s')) AND __time__ < to_unixtime(now())

1627269085

query

string

查询语句或者分析语句。更多信息,请参见查询概述分析概述。 在 query 参数的分析语句中加上set session parallel_sql=true;,表示使用 SQL 独享版。例如* | set session parallel_sql=true; select count(*) as pv 。常见查询与分析问题,请参见查询与分析日志的常见报错

说明

当 query 参数中有分析语句(SQL 语句)时,该接口的 line 参数和 offset 参数无效,建议设置该接口的参数为 0,需通过 SQL 语句的 LIMIT 语法实现翻页。更多信息,请参见分页显示查询分析结果

status: 401 | SELECT remote_addr,COUNT(*) as pv GROUP by remote_addr ORDER by pv desc limit 5

topic

string

日志主题。默认值为空字符串。更多信息,请参见日志主题(Topic)

topic

line

integer

仅当 query 参数为查询语句时,该参数有效,表示请求返回的最大日志条数。最小值为 0,最大值为 100,默认值为 100。分页查询请参见分页显示查询分析结果

100

offset

integer

仅当 query 参数为查询语句时,该参数有效,表示查询开始行。默认值为 0。分页查询请参见分页显示查询分析结果

0

reverse

boolean

用于指定返回结果是否按日志时间戳降序返回日志,精确到分钟级别。

  • true:按照日志时间戳降序返回日志。

  • false(默认值):按照日志时间戳升序返回日志。

重要
  • 当 query 参数为查询语句时,参数 reverse 有效,用于指定返回日志排序方式。

  • 当 query 参数为查询和分析语句时,参数 reverse 无效,由 SQL 分析语句中 order by 语法指定排序方式。如果 order by 为 asc(默认),则为升序;如果 order by 为 desc,则为降序。

false

powerSql

boolean

是否使用 SQL 独享版。更多信息,请参见开启 SQL 独享版

  • true:使用 SQL 独享版。

  • false(默认值):使用 SQL 普通版。

除通过 powerSql 参数配置 SQL 独享版外,您还可以使用 query 参数。

false

返回参数

名称

类型

描述

示例值

array

日志数组 Logs。其每个元素就是一条 Log。

object

日志数组 Logs,其每个元素就是一条 Log。

[{'remote_addr': '198.51.XXX.XXX', 'pv': '1', '__source__': '', '__time__': '1649902984'}, {'remote_addr': '198.51.XXX.XXX', 'pv': '1', '__source__': '', '__time__': '1649902984'}, {'remote_addr': '198.51.XXX.XXX', 'pv': '1', '__source__': '', '__time__': '1649902984'}, {'remote_addr': '198.51.XXX.XXX', 'pv': '1', '__source__': '', '__time__': '1649902984'}, {'remote_addr': '198.51.100.XXX', 'pv': '1', '__source__': '', '__time__': '1649902984'}]

示例

正常返回示例

JSON格式

[
  {
    "test": "test",
    "test2": 1
  }
]

错误码

访问错误中心查看更多错误码。

变更历史

更多信息,参考变更详情