调用GetLogs接口查询指定Project下某个Logstore中的日志数据。

接口说明

说明 日志服务支持创建定时托管SQL任务(Scheduled SQL)。具体操作,请参见创建Scheduled SQL作业
  • 请求语法中Host由Project名称和日志服务Endpoint构成,您需要在Host中指定Project。
  • 当查询涉及的日志数量变化非常大时,日志服务API无法预测需要调用多少次该接口来获取完整结果。所以需要您查看每次请求返回结果中的x-log-progress状态值,根据状态值来确定是否需要重复调用该接口来获取最终完整结果。每次重复调用该接口都会重新消耗相同数量的查询CU。
  • 当日志写入到Logstore中,日志服务的查询接口(GetHistograms和GetLogs)能够查到该日志的延时因写入日志类型不同而异。日志服务按日志时间戳把日志分为如下两类:
    • 实时数据:日志中时间点为服务器当前时间点(-180秒,900秒]。例如,日志时间为UTC 2014-09-25 12:03:00,服务器收到时为UTC 2014-09-25 12:05:00,则该日志被作为实时数据处理,一般出现在正常场景下。
    • 历史数据:日志中时间点为服务器当前时间点[-7x86400秒,-180秒)。例如,日志时间为UTC 2014-09-25 12:00:00,服务器收到时为UTC 2014-09-25 12:05:00,则该日志被作为历史数据处理,一般出现在补数据场景下。

      其中,实时数据写入至可查询的最大延时为3秒,99.9%情况下1秒内即可查询完毕。

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

请求头

该接口使用公共请求头,无特殊请求头。请参见公共请求参数文档。

请求语法

GET /logstores/{logstore}/index HTTP/1.1

请求参数

名称 类型 位置 是否必选 示例值 描述
type String Query log

查询Logstore数据的类型。在该接口中固定取值为log

from Long Query 1627268185

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

  • 请求参数fromto定义的时间区间遵循左闭右开原则,即该时间区间包括区间开始时间点,但不包括区间结束时间点。如果fromto的值相同,则为无效区间,函数直接返回错误。
  • Unix时间戳格式,表示从1970-1-1 00:00:00 UTC计算起的秒数。
to Long Query 1627269085

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

  • 请求参数fromto定义的时间区间遵循左闭右开原则,即该时间区间包括区间开始时间点,但不包括区间结束时间点。如果fromto的值相同,则为无效区间,函数直接返回错误。
  • Unix时间戳格式,表示从1970-1-1 00:00:00 UTC计算起的秒数。
query String Query status: 401 | SELECT remote_addr,COUNT(*) as pv GROUP by remote_addr ORDER by pv desc limit 5

查询语句或者分析语句。更多信息,请参见查询概述分析概述

在query参数的分析语句中加上set session parallel_sql=true;,表示使用SQL独享版。例如* | set session parallel_sql=true; select count(*) as pv

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

日志主题。默认值为双引号("")。更多信息,请参见日志主题(Topic)

line Long Query 100

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

offset Long Query 0

仅当query参数为查询语句时,该参数有效,表示查询开始行。默认值为0。

reverse Boolean Query false

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

  • true:按照日志时间戳降序返回日志。
  • false(默认值):按照日志时间戳升序返回日志。
注意
  • 当query参数为查询语句时,参数reverse有效,用于指定返回日志排序方式。
  • 当query参数为查询和分析语句时,参数reverse无效,由SQL分析语句中order by语法指定排序方式。如果order by为asc(默认),则为升序;如果order by为desc,则为降序。
powerSql Boolean Query false

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

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

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

返回数据

名称 类型 示例值 描述
x-log-progress String Complete

查询结果的状态,包括: Complete:查询已经完成,返回结果为完整结果。 Incomplete:查询已经完成,返回结果为不完整结果,需要重复请求以获得完整结果。

x-log-count Long 10000

当前查询结果的日志总数。

x-log-processed-rows Long 10000

本次查询处理的行数。

x-log-elapsed-millisecond Long 5

本次查询消耗的毫秒时间。

Server String nginx

