访问日志存储
用户在访问 OSS 的过程中,会产生大量的访问日志。日志存储功能,可将 OSS 的访问日志,以小时为单位,按照固定的命名规则,生成一个 Object 写入您指定的 Bucket(目标 Bucket,Target Bucket)。
您可以使用阿里云 DataLakeAnalytics 或搭建 Spark 集群等方式对这些日志文件进行分析。同时,您可以配置目标 Bucket 的生命周期管理规则,将这些日志文件转成归档存储,长期归档保存。
说明 日志存储相关 API 接口请参考:
- 设置日志存储功能:PutBucketLogging
- 删除日志存储配置:DeleteBucketLogging
- 查看日志存储配置:GetBucketLogging
操作方式
操作方式 | 说明 |
---|---|
控制台 | Web 应用程序,直观易用 |
命令行工具ossutil | 命令行工具,性能好 |
Java SDK | 丰富、完整的各类语言 SDK demo |
Python SDK | |
PHP SDK | |
Go SDK | |
C SDK | |
.NET SDK | |
Node.js SDK | |
Ruby SDK |
日志存储 Object 命名规则
<TargetPrefix><SourceBucket>YYYY-mm-DD-HH-MM-SS-UniqueString
命名规则中:
- TargetPrefix 由用户指定,表示存储访问日志记录的 Object 名字前缀,可以为空。
- YYYY-mm-DD-HH-MM-SS表示该 Object 被创建时的阿拉伯数字的年、月、日、小时、分钟和秒(注意位数)。
- UniqueString 为 OSS 系统生成的字符串(UUID),用于唯一标识该 Log 文件。
MyLog-oss-example2017-09-10-04-00-00-0000
上例中:
MyLog-
是用户指定的 Object 前缀。oss-example
是源 Bucket 的名称。2017-09-10-04-00-00
是该 Object 的创建时间。0000
是 OSS 系统生成的字符串。
Log 文件格式
Log 文件的格式组成:以下名称从左至右,以空格分隔。
名称 | 例子 | 含义 |
---|---|---|
Remote IP | 119.xxx.xx.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 | 505B016950xxxxxx032593A4 | 用于唯一标识该请求的 UUID |
LoggingFlag | true | 是否开启了访问日志功能 |
Requester Aliyun ID | 16571xxxxxx83691 | RAM User 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 | 16571xxxxxx83691 | Bucket 拥有者 ID |
Delta DataSize | 280 | Bucket 大小的变化量;若没有变化为- |
Sync Request | - | 是否是 CDN 回源请求;若不是则为- |
StorageClass | Standard | 显示当前 Object 的存储类型,当前取值为 Standard/IA/Archive/- ,- 表示操作的是Bucket等无法获取相应存储类型的情况
|
TargetStorageClass | Standard | 显示通过 Lifecycle 或 CopyObject 转换存储类型后的目标 Object 存储类型,当前取值为Standard/IA/Archive/- ,- 表示该操作无目标 Object 存储类型信息(未通过Lifecycle或者CopyObject转换存储类型)
|
细节分析
- 源 Bucket 和目标 Bucket 可以是同一个 Bucket,也可以是不同的 Bucket,但必须属于同一个账号下的同一地域内。您也可以将多个源 Bucket 的 Log 都保存在同一个目标 Bucket 内(建议指定不同的 TargetPrefix)。
- OSS 以小时为单位生成 Bucket 访问的 Log 文件,但并不表示这个小时的所有请求都记录在这个小时的 Log 文件内,也有可能出现在上一个或者下一个 Log 文件中。
- 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 处理工具时考虑兼容性的问题。
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
评论