OSS提供自動儲存訪問日誌記錄功能。Bucket的擁有者可以通過OSS控制台為其所擁有的Bucket開啟訪問日誌記錄功能。
當一個Bucket(源Bucket,Source Bucket)開啟訪問日誌記錄功能後,OSS自動將訪問這個Bucket的請求日誌,以小時為單位,按照固定的命名規則,生成一個Object寫入用戶指定的Bucket(目標Bucket,Target Bucket)。
日誌記錄Object命名規則
<TargetPrefix><SourceBucket>YYYY-mm-DD-HH-MM-SS-UniqueString
命名規則中,TargetPrefix由用戶指定;YYYY, mm, DD, HH, MM和SS分別是該Object被建立時的阿拉伯數位年、月、日、小時、分鐘和秒(注意位元);UniqueString為OSS系統生成的字元串。一個實際的用於儲存OSS訪問日誌的Object名稱例子如下:
MyLog-oss-example2012-09-10-04-00-00-0000
上例中,“MyLog-”是用戶指定的Object首碼;“oss-example”是源Bucket的名稱;“2012-09-10-04-00-00”是該Object的建立時間;“0000” 是OSS系統生成的字元串。
Log檔案格式
Log檔案的格式組成:以下名稱從左至右,以空格分隔。
名 稱 | 例 子 | 含 義 |
---|---|---|
Remote IP | 119.140.142.11 | 請求發起的IP地址(Proxy代理或用戶防火牆可能會屏蔽該欄位) |
Reserved | - | 保留欄位 |
Reserved | - | 保留欄位 |
Time | [02/May/2012:00:00:04 +0800] | OSS收到請求的時間 |
Request-URI | “GET /aliyun-logo.png HTTP/1.1” | 用戶請求的URI(包括query-string) |
HTTP Status | 200 | OSS返回的HTTP狀態碼 |
SentBytes | 5576 | 用戶從OSS下載的流量 |
RequestTime (ms) | 71 | 完成本次請求的時間(毫秒) |
Referer | http://www.aliyun.com/product/oss |
請求的HTTP Referer |
User-Agent | curl/7.15.5 | HTTP的User-Agent頭 |
HostName | oss-example.oss-cn-hangzhou.aliyuncs.com | 請求訪問網域名稱 |
Request ID | 505B01695037C2AF032593A4 | 用於唯一標識該請求的UUID |
LoggingFlag | true | 是否開啟了訪問日誌功能 |
Requester Aliyun ID | 1657136103983691 | 要求者的阿里雲ID;匿名訪問為“-” |
Operation | GetObject | 請求類型 |
Bucket | oss-example | 請求訪問的Bucket名字 |
Key | /aliyun-logo.png | 用戶請求的Key |
ObjectSize | 5576 | Object大小 |
Server Cost Time (ms) | 17 | OSS伺服器處理本次請求所花的時間(毫秒) |
Error Code | NoSuchBucket | OSS返回的錯誤碼 |
Request Length | 302 | 用戶請求的長度(Byte) |
UserID | 1657136103983691 | Bucket擁有者ID |
Delta DataSize | 280 | Bucket大小的變化量;若沒有變化為“-” |
Sync Request | - | 是否是CDN回源請求;若不是為“-” |
Reserved | - | 保留欄位 |
細節分析
- 源Bucket和目標Bucket必須屬於同一個用戶下的同一資料中心內。
- “TargetPrefix”表示儲存訪問日誌記錄的Object名字首碼,可以為空。
- 源Bucket和目標Bucket可以是同一個Bucket,也可以是不同的Bucket(但是必須在同一Region);用戶也可以將多個源Bucket的Log都保存在同一個目標Bucket內(建議指定不同的TargetPrefix)。
- OSS以小時為單位生成Bucket訪問的Log檔案,但並不表示這個小時的所有請求都記錄在這個小時的Log檔案內,也有可能出現在上一個或者下一個Log檔案中。
- OSS生成的Log檔案命名規則中的“UniqueString”僅僅是OSS為其生成的UUID,用於唯一標識該檔案。
- OSS生成一個Bucket訪問的Log檔案,算作一次PUT操作,並記錄其佔用的空間,但不會記錄產生的流量。Log生成後,用戶可以按照普通的Object來操作這些Log檔案。
-
OSS會忽略掉所有以“x-”開頭的query-string參數,但這個query-string會被記錄在訪問Log中。如果你想從海量的訪問日誌中標識一個特殊的請求,可以在URL中添加一個“x-”開頭的query-string參數。如:
http://oss-example.oss-cn-hangzhou.aliyuncs.com/aliyun-logo.png
http://oss-example.oss-cn-hangzhou.aliyuncs.com/aliyun-logo.png?x-user=admin
OSS處理上面兩個請求,結果是一樣的。但是在訪問Log中,您可以通過搜索“x-user=admin”,方便地定位出經過標記的這個請求。
- OSS的Log中的任何一個欄位,都可能出現“-”,用於表示未知數據或對於當前請求該欄位無效。
- 根據需求,OSS的Log格式將來會在尾部添加一些欄位,請開發人員開發Log處理工具時考慮相容性的問題。