服务器名称。

Content-Type String application/json

返回的响应体的内容格式。

Content-Length String 0

响应内容长度。

Connection String close

是否长链接。取值包括: close:不是长链接,则每个HTTP请求都会重新建立TCP连接。 keep-alive:长链接,TCP连接建立后保持连接状态,节省连接所需时间和带宽。

Date String Sun, 27 May 2018 08:25:04 GMT

返回响应的时间。

x-log-requestid String 5B0A6B60BB6EE39764D458B5

服务端产生的标识,该请求的唯一ID。

Array of Object

示例

请求示例

GET /logstores/{logstoreName}/index?type=log&from=1627268185&to=1627269085&topic=topic&query=status: 401 | SELECT remote_addr,COUNT(*) as pv GROUP by remote_addr ORDER by pv desc limit 5&line=100&offset=0&reverse=false&powerSql=false HTTP/1.1
Host:ali-test-project.cn-hangzhou.log.aliyuncs.com
Content-Type:application/json

请求示例补充说明

### 原始日志示例
```json
    {
    	"remote_addr": "203.0.*.*",
    	"__time__": 1649904328,
    	"__topic__": "nginx_access_log",
    	"__source__": "127.0.0.1",
    	"body_bytes_sent": "3841",
    	"__tag__:__receive_time__": "1649904334",
    	"time_local": "14/Apr/2022:02:45:28",
    	"request_method": "HEAD",
    	"request_uri": "/request/path-2/file-2",
    	"http_user_agent": "Mozilla/5.0 (Windows NT 6.2; Win64; x64; rv:21.0.0) Gecko/20121011 Firefox/21.0.0",
    	"remote_user": "jlqd8",
    	"request_time": "17",
    	"__pack_meta__": "1|MTYyODY2Mjk0NzQ1ODU1Mjk4Mg==|197|165",
    	"request_length": "4184",
    	"http_referer": "www.example.com",
    	"__tag__:__receive_time___0": "1649904334",
    	"host": "www.example.com",
    	"http_x_forwarded_for": "198.51.100.48",
    	"upstream_response_time": "0.23",
    	"status": "401"
    }
```

正常返回示例

JSON格式

HTTP/1.1 200 OK
Content-Type:application/json

{
  "x-log-progress" : "Complete",
  "x-log-count" : 5,
  "logs" : "[{'remote_addr': '198.51.100.232', 'pv': '1', '__source__': '', '__time__': '1649902984'}, {'remote_addr': '198.51.100.194', 'pv': '1', '__source__': '', '__time__': '1649902984'}, {'remote_addr': '198.51.100.231', 'pv': '1', '__source__': '', '__time__': '1649902984'}, {'remote_addr': '198.51.100.183', 'pv': '1', '__source__': '', '__time__': '1649902984'}, {'remote_addr': '198.51.100.88', 'pv': '1', '__source__': '', '__time__': '1649902984'}]"
}

错误码

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

HttpStatusCode

ErrorCode

ErrorMessage

错误码描述

404

ProjectNotExist

Project does not exist.

Project不存在。

404

LogStoreNotExist

Logstore does not exist.

Logstore不存在。

400

InvalidTimeRange

Request time range is invalid.

请求的时间区间无效。

400

InvalidQueryString

Query string is invalid.

请求的查询分析语句无效。

400

InvalidOffset

Offset is invalid.

请求的offset参数无效。

400

InvalidLine

Line is invalid.

请求的line参数无效。

400

InvalidReverse

Reverse value is invalid.

Reverse参数的值无效。

400

IndexConfigNotExist

Logstore without index config.

Logstore未开启索引。

400

ParameterInvalid

ErrorType:OLSQueryParseError.ErrorMessage:offset is not available for pagination in sql query, please use limit x,y syntax for pagination.

当query参数中有分析语句(SQL语句)时,line和offset参数需要设置为0,通过LIMIT语法翻页;query参数中SQL语句存在问题,请检查修改后重试。

500

InternalServerError

Specified Server Error Message.

内部服务调用错误。

更多信息,请参见通用错误码