更新时间:2024-01-02 GMT+08:00

日志记录

使用场景

出于分析或审计等目的,用户可以开启日志记录功能。通过访问日志记录,桶的拥有者可以深入分析访问该桶的用户请求性质、类型或趋势。当用户开启一个桶的日志记录功能后,OBS会自动对这个桶的访问请求记录日志,并生成日志文件写入用户指定的桶中。

日志文件存放位置需要在开启桶日志功能时指定,可以存放到您拥有的,且与开启日志功能的桶位于同一区域的任一存储桶,当然也包括开启日志功能的桶本身。为了更有效的管理日志,建议您将日志存放到不同的桶中。当日志存储桶为开启日志功能的桶本身时,OBS将为写入该存储桶的日志创建额外的日志,这将增加您的存储账单费用,且由于额外日志的存在,将使您在寻找需要的日志时更加困难。

  • 桶日志上传会产生相应的PUT请求费用,PUT请求费用的具体说明请参考OBS计费说明
  • 日志记录设置成功后,大约15分钟后可在日志存储桶中查看到桶的操作日志。

OBS支持对桶的访问请求创建并保存访问日志记录,可用于进行请求分析或日志审计。

由于日志存储在OBS中也会占用用户租用的OBS存储空间,即意味着将产生额外的存储费用,默认情况下,OBS不会为用户的桶收集访问日志。

由于日志文件是OBS产生,并且由OBS上传到存放日志的桶中,因此OBS需要获得委托授权,用于上传生成的日志文件。所以在配置桶日志记录前,需要先到统一身份认证服务生成一个对OBS服务的委托,并在配置日志记录时添加该委托。默认情况下,在为委托配置权限时只需设置日志存储桶的上传对象权限,示例如下(其中mybucketlogs为日志存储桶的桶名)。如果日志存储桶开启了默认加密功能,还需要委托同时具有日志存储桶所在区域的KMS Administrator权限。

{
    "Version": "1.1",
    "Statement": [
        {
            "Action": [
                "obs:object:PutObject"
            ],
            "Resource": [
                "OBS:*:*:object:mybucketlogs/*"
            ],
            "Effect": "Allow"
        }
    ]
}

以下所示为在日志存储桶生成的桶访问日志文件记录:

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" - - 

每个桶访问日志都包含以下信息:

表1 Bucket Logging格式

名称

示例

含义

BucketOwner

787f2f92b20943998a4fe2ab75eb09b8

桶的ownerId

Bucket

bucket

桶名

Time

[13/Aug/2015:01:43:42 +0000]

请求时间戳(UTC)

Remote IP

xx.xx.xx.xx

请求IP

Requester

787f2f92b20943998a4fe2ab75eb09b8

请求者ID

  • 当使用账号或IAM用户发起请求时,此ID为请求者所属账号的账号ID。
  • 当使用匿名用户发起请求时,取值为Anonymous。

RequestID

281599BACAD9376ECE141B842B94535B

请求ID

Operation

REST.GET.BUCKET.LOCATION

操作名称

常见的Operation及其描述请参见表2

Key

-

对象名

Request-URI

GET /bucket?location HTTP/1.1

请求URI

HTTPStatus

200

返回码

ErrorCode

-

错误码

BytesSent

211

HTTP响应的字节大小

ObjectSize

-

对象大小(bytes)

说明:
  • 删除对象时,日志不会记录删除对象的大小。删除对象的日志中ObjectSize值为0。
  • 如果返回错误码4XX,ObjectSize值为“-”,不展示具体大小。

TotalTime

6

服务端处理时间(ms)

Turn-AroundTime

6

总请求时间(ms)

说明:

TotalTime和Turn-AroundTime是一个参数的两种叫法,两者无区别。

Referer

-

请求的referer头域

User-Agent

HttpClient

请求的user-agent头域

VersionID

-

请求中带的versionId

STSLogUrn

-

联邦认证及委托授权信息

StorageClass

STANDARD_IA

当前的对象存储类型

TargetStorageClass

GLACIER

通过转换后的对象存储类型

DentryName

12456/file.txt

  • 对于并行文件系统,是文件/目录的内部标识,由父目录inode编号与文件/目录名称组成。
  • 对于对象桶,该字段为"-"。

IAMUserID

8f3b8c53d29244a780084f2b8c106c32

IAM用户ID。

当使用匿名用户发起请求,记为Anonymous。

表2 常见的Operation

Operation

描述

Operation

描述

REST.GET.SERVICE

获取桶列表

REST.GET.ENCRYPTION

获取桶的加密配置

REST.PUT.BUCKET

创建桶

REST.DELETE.ENCRYPTION

删除桶的加密配置

REST.HEAD.BUCKET

查看桶

