查询指定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 秒),则为历史数据。
- 日志服务提供 Java 和 Python SDK 的 GetLogs 查询使用示例。更多信息,请参见Java GetLogs 使用示例和Python GetLogs 使用示例。 
鉴权资源
下表列出了 API 对应的授权信息。您可以在 RAM 权限策略语句的 Action 元素中添加该信息,用于为 RAM 用户或 RAM 角色授予调用此 API 的权限。
| 动作(Action) | 授权策略中的资源描述方式(Resource) | 
| log:GetLogStoreLogs | acs:log:{#regionId}:{#accountId}:project/{#ProjectName}/logstore/{#LogstoreName} | 
调试
您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。
 调试
        
            调试
        
    
授权信息
请求语法
GET /logstores/{logstore}?type=log HTTP/1.1路径参数
| 名称 | 类型 | 必填 | 描述 | 示例值 | 
| logstore | string | 是 | 查询 Logstore 中的数据。 | example-logstore | 
请求参数
| 名称 | 类型 | 必填 | 描述 | 示例值 | 
| project | string | 是 | Project 名称。 | ali-test-project | 
| from | integer | 是 | 查询开始时间点。该时间是指写入日志数据时指定的日志时间。 
 说明 
 如果您要确保不漏查数据,请将查询时间对齐到分钟级别。如果您在分析语句中设置了时间范围,则查询分析时以该时间范围为准。 如果您需要精确到秒,需要在分析语句中指定时间时,使用from_unixtime 函数或to_unixtime 函数转换下时间格式。例如: 
 | 1627268185 | 
| to | integer | 是 | 查询结束时间点。该时间是指写入日志数据时指定的日志时间。 
 说明 
 如果您要确保不漏查数据,请将查询时间对齐到分钟级别。如果您在分析语句中设置了时间范围,则查询分析时以该时间范围为准。 如果您需要精确到秒,需要在分析语句中指定时间时,使用from_unixtime 函数或to_unixtime 函数转换下时间格式。例如: 
 | 1627269085 | 
| query | string | 否 | 查询语句或者分析语句。更多信息,请参见查询概述和分析概述。
在 query 参数的分析语句中加上 说明 
 当 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 | 否 | 用于指定返回结果是否按日志时间戳降序返回日志,精确到分钟级别。 
 重要  
 
 | false | 
| powerSql | boolean | 否 | 是否使用 SQL 独享版。更多信息,请参见开启 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
  }
]错误码
访问错误中心查看更多错误码。
变更历史
更多信息,参考变更详情。