查詢指定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. | 內部服務調用錯誤。 |
更多信息,請參見通用錯誤碼。