閱讀138 返回首頁    go iPhone_iPad_Mac_apple


GetLogs__日誌庫相關接口_API-Reference_日誌服務-阿裏雲

GetLogs接口查詢指定Project下某個Logstore中日誌數據。還可以通過指定相關參數僅查詢符合指定條件的日誌數據。

當日誌寫入到Logstore中,日誌服務的查詢接口(GetHistograms和GetLogs)能夠查到該日誌的延時因寫入日誌類型不同而異。日誌服務按日誌時間戳把日誌分為如下兩類:

  • 實時數據:日誌中時間點為服務器當前時間點(-180秒,900秒],例如日誌時間為UTC 2014-09-25 12:03:00,服務器收到時UTC 2014-09-25 12:05:00,則該日誌被作為實時數據處理,一般出現在正常場景下。
  • 曆史數據:日誌中時間點為服務器當前時間點[-7 x 86400秒, -180秒),例如日誌時間為UTC 2014-09-25 12:00:00,服務器收到時UTC 2014-09-25 12:05:00,則該日誌被作為曆史數據處理,一般出現在補數據場景下。

其中實時數據寫入至可查詢的延時為1分鍾。

請求語法

GET /logstores/<logstorename>?type=histogram&topic=<logtopic>&from=<starttime>&to=<endtime>&query=<querystring>&line=<linenum>&offset=<startindex>&reverse=<ture|false> HTTP/1.1
Authorization: <AuthorizationString>
Date: <GMT Date>
Host: <Project Endpoint>
x-log-bodyrawsize: 0
x-log-apiversion: 0.6.0
x-log-signaturemethod: hmac-sha1

請求參數

名稱 類型 必選 描述
logstorename 字符串 需要查詢日誌的Logstore名稱。
type 字符串 查詢Logstore數據的類型,在GetLogs接口中該參數必須為"log"。
from 整型 查詢開始時間點(精度為秒,從1970-1-1 00:00:00 UTC計算起的秒數)。
to 整型 查詢結束時間點(精度為秒,從1970-1-1 00:00:00 UTC計算起的秒數)。
topic 字符串 查詢日誌主題。
query 字符串 查詢表達式。關於查詢表達式的詳細語法請參考查詢語法
line 整型 請求返回的最大日誌條數。取值範圍0~100,默認值為100。
offset 整型 請求返回日誌的起始點。取值範圍0或正整數,默認值0。
reverse 布爾型 是否按日誌時間戳逆序返回日誌。true表示逆序,false表示順序,默認值為false。

請求頭

GetLogs接口無特有請求頭,關於日誌服務API的公共請求頭請參考公共請求頭

響應頭

GetLogs接口無特有響應頭,關於日誌服務API的公共響應頭請參考公共響應頭

響應元素

GetLogs請求成功,其響應Body會包括查詢命中的日誌數據。當需要查詢的日誌數據量非常大的時候,該接口的響應結果可能並不完整,所以響應元素中有專門成員表示請求返回結果是否完整。具體響應元素格式如下:

名稱 類型 描述
progress 字符串 查詢結果的狀態。可以有Incomplete和Complete兩個選值,表示本次是否完整。
count 整型 當前查詢結果的日誌總數
logs 數組 當前查詢結果的日誌原始數據,具體結構見下麵描述

上表中的logs數組中的每個元素結構如下:

名稱 類型 描述
__time__ 整型 日誌的時間戳(精度為秒,從1970-1-1 00:00:00 UTC計算起的秒數)。
__source__ 字符串 日誌的來源,有寫入日誌時指定。
[content] Key-Value對 日誌原始內容,以Key-value對的形式組織。

