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处理工具时考虑兼容性的问题。