數(shù)據(jù)模型
本文介紹采集到日志服務(wù)中的日志數(shù)據(jù)的數(shù)據(jù)模型。
為方便您理解日志服務(wù)中日志數(shù)據(jù)的數(shù)據(jù)模型并順利使用,從如下基本概念展開介紹。
地域(Region)
地域?yàn)榘⒗镌频姆?wù)節(jié)點(diǎn)。通過在不同的阿里云地域部署服務(wù),實(shí)現(xiàn)您的服務(wù)距離您的客戶更近,獲得更低的訪問延時(shí)及更好的用戶體驗(yàn)。目前阿里云在全國各地?fù)碛卸鄠€(gè)服務(wù)地域。
項(xiàng)目(Project)
項(xiàng)目為日志服務(wù)中的基本管理單元,用于資源隔離和控制。您可以通過項(xiàng)目來管理某一個(gè)應(yīng)用的所有日志及相關(guān)的日志源。
日志庫(Logstore)
日志庫是日志服務(wù)中日志數(shù)據(jù)的收集、存儲(chǔ)和消費(fèi)單元。每個(gè)日志庫隸屬于一個(gè)項(xiàng)目,每個(gè)項(xiàng)目可以創(chuàng)建多個(gè)日志庫。您可以根據(jù)實(shí)際需求為某一個(gè)項(xiàng)目生成多個(gè)日志庫,其中常見的做法是為一個(gè)應(yīng)用中的每類日志創(chuàng)建一個(gè)獨(dú)立的日志庫。例如:您有一個(gè)名為big-game的游戲應(yīng)用,服務(wù)器上有三種日志:操作日志(operation_log)、應(yīng)用程序日志(application_log)以及訪問日志(access_log),您可以首先創(chuàng)建名為big-game的項(xiàng)目,然后在該項(xiàng)目下面為這三種日志創(chuàng)建三個(gè)日志庫,分別用于它們的收集、存儲(chǔ)和消費(fèi)。
日志(Log)
數(shù)據(jù)域 | 描述 | 要求 |
time | 日志中保留字段,用以表示日志產(chǎn)生的時(shí)間,一般由日志中的時(shí)間直接生成。 | 整型,Unix標(biāo)準(zhǔn)時(shí)間格式。單位為秒,表示從1970-1-1 00:00:00 UTC計(jì)算起的秒數(shù)。 |
topic | 用戶自定義字段,用以標(biāo)記一批日志。例如訪問日志可根據(jù)不同站點(diǎn)進(jìn)行標(biāo)記。 | 包括空字符串在內(nèi)的任意字符串,長(zhǎng)度不超過128字節(jié)。默認(rèn)情況下,該字段為空字符串。 |
source | 日志的來源地,例如產(chǎn)生該日志機(jī)器的IP地址。 | 任意不超過128字節(jié)的UTF-8編碼字符串。默認(rèn)該字段為空。 |
content | 用以記錄日志的具體內(nèi)容。內(nèi)容部分由一個(gè)或多個(gè)內(nèi)容項(xiàng)組成,每一個(gè)內(nèi)容項(xiàng)由Key-Value對(duì)組成。 | Key為UTF-8編碼字符串,包含字母、下劃線和數(shù)字,且不以數(shù)字開頭,其長(zhǎng)度不超過128字節(jié),且不可以使用如下關(guān)鍵字:
|
tags | 日志的標(biāo)簽,包括:
| 字典格式,Key和Value均為字符串類型。在控制臺(tái)查詢?nèi)罩緯r(shí),以__tag__: 為前綴展示。 |
日志主題(Topic)
一個(gè)日志庫內(nèi)的日志可以通過日志主題(Topic)來劃分。您可以在寫入時(shí)指定日志主題,并在查詢時(shí)指定查詢的日志主題。例如,一個(gè)平臺(tái)用戶可以使用用戶編號(hào)作為日志主題寫入日志。這樣在查詢時(shí)可利用日志主題讓不同用戶僅看到自己的日志。如果不需要?jiǎng)澐忠粋€(gè)日志庫內(nèi)的日志,讓所有日志使用相同的日志主題即可。
實(shí)際使用場(chǎng)景中,日志的格式多樣。為了幫助理解,以下以一條Nginx原始訪問日志如何映射到日志服務(wù)中日志數(shù)據(jù)模型為例說明。假設(shè)用戶Nginx服務(wù)器的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"
數(shù)據(jù)域 | 內(nèi)容 | 說明 |
topic | None | 沿用默認(rèn)值(空字符串)。 |
time | 1330589527 | 日志產(chǎn)生的精確時(shí)間(精確到秒),從原始日志中的時(shí)間戳轉(zhuǎn)換而來。 |
source | 10.10.10.1 | 使用服務(wù)器IP地址作為日志源。 |
content | Key-Value對(duì) | 日志具體內(nèi)容。 |
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
由多條日志產(chǎn)生的集合。
LogGroup
一組日志的集合。
LogGroupList
一組LogGroup集合,用于結(jié)果返回。
編碼方式
含義 | 描述 | Content-Type |
Protobuf | Protobuf對(duì)數(shù)據(jù)模型進(jìn)行編碼 | application/x-protobuf |
Protobuf格式請(qǐng)參見數(shù)據(jù)編碼方式。
由于Protobuf對(duì)Key-Value對(duì)不要求唯一性,因此需要避免出現(xiàn)該情況,否則行為為未定義。
對(duì)于同一個(gè)Message中的字段,在Protobuf編碼時(shí)需要按照字段編號(hào)的順序,否則數(shù)據(jù)可能會(huì)解析失敗。