閱讀160 返回首頁    go 英雄聯盟


數據模型__公共資源說明_API-Reference_日誌服務-阿裏雲

為方便理解整個Log Service服務並順利使用,這裏首先介紹其中的幾個基本概念。

地域(Region)

地域為阿裏雲的服務節點。用戶通過在不同的阿裏雲Region部署服務,讓自己的服務距離客戶更近,獲得更低的訪問延時及更好的用戶體驗。目前阿裏雲在全國各地擁有多個Region。

項目(Project)

項目為Log Service中的基本管理單元,用於資源隔離和控製。用戶可以通過項目來管理某一個應用的所有日誌及相關的日誌源。

日誌庫(Logstore)

日誌庫為Log Service中日誌數據的收集、存儲和消費單元。每個日誌庫隸屬於一個項目,每個項目可以創建多個日誌庫。用戶可以根據實際需求為某一個項目生成多個日誌庫,其中常見的做法是為一個應用中的每類日誌創建一個獨立的日誌庫。例如,假如用戶有一個“big-game”遊戲應用,服務器上有三種日誌:操作日誌(operation_log),應用程序日誌(application_log)以及訪問日誌(access_log),用戶可以首先創建名為“big-game”的項目,然後在該項目下麵為這三種日誌創建三個日誌庫,分別用於它們的收集、存儲和消費。

日誌(Log)

日誌為Log Service中處理的最小數據單元。Log Service采用半結構數據模式定義一條日誌,具體數據模型如下:

  • 主題(Topic):用戶自定義字段,用以標記一批日誌(例如:訪問日誌根據不同的站點進行標記)。默認該字段為空字符串(空字符串也為一個有效的主題)。
  • 時間(Time):日誌中保留字段,用以表示日誌產生的時間(精度為秒,從1970-1-1 00:00:00 UTC計算起的秒數),一般由日誌中的時間直接生-。
  • 內容(Content):用以記錄日誌的具體內容。內容部分由一個或多個內容項組成,每一個內容項由Key、Value對組成。
  • 來源(Source):日誌的來源地,例如產生該日誌機器的IP地址。默認該字段為空。

與此同時,Log Service對日誌各字段的取值有不同要求,具體如下表描述:

數據域 要求
time 整型,Unix標準時間格式,最小單位為秒
topic 任意不超過128字節的UTF-8編碼字符串
source 任意不超過128字節的UTF-8編碼字符串
content 一個或多個Key-Value對。其中Key為僅包含字母、下劃線、數字,不以數字開頭,不超過128字節的UTF-8編碼字符串。Value為不超過1024*1024字節的任意UTF-8編碼字符串

上表content中的key不可以使用如下關鍵字:__time____source____topic__, __partition_time___extract_others_, __extract_others__

日誌主題(Topic)

一個日誌庫內的日誌可以通過日誌主題(Topic)來劃分。用戶可以在寫入時指定日誌主題。例如,一個平台用戶可以使用用戶編號作為日誌主題寫入日誌。如果不需要劃分一個日誌庫內日誌,讓所有日誌使用相同的日誌主題即可。

注意:空字符串是一個有效的日誌主題(Topic),默認的日誌主題都是空字符串。

下圖描述了日誌庫、日誌主題和日誌之間的關係:

實際使用場景中,日誌的格式多樣。為了幫助理解,以下以一條nginx原始訪問日誌如何映射到Log Service日誌數據模型為例說明。假設用戶nginx服務器的IP地址為10.249.201.117,下麵為其上的一條原始日誌:

10.1.168.193 - - [01/Mar/2012:16:12:07 +0800] "GET /Send?AccessKeyId=8225105404 HTTP/1.1" 200 5 "-" "Mozilla/5.0 (X11; Linux i686 on x86_64; rv:10.0.2) Gecko/20100101 Firefox/10.0.2"

把該條原始日誌映射到Log Service日誌數據模型,如下:

數據域 內容 說明
topic "" 沿用默認值(空字符串)
time 1330589527 日誌產生的精確時間(精確到秒),從原始日誌中的時間戳轉換而來。
source "10.249.201.117" 使用服務器IP地址作為日誌源
content Key-Value對 日誌具體內容

用戶可以自己決定如何提取日誌原始內容並組合成Key-Value對,例如下表:

key value
ip "10.1.168.193"
method "GET"
status "200"
length "5"
ref_url "-"
browser "Mozilla/5.0 (X11; Linux i686 on x86_64; rv:10.0.2) Gecko/20100101 Firef

Logs

由多條日誌產生的集合。

LogGroup

一組日誌的集合。

LogGroupList

一組LogGroup集合,用於結果返回。

編碼方式

係統目前支持以下內容編碼方式(將來可擴展),Restful API層通過Content-Type表示。

含義 Content-Type
ProtoBuf ProtoBuf對數據模型進行編碼 application/x-protobuf

以下PB定義了數據模型中的對象:

message Log
{
    required uint32 Time = 1;// UNIX Time Format
    message Content
    {
        required string Key = 1;
        required string Value = 2;
    }  
    repeated Content Contents= 2;

}
message LogGroup
{
    repeated Log Logs= 1;
    optional string Reserved = 2; // reserved fields
    optional string Topic = 3;
    optional string Source = 4;
}
message LogGroupList
{
    repeated LogGroup logGroupList = 1;
}

注意:

  1. 由於PB對KeyValue對不要求唯一性,因此需要避免出現該情況,否則行為為未定義。

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

  上一篇:go 鑒權規則__RAM子用戶訪問_API-Reference_日誌服務-阿裏雲
  下一篇:go 數據編碼方式__公共資源說明_API-Reference_日誌服務-阿裏雲