細節描述

  • 該接口中由請求參數from和to定義的時間區間遵循“左閉右開”原則,即該時間區間包括區間開始時間點,但不包括區間結束時間點。如果from和to的值相同,則為無效區間,函數直接返回錯誤。
  • 如上所述,該接口一次調用必須要在限定時間內返回結果,每次查詢隻能掃描指定條數的日誌量。如果一次請求需要處理的數據量非常大的時候,該請求會返回不完整的結果(並在返回結果中的progress成員標示是否完整)。如此同時,服務端會緩存15分鍾內的查詢結果。當查詢請求的結果有部分被緩存命中,則服務端會在這次請求中繼續掃描未被緩存命中的日誌數據。為了減少用戶合並多次查詢結果的工作量,服務端會把緩存命中的查詢結果與本次查詢新命中的結果合並返回給用戶。因此日誌服務可以讓用戶通過以相同參數反複調用該接口來獲取最終完整結果。因為用戶查詢涉及的日誌數據量變化非常大,日誌服務API無法預測需要調用多少次該接口而獲取完整結果。所以需要用戶通過檢查每次請求的返回結果中progress成員狀態值來確定是否需要繼續。需要注意的是,每次重複調用該接口都會重新消耗相同數量的查詢CU。

特有錯誤碼

GetLogs接口除了可能返回日誌服務API的通用錯誤碼,還可能返回如下特有錯誤碼:

HTTP狀態碼(Status Code) 錯誤碼(Error Code) 錯誤消息(Error Message) 描述(Description)
404 LogStoreNotExist logstore {Name} not exist. 日誌庫(Logstore)不存在。
400 InvalidTimeRange request time range is invalid. 請求的時間區間無效。
400 InvalidQueryString query string is invalided 請求的查詢字符串無效。
400 InvalidOffset offset is invalided 請求的offset參數無效。
400 InvalidLine line is invalided 請求的line參數無效。
400 InvalidReverse Reverse value is invalid Reverse參數的值無效。

上表錯誤消息中{name}表示該部分會被具體的Logstore Name來替換。

示例

以杭州Region內名為big-game的Project為例,查詢該Project內名為app_log的Logstore中,主題為groupA的日誌數據。查詢區間為2014-09-01 00:00:00到2014-09-01 22:00:00,查詢關鍵字是"error",且從時間區間頭開始查詢,最多返回20條日誌數據。

請求示例:
GET /logstores/app_log?type=log&topic=groupA&from=1409529600&to=1409608800&query=error&line=20&offset=0 HTTP/1.1
Authorization: <AuthorizationString>
Date: Wed, 3 Sept. 2014 08:33:46 GMT
Host: big-game.cn-hangzhou.log.aliyuncs.com
x-log-bodyrawsize: 0
x-log-apiversion: 0.4.0
x-log-signaturemethod: hmac-sha1
響應示例:
HTTP/1.1 200 OK
Content-MD5: 36F9F7F0339BEAF571581AF1B0AAAFB5
Content-Type: application/json
Content-Length: 269
Date: Wed, 3 Sept. 2014 08:33:47 GMT
x-log-requestid: efag01234-12341-15432f

{
    "progress": "Complete",
    "count": 2,
    "logs": [
        {
            "__time__": 1409529660,
            "__source__": "10.237.0.17",
            "Key1": "error",
            "Key2": "Value2"
        },
        {
            "__time__": 1409529680,
            "__source__": "10.237.0.18",
            "Key3": "error",
            "Key4": "Value4"
        }
    ]
}

在這個響應示例中,"progress"成員狀態為“Complete”,表明整個日誌查詢已經完成,返回結果為完整結果。在這次請求中共查詢到2條符合條件的日誌,且日誌數據在“logs”成員中。如果響應結果中的“progress”成員狀態為“Incomplete”,則需要重複相同請求以獲得完整結果。

最後更新:2016-11-23 16:04:02

  上一篇:go RetryShipperTask__日誌庫相關接口_API-Reference_日誌服務-阿裏雲
  下一篇:go GetHistograms__日誌庫相關接口_API-Reference_日誌服務-阿裏雲