162
windows
核心概念__基礎概念_用戶指南_日誌服務-阿裏雲
半世紀前說起日誌,想到的是船長、操作員手裏厚厚的筆記。如今計算機誕生使得日誌產生與消費無處不在:服務器、路由器、傳感器、GPS、訂單、及各種IoT設備通過不同角度描述著我們生活的世界。借助於計算力量,通過收集、處理、使用日誌,我們不斷更新對整個世界以及體係的認知。
日誌是什麼?
從船長日誌中我們可以發現,日誌除了帶一個記錄的時間戳外,可以包含幾乎任意的內容,例如:一段記錄文字、一張圖片、天氣狀況、船行方向等。幾個世紀過去了,“船長日誌”的方式已經擴展到一筆訂單、一項付款記錄、一次用戶訪問、一次數據庫操作等多樣的領域。
日誌這種廣泛使用模式之所以經久不衰,在於:“日誌是一種簡單的不能再簡單的存儲抽象”。它是一個隻能增加的,完全按照時間排序的一係列記錄。日誌(時間序列數據)看起來如下:
我們可以給日誌末尾添加記錄,並且可以從左到右讀取日誌記錄。每一條記錄都指定了一個唯一的有一定順序的日誌記錄編號。
日誌順序由“時間”來確定,從圖上可以看到日誌從右到左的時間順序,新產生的事件被記錄,過去的事件漸漸遠去,但它記錄了什麼時間發生了什麼事情,這無論對於計算機、人類、還是整個世界而言,是認知與推理的基礎。
核心概念
為方便理解整個日誌服務服務並順利使用,這裏首先介紹其中的幾個基本概念。
地域(Region)
地域為阿裏雲的服務節點。用戶通過在不同的阿裏雲Region部署服務,讓自己的服務距離客戶更近,獲得更低的訪問延時及更好的用戶體驗。目前阿裏雲在全國各地擁有多個Region。
項目(Project)
項目為日誌服務中的基本管理單元,用於資源隔離和控製。用戶可以通過項目來管理某一個應用的所有日誌及相關的日誌源。
日誌庫(Logstore)
日誌庫為日誌服務中日誌數據的收集、存儲和查詢單元。每個日誌庫隸屬於一個項目,且每個項目可以創建多個日誌庫。用戶可以根據實際需求為某一個項目生成多個日誌庫,其中常見的做法是為一個應用中的每類日誌創建一個獨立的日誌庫。例如,假如用戶有一個“big-game”遊戲應用,服務器上有三種日誌:操作日誌(operation_log),應用程序日誌(application_log)以及訪問日誌(access_log),用戶可以首先創建名為“big-game”的項目,然後在該項目下麵為這三種日誌創建三個日誌庫,分別用於它們的收集、存儲和查詢。
分區(Shard)
分區(shard)是每個日誌庫下讀寫基本單元,用戶可以指定每個日誌庫下分區數目。每個分區能承載一定量的服務能力:
- 寫入:5MB/S,2000次/S
- 讀取:10MB/S,100次/S
shard有兩種狀態:
- readwrite:shard處於可讀可寫狀態
- readonly:shard隻能讀,不能寫
每個shard都是有一個range,取值範圍[00000000000000000000000000000000,ffffffffffffffffffffffffffffffff),可用MD5方式來表示,用於支持指定hash key的模式寫入,以及shard split和merge操作
- inclusiveBeginKey:shard起始的range key(包含)
- exclusiveEndKey:shard的結束range key(不包含)
在向Shard讀寫數據過程中,讀必須指定對應shard,而寫的過程中可以使用負載均衡模式或者指定hash key的模式。負載模式下,每個數據包,隨機寫入某一個當前可用的shard中,在指定hash key模式下,數據寫入shard range包含這個key的shard。
Project/Logstore/Shard 關係:
日誌(Log)
日誌為日誌服務中處理的最小數據單元。日誌服務采用半結構數據模式定義一條日誌,具體數據模型如下:
- 主題(Topic):用戶自定義字段,用以標記一批日誌(例如:訪問日誌根據不同的站點進行標記)。默認該字段為空字符串(空字符串也為一個有效的主題)。
- 時間(Time):日誌中保留字段,用以表示日誌產生的時間(精度為秒,從1970-1-1 00:00:00 UTC計算起的秒數),一般由日誌中的時間直接生成。
- 內容(Content):用以記錄日誌的具體內容。內容部分由一個或多個內容項組成,每一個內容項由Key、Value對組成。
- 來源(Source):日誌的來源地,例如產生該日誌機器的IP地址。默認該字段為空。
與此同時,日誌服務對日誌各字段的取值有不同要求,具體如下表描述:
數據域 | 要求 |
---|---|
time | 整型,Unix標準時間格式,最小單位為秒 |
topic | 任意不超過128字節的字符串 |
source | 任意不超過128字節的字符串 |
content | 一個或多個Key-Value對。其中Key為僅包含字母、下劃線、數字,不以數字開頭,不超過128字節的UTF-8編碼字符串。Value為不超過1024*1024字節的任意字符串 |
上表content中的key不可以使用如下關鍵字:
__time__
,__source__
,__topic__
,__partition_time__
,_extract_others_
,__extract_others__
日誌組(LogGroup)
一組日誌的集合,寫入與讀取的基本單位。日誌組限製為:最大4096行日誌,或10MB空間。
日誌主題(Topic)
一個日誌庫內的日誌可以通過日誌主題(Topic)來劃分。用戶可以在寫入時指定日誌主題,並在查詢時必須指定查詢的日誌主題。例如,一個平台用戶可以使用用戶編號作為日誌主題寫入日誌。這樣在查詢時可利用日誌主題讓不同用戶僅看到自己的日誌。如果不需要劃分一個日誌庫內日誌,讓所有日誌使用相同的日誌主題即可。
注意:空字符串是一個有效的日誌主題(Topic),且無論是寫入還是查詢日誌時,默認的日誌主題都是空字符串。所以,如果不需要使用日誌主題,最簡單的方式就是在寫入和查詢日誌時都使用默認日誌主題,即空字符串。
下圖描述了日誌庫、日誌主題和日誌之間的關係:
實際使用場景中,日誌的格式多樣。為了幫助理解,以下以一條nginx原始訪問日誌如何映射到日誌服務日誌數據模型為例說明。假設用戶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"
把該條原始日誌映射到日誌服務日誌數據模型,如下:
數據域 | 內容 | 說明 |
---|---|---|
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 Firefox/10.0.2” |
最後更新:2016-11-23 17:25:44
上一篇:
彈性Web托管如何創建數據庫賬號和分配權限__產品相關問題_使用問題_彈性 Web 托管-阿裏雲
下一篇:
項目(Project)__基礎概念_用戶指南_日誌服務-阿裏雲
WAF排錯手冊__排錯手冊_Web 應用防火牆-阿裏雲
UPDATE__數據操作語言_SQL語法參考_雲數據庫 OceanBase-阿裏雲
搜索自定義轉碼模板__自定義轉碼模板接口_API使用手冊_媒體轉碼-阿裏雲
安全組__網絡和安全性_產品簡介_雲服務器 ECS-阿裏雲
線性回歸__示例程序_圖模型_大數據計算服務-阿裏雲
ADSWriter__Writer插件_使用手冊_數據集成-阿裏雲
阿裏雲、亞馬遜競爭雲服務市場掀起價格戰;沃爾瑪發債融資60億美元,決戰亞馬遜
配置後端 ECS 實例__快速入門_負載均衡-阿裏雲
ALIYUN::ECS::InstanceGroupClone__資源列表_資源編排-阿裏雲
推送消息給android__API列表_OpenAPI 1.0_移動推送-阿裏雲
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