文档

GetLogs - 查询日志库日志

更新时间:

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

接口说明

说明 日志服务支持创建定时 SQL 任务。具体操作,请参见创建定时 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 秒),则为历史数据。

调试

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

授权信息

下表是API对应的授权信息,可以在RAM权限策略语句的Action元素中使用,用来给RAM用户或RAM角色授予调用此API的权限。具体说明如下:

  • 操作:是指具体的权限点。
  • 访问级别:是指每个操作的访问级别,取值为写入(Write)、读取(Read)或列出(List)。
  • 资源类型:是指操作中支持授权的资源类型。具体说明如下:
    • 对于必选的资源类型,用背景高亮的方式表示。
    • 对于不支持资源级授权的操作,用全部资源表示。
  • 条件关键字:是指云产品自身定义的条件关键字。
  • 关联操作:是指成功执行操作所需要的其他权限。操作者必须同时具备关联操作的权限,操作才能成功。
操作访问级别资源类型条件关键字关联操作
log:GetLogStoreLogsRead
  • LogStore
    acs:log:{#regionId}:{#accountId}:project/{#ProjectName}/logstore/{#LogstoreName}
  • log:TLSVersion

请求语法

GET /logstores/{logstore}?type=log

请求参数

名称类型必填描述示例值
projectstring

Project 名称。

ali-test-project
logstorestring

查询 Logstore 中的数据。

example-logstore
frominteger

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

  • 请求参数 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
tointeger

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

  • 请求参数 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
querystring

查询语句或者分析语句。更多信息,请参见查询概述分析概述。 在 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
topicstring

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

topic
linelong

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

100
offsetlong

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

0
reverseboolean

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

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

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

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

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

    false

    返回参数

    名称类型描述示例值
    headersobject
    x-log-progressstring

    查询结果的状态,包括:

    • Complete:本次查询已经完成,返回结果为完整结果。
    • Incomplete:本次查询已经完成,返回结果为不完整结果,需要重复请求以获得完整结果。
    说明 获取日志总条数,您可以使用*|select count(*) as count获取,也可以使用 GetHistogram 接口获取每个区间内日志条数后自行累加。如果不需要获取日志总条数,可修改接口中 offset 后多次执行查询,当状态为 Complete 且返回的行数小于请求的行数时,表示已读完全部数据。
    Complete
    x-log-countlong

    本次查询请求返回的日志行数。

    说明 返回参数中不支持查询满足条件的日志总条数。您可以通过查询语句查询满足条件的日志总条数。例如request_method:GET|select count(*) as count用于查询 request_method 为 GET 的日志总条数。更多信息,请参见查询与分析最佳实践使用 Java SDK 查询和分析日志示例
    100
    x-log-processed-rowslong

    本次查询处理的行数。

    10000
    x-log-elapsed-millisecondlong

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

    5
    Serverstring

    服务器名称。

    nginx
    Content-Typestring

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

    application/json
    Content-Lengthstring

    响应内容长度。

    0
    Connectionstring

    是否长链接。取值包括:

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

    返回响应的时间。

    Sun, 27 May 2018 08:25:04 GMT
    x-log-requestidstring

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

    5B0A6B60BB6EE39764D458B5
    object []

    日志数组 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
      }
    ]

    错误码

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

    HttpStatusCodeErrorCodeErrorMessage错误码描述
    404ProjectNotExistProject does not exist.Project 不存在。
    404LogStoreNotExistLogstore does not exist.Logstore 不存在。
    400InvalidTimeRangeRequest time range is invalid.请求的时间区间无效。
    400InvalidQueryStringQuery string is invalid.请求的查询分析语句无效。
    400InvalidOffsetOffset is invalid.请求的 offset 参数无效。
    400InvalidLineLine is invalid.请求的 line 参数无效。
    400InvalidReverseReverse value is invalid.Reverse 参数的值无效。
    400IndexConfigNotExistLogstore without index config.Logstore 未开启索引。
    400ParameterInvalidErrorType:OLSQueryParseError.ErrorMessage:offset is not available for pagination in sql query, please use limit x,y syntax for pagination.当 query 参数中有分析语句(SQL 语句)时,建议设置该接口的 line 参数和 offset 参数为 0,通过 SQL 语句的 LIMIT 语法实现翻页。
    query 参数中的 SQL 语句存在问题时,您可以参见查询与分析日志的常见报错进行排查。
    500InternalServerErrorSpecified Server Error Message.内部服务调用错误。

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

    • 本页导读
    文档反馈