本文介紹採集到Log Service中的日誌資料的資料模型。
為方便您理解Log Service中日誌資料的資料模型並順利使用,從如下基本概念展開介紹。
地區(Region)
地區為阿里雲的服務節點。通過在不同的阿里雲地區部署服務,實現您的服務距離您的客戶更近,獲得更低的訪問延時及更好的使用者體驗。目前阿里雲在全國各地擁有多個服務地區。
專案(Project)
專案為Log Service中的基本嵌入式管理單元,用於資源隔離和控制。您可以通過專案來管理某一個應用的所有日誌及相關的日誌源。
日誌庫(Logstore)
日誌庫是Log Service中日誌資料的收集、儲存和消費單元。每個日誌庫隸屬於一個專案,每個專案可以建立多個日誌庫。您可以根據實際需求為某一個專案產生多個日誌庫,其中常見的做法是為一個應用中的每類日誌建立一個獨立的日誌庫。例如:您有一個名為big-game的遊戲應用,伺服器上有三種日誌:動作記錄(operation_log)、應用程式記錄檔(application_log)以及訪問日誌(access_log),您可以首先建立名為big-game的專案,然後在該專案下面為這三種日誌建立三個日誌庫,分別用於它們的收集、儲存和消費。
日誌(Log)
資料域 | 描述 | 要求 |
time | 日誌中保留欄位,用以表示日誌產生的時間,一般由日誌中的時間直接產生。 | 整型,Unix標準時間格式。單位為秒,表示從1970-1-1 00:00:00 UTC計算起的秒數。 |
topic | 使用者自訂欄位,用以標記一批日誌。例如訪問日誌可根據不同網站進行標記。 | 包括Null 字元串在內的任一字元串,長度不超過128位元組。預設情況下,該欄位為空白字串。 |
source | 日誌的來源地,例如產生該日誌機器的IP地址。 | 任意不超過128位元組的UTF-8編碼字串。預設該欄位為空白。 |
content | 用以記錄日誌的具體內容。內容部分由一個或多個內容項組成,每一個內容項由Key-Value對組成。 | Key為UTF-8編碼字串,包含字母、底線和數字,且不以數字開頭,其長度不超過128位元組,且不可以使用如下關鍵字:
|
tags | 日誌的標籤,包括:
| 字典格式,Key和Value均為字串類型。在控制台查詢日誌時,以__tag__: 為首碼展示。 |
日誌主題(Topic)
一個日誌庫內的日誌可以通過日誌主題(Topic)來劃分。您可以在寫入時指定日誌主題,並在查詢時指定查詢的日誌主題。例如,一個平台使用者可以使用使用者編號作為日誌主題寫入日誌。這樣在查詢時可利用日誌主題讓不同使用者僅看到自己的日誌。如果不需要劃分一個日誌庫內的日誌,讓所有日誌使用相同的日誌主題即可。
實際使用情境中,日誌的格式多樣。為了協助理解,以下以一條Nginx原始訪問日誌如何映射到Log Service中日誌資料模型為例說明。假設使用者Nginx伺服器的IP地址為10.10.10.1,如下為其一條原始日誌:
10.1.1.1 - - [01/Mar/2012:16:12:07 +0800] "GET /Send?AccessKeyId=82251054** HTTP/1.1" 200 5 "-" "Mozilla/5.0 (X11; Linux i686 on x86_64; rv:10.0.2) Gecko/20100101 Firefox/10.0.2"
資料域 | 內容 | 說明 |
topic | None | 沿用預設值(Null 字元串)。 |
time | 1330589527 | 日誌產生的精確時間(精確到秒),從原始日誌中的時間戳記轉換而來。 |
source | 10.10.10.1 | 使用伺服器IP地址作為日誌源。 |
content | Key-Value對 | 日誌具體內容。 |
key | value |
ip | 10.1.1.1 |
method | GET |
status | 200 |
length | 5 |
ref_url | - |
browser | Mozilla/5.0 (X11; Linux i686 on x86_64; rv:10.0.2) Gecko/20100101 Firefox/10.0.2 |
Logs
由多條日誌產生的集合。
LogGroup
一組日誌的集合。
LogGroupList
一組LogGroup集合,用於結果返回。
編碼方式
含義 | 描述 | Content-Type |
Protobuf | Protobuf對資料模型進行編碼 | application/x-protobuf |
Protobuf格式請參見資料編碼方式。
由於Protobuf對Key-Value對不要求唯一性,因此需要避免出現該情況,否則行為為未定義。
對於同一個Message中的欄位,在Protobuf編碼時需要按照欄位編號的順序,否則資料可能會解析失敗。