出于分析或审计等目的,用户可以开启日志记录功能。通过访问日志记录,桶的拥有者可以深入分析访问该桶的用户请求性质、类型或趋势。当用户开启一个桶的日志记录功能后,OBS会自动对这个桶的访问请求记录日志,并生成日志文件写入用户指定的桶(即目标桶)中。
当日志记录开启后,目标存储桶的日志投递用户组会同步开启桶的写入权限和ACL读取权限。若手动将日志投递用户组的桶写入权限和ACL读取权限关闭,桶的日志记录会失败。
OBS支持对桶的访问请求创建并保存访问日志记录,可用于进行请求分析或日志审计。
由于日志存储在OBS中也会占用用户的OBS存储空间,即意味着将产生额外的存储费用,默认情况下,OBS不会为用户的桶收集访问日志。
由于日志文件是OBS产生,并且由OBS上传到存放日志的桶中,因此OBS需要获得委托授权,用于上传生成的日志文件。所以在配置桶日志记录前,需要先到统一身份认证服务生成一个对OBS服务的委托,并在配置日志记录时添加该委托。默认情况下,在为委托配置权限时只需设置日志存储桶的上传对象(PutObject)权限,示例如下(其中mybucketlogs为日志存储桶的桶名)。如果日志存储桶开启了默认加密功能,还需要委托同时具有日志存储桶所在区域的KMS Administrator权限。
{
"Version": "1.1",
"Statement": [
{
"Action": [
"obs:object:PutObject"
],
"Resource": [
"OBS:*:*:object:mybucketlogs/*"
],
"Effect": "Allow"
}
]
}
日志记录设置成功后,大约15分钟后可在日志存储目标桶中查看到桶的操作日志。
以下所示为在目标桶生成的桶访问日志文件记录:
787f2f92b20943998a4fe2ab75eb09b8 bucket [13/Aug/2015:01:43:42 +0000] xx.xx.xx.xx
787f2f92b20943998a4fe2ab75eb09b8 281599BACAD9376ECE141B842B94535B REST.GET.BUCKET.LOCATION
- "GET /bucket?location HTTP/1.1" 200 - 211 - 6 6 "-" "HttpClient" - -
每个桶访问日志都包含以下信息:
名称 | 示例 | 含义 |
---|---|---|
BucketOwner | 787f2f92b20943998a4fe2ab75eb09b8 | 桶的ownerId |
Bucket | bucket | 桶名 |
Time | [13/Aug/2015:01:43:42 +0000] | 请求时间戳(UTC) |
Remote IP | xx.xx.xx.xx | 请求IP |
Requester | 787f2f92b20943998a4fe2ab75eb09b8 | 请求者ID |
RequestID | 281599BACAD9376ECE141B842B94535B | 请求ID |
Operation | REST.GET.BUCKET.LOCATION | 操作名称 |
Key | - | 对象名 |
Request-URI | GET /bucket?location HTTP/1.1 | 请求URI |
HTTPStatus | 200 | 返回码 |
ErrorCode | - | 错误码 |
BytesSent | 211 | HTTP响应的字节大小 |
ObjectSize | - | 对象大小(bytes) |
TotalTime | 6 | 服务端处理时间(ms) |
Turn-AroundTime | 6 | 总请求时间(ms) |
Referer | - | 请求的referrer头域 |
User-Agent | HttpClient | 请求的user-agent头域 |
VersionID | - | 请求中带的versionId |
STSLogUrn | - | 联邦认证及委托授权信息 |
StorageClass | STANDARD_IA | 当前的对象存储类别 |
TargetStorageClass | GLACIER | 通过转换后的对象存储类别 |