REST.PUT.OTM_DIRECT_COLD_ACCESS

设置桶归档对象直读策略

REST.GET.BUCKETVERSIONS

列举桶内对象

REST.GET.OTM_DIRECT_COLD_ACCESS

获取桶归档对象直读策略

REST.GET.BUCKET

获取桶元数据

REST.DELETE.OTM_DIRECT_COLD_ACCESS

删除桶归档对象直读策略

REST.GET.BUCKET.LOCATION

获取桶区域位置

REST.PUT.BUCKET.WEBSITE

设置桶的网站配置

REST.DELETE.BUCKET

删除桶

REST.GET.BUCKET.WEBSITE

获取桶的网站配置

REST.PUT.POLICY

设置桶策略

REST.DEL.BUCKET.WEBSITE

删除桶的网站配置

REST.GET.POLICY

获取桶策略

REST.PUT.BUCKET.CORS

设置桶的CORS配置

REST.DELETE.POLICY

删除桶策略

REST.GET.BUCKET.CORS

获取桶的CORS配置

REST.PUT.ACL

设置桶ACL、设置对象ACL

REST.DEL.BUCKET.CORS

删除桶的CORS配置

REST.GET.ACL

获取桶ACL、获取对象ACL

REST.PUT.BUCKET.REQUEST.PAYMENT

设置桶请求者付费策略

REST.PUT.LOGGING_STATUS

设置桶日志管理配置

REST.GET.BUCKET.REQUEST.PAYMENT

查询桶请求者付费策略

REST.GET.LOGGING_STATUS

获取桶日志管理配置

REST.OPTIONS.BUCKET

OPTIONS桶

REST.PUT.BUCKET.LIFECYCLE

设置桶的生命周期配置

REST.OPTIONS.OBJECT

OPTIONS对象

REST.GET.LIFECYCLE

获取桶的生命周期配置

REST.PUT.OBJECT

PUT上传

REST.DEL.LIFECYCLE

删除桶的生命周期配置

REST.POST.OBJECT

POST上传

REST.PUT.VERSIONING

设置桶的多版本状态

REST.COPY.OBJECT

复制对象

REST.GET.VERSIONING

获取桶的多版本状态

REST.GET.OBJECT

获取对象内容

REST.GET.BUCKET.STORAGE.POLICY

设置桶默认存储类别

REST.HEAD.OBJECT

获取对象元数据

REST.PUT.BUCKET.STORAGE.POLICY

获取桶默认存储类别

REST.DELETE.OBJECT

删除对象

REST.PUT.REPLICATION

设置桶的跨区域复制配置

REST.TRANSITION.STORAGECLASS.OBJECT

修改对象存储类别

REST.DELETE.REPLICATION

删除桶的跨区域复制配置

OP_MULTIPLE_DELETEOBJECT

批量删除对象

REST.GET.REPLICATION

获取桶的跨区域复制配置

REST.POST.RESTORE

恢复归档存储对象

REST.PUT.TAGGING

设置桶标签

REST.APPEND.OBJECT

追加写对象

REST.GET.TAGGING

获取桶标签

REST.MODIFY.OBJECT.META

修改对象元数据

REST.DEL.TAGGING

删除桶标签

REST.TRUNCATE.OBJECT

截断对象

REST.PUT.BUCKET_QUOTA

设置桶配额

REST.RENAME.OBJECT

重命名对象

REST.GET.BUCKET.QUOTA

获取桶配额

REST.GET.UPLOADS

列举桶中已初始化多段任务

REST.GET.BUCKET.STORAGEINFO

获取桶存量信息

REST.POST.UPLOADS

初始化多段上传任务

REST.PUT.BUCKET.INVENTORY

设置桶清单

REST.PUT.PART

上传段

REST.GET.BUCKET.INVENTORY

获取桶清单、列举桶清单

REST.COPY.PART

拷贝段

REST.DELETE.BUCKET.INVENTORY

删除桶清单

REST.GET.UPLOAD

列举已上传的段

REST.PUT.CUSTOMDOMAIN

设置桶的自定义域名

REST.POST.UPLOAD

合并段

REST.GET.CUSTOMDOMAIN

获取桶的自定义域名

REST.DELETE.UPLOAD

取消多段上传任务

REST.DELETE.CUSTOMDOMAIN

删除桶的自定义域名

REST.CLEAR.EXPIRE.UPLOAD

清理过期的段

REST.PUT.ENCRYPTION

设置桶的加密配置

-

-

使用方式

OBS支持通过控制台、API、SDK方式配置日志记录。

支持的使用方式

参考文档

控制台

配置桶的日志记录

SDK

OBS支持多种语言SDK,请从SDK概述页面选择进入对应的开发指南查阅。

API

设置桶日志管理配置