查询指定Project下某个Logstore中的日志数据。
接口说明
- 请求语法中 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 秒左右。
- 日志服务提供 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
请求参数
名称 | 类型 | 必填 | 描述 | 示例值 |
---|---|---|---|---|
project | string | 是 | Project 名称。 | ali-test-project |
logstore | string | 是 | 查询 Logstore 中的数据。 | example-logstore |
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 | long | 否 | 仅当 query 参数为查询语句时,该参数有效,表示请求返回的最大日志条数。最小值为 0,最大值为 100,默认值为 100。分页查询请参见分页显示查询分析结果。 | 100 |
offset | long | 否 | 仅当 query 参数为查询语句时,该参数有效,表示查询开始行。默认值为 0。分页查询请参见分页显示查询分析结果。 | 0 |
reverse | boolean | 否 | 用于指定返回结果是否按日志时间戳降序返回日志,精确到分钟级别。
注意
| false |
powerSql | boolean | 否 | 是否使用 SQL 独享版。更多信息,请参见开启 SQL 独享版。
除通过 powerSql 参数配置 SQL 独享版外,您还可以使用 query 参数。 | false |
返回参数
示例
正常返回示例
JSON
格式
[
{
"test": "test",
"test2": 1
}
]
错误码
访问错误中心查看更多错误码。
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,通过 SQL 语句的 LIMIT 语法实现翻页。 query 参数中的 SQL 语句存在问题时,您可以参见查询与分析日志的常见报错进行排查。 |
500 | InternalServerError | Specified Server Error Message. | 内部服务调用错误。 |
更多信息,请参见通用错误码。