更新时间:2025-08-26 GMT+08:00

桶日志概述

使用场景

访问桶的过程中会产生大量的访问日志,默认情况下,OBS不会为您的桶收集访问日志。如果您需要分析访问桶的用户请求性质、类型或趋势,可以为桶开启日志记录功能,OBS会自动将桶的访问日志按照固定的规则命名,并生成日志文件上传至您指定的日志存储桶(当前桶或同一区域的其他桶)。

约束与限制

日志可以存储在产生日志的源桶,也可以存储在其他桶,但日志存储桶和源桶必须属于同一账号下的相同区域。

注意事项

日志记录设置成功后,大约15分钟后可在日志存储桶中查看到桶的操作日志。某时间段的日志文件可能不会记录该时间段的所有请求,部分请求可能会记录在上一时间段或下一时间段的日志文件中。因此,某时间段的日志文件不能确保该时间段日志记录的完整性和实时性。

日志文件命名规则

日志文件命名规则:<日志文件前缀>YYYY-mm-DD-HH-MM-SS-<UniqueString>
表1 日志文件名称中的字段解释

字段

说明

<日志文件前缀>

为用户指定的日志文件日志存储前缀。

YYYY-mm-DD-HH-MM-SS

日志文件创建的时间(UTC时间)。“YYYY-mm-DD-HH-MM-SS”从左到右依次表示:年、月、日、小时、分钟和秒。

<UniqueString>

OBS自动生成的字符串,是日志文件的唯一标识。

  • 如果<日志文件前缀>以“/”结尾,则该桶生成的日志文件在目标桶中将统一存放在以<日志文件前缀>命名的文件夹中,日志文件名称为“YYYY-mm-DD-HH-MM-SS-<UniqueString>”。
    图1 日志文件夹命名
    图2 日志文件命名
  • 如果<日志文件前缀>不以“/”结尾,则该桶生成的日志文件将直接存储在目标桶的根目录下,日志文件名称为“<日志文件前缀>YYYY-mm-DD-HH-MM-SS-<UniqueString>”。
    图3 日志文件

日志字段介绍

  • 日志内容示例

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

    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" - - - - "-" 089fe8c2c380f4031f6dc0197fe99d4d HPTAAFZfyW0yD80idvjw
  • 日志内容格式

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

    表2 Bucket Logging格式

    名称

    含义

    示例

    BucketOwner

    桶所有者的账号ID。

    787f2f92b20943998a4fe2ab75eb09b8

    BucketName

    桶名称。

    bucket

    Time

    请求时间戳(UTC),请求桶的时间(OBS收到请求的时间)。

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

    Remote IP

    请求来源IP。

    192.168.7.132

    Requester

    请求者的ID。取值如下:

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

    787f2f92b20943998a4fe2ab75eb09b8

    RequestID

    对桶执行操作时所发出请求的请求ID。

    281599BACAD9376ECE141B842B94535B

    Operation

    请求的操作类型。

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

    REST.GET.BUCKET.LOCATION

    Key

    请求的目标对象名称。

    -

    Request-URI

    请求对OBS资源进行操作时所使用的URI地址。关于URI,详情请参见构造请求

    说明:

    如果签名时使用query_string形式,那么在Request-URI中将展示签名信息,否则Request-URI中不会包含签名信息。

    GET /bucket?location HTTP/1.1

    HTTPStatus

    OBS返回的HTTP状态码

    200

    ErrorCode

    OBS返回的错误码。取值为“-”表示未返回错误码。

    -

    BytesSent

    HTTP响应body体的字节大小。

    单位:Bytes

    当HTTP响应不包含body体时,该参数为“-”。

    211

    ObjectSize

    对象大小。

    单位:Bytes

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

    -

    TotalTime

    请求总耗时。OBS服务器处理本次请求所花的时间。

    请求总耗时 = 响应末字节的时间 - 请求首字节的时间

    单位:ms

    6

    Turn-AroundTime

    请求服务端耗时。请求OBS服务端所花的时间。

    请求服务端耗时 = 响应首字节的时间 - 请求末字节的时间

    单位:ms

    6

    Referer

    请求的Referrer头域。

    Referrer头域是HTTP请求头的一部分,用来帮助服务器理解请求的来源,即帮助服务器明确用户是从哪个URL跳转到当前请求的资源。

    -

    User-Agent

    请求的User-Agent头域。

    User-Agent头域是HTTP请求头的一部分,用于标识发起请求的客户端软件(浏览器、操作系统、设备类型等信息),服务器可以利用这些信息来优化响应内容或进行统计分析。

    HttpClient

    VersionID

    请求中带的对象版本ID。该参数用于标识对桶中的哪个版本对象执行了操作。

    当桶开启多版本控制后,您可以在桶中保留多个版本的对象,每个版本对象都具有一个唯一的对象版本ID。详情请参见多版本控制

    -

    STSLogUrn

    联邦身份认证委托授权信息。

    -

    StorageClass

    当前的对象存储类别。取值如下:

    • STANDARD:标准存储
    • STANDARD_IA:即“WARM”,低频访问存储
    • COLD:归档存储
    • DEEP_ARCHIVE:深度归档存储

    STANDARD_IA

    TargetStorageClass

    通过生命周期规则转换后的对象存储类别。取值如下:

    • STANDARD:标准存储
    • WARM:低频访问存储
    • COLD:归档存储
    • DEEP_ARCHIVE:深度归档存储

    GLACIER

    DentryName

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

    12456/file.txt

    IAMUserID

    IAM用户ID。取值如下:

    • IAM用户ID:非匿名用户发起请求时,取该值。
    • Anonymous:当使用匿名用户发起请求,取该值。

    8f3b8c53d29244a780084f2b8c106c32

    AccessKeyID

    请求者的AccessKey ID。取值如下:

    • -:表示匿名请求。
    • 请求者的AccessKey ID:表示非匿名请求。

    UDSIAMSTUBTEST002852

    表3 常见的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.OPTIONS.BUCKET

    OPTIONS桶

    REST.PUT.LOGGING_STATUS

    设置桶日志管理配置

    REST.OPTIONS.OBJECT

    OPTIONS对象

    REST.GET.LOGGING_STATUS

    获取桶日志管理配置

    REST.PUT.OBJECT

    PUT上传

    REST.PUT.BUCKET.LIFECYCLE

    设置桶的生命周期配置

    REST.POST.OBJECT

    POST上传

    REST.GET.LIFECYCLE

    获取桶的生命周期配置

    REST.COPY.OBJECT

    复制对象

    REST.DEL.LIFECYCLE

    删除桶的生命周期配置

    REST.GET.OBJECT

    获取对象内容

    REST.PUT.VERSIONING

    设置桶的多版本状态

    REST.HEAD.OBJECT

    获取对象元数据

    REST.GET.VERSIONING

    获取桶的多版本状态

    REST.DELETE.OBJECT

    删除对象

    REST.GET.BUCKET.STORAGE.POLICY

    获取桶默认存储类别

    REST.TRANSITION.STORAGECLASS.OBJECT

    修改对象存储类别

    REST.PUT.BUCKET.STORAGE.POLICY

    设置桶默认存储类别

    OP_MULTIPLE_DELETEOBJECT

    批量删除对象(批量删除任务本身的操作)

    REST.PUT.REPLICATION

    设置桶的跨区域复制配置

    REST.POST.RESTORE

    恢复归档存储对象

    REST.DELETE.REPLICATION

    删除桶的跨区域复制配置

    REST.APPEND.OBJECT

    追加写对象

    REST.GET.REPLICATION

    获取桶的跨区域复制配置

    REST.MODIFY.OBJECT.META

    修改对象元数据

    REST.PUT.TAGGING

    设置桶标签

    REST.TRUNCATE.OBJECT

    截断对象

    REST.GET.TAGGING

    获取桶标签

    REST.RENAME.OBJECT

    重命名对象

    REST.DEL.TAGGING

    删除桶标签

    REST.GET.UPLOADS

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

    REST.PUT.BUCKET_QUOTA

    设置桶配额

    REST.POST.UPLOADS

    初始化多段上传任务

    REST.GET.BUCKET.QUOTA

    获取桶配额

    REST.PUT.PART

    上传段

    REST.GET.BUCKET.STORAGEINFO

    获取桶存量信息

    REST.COPY.PART

    拷贝段

    REST.PUT.BUCKET.INVENTORY

    设置桶清单

    REST.GET.UPLOAD

    列举已上传的段

    REST.GET.BUCKET.INVENTORY

    获取桶清单、列举桶清单

    REST.POST.UPLOAD

    合并段

    REST.DELETE.BUCKET.INVENTORY

    删除桶清单

    REST.DELETE.UPLOAD

    取消多段上传任务

    REST.PUT.CUSTOMDOMAIN

    设置桶的自定义域名

    REST.CLEAR.EXPIRE.UPLOAD

    清理过期的段

    REST.GET.CUSTOMDOMAIN

    获取桶的自定义域名

    REST.DELETE.CUSTOMDOMAIN

    删除桶的自定义域名

    REST.PUT.ENCRYPTION

    设置桶的加密配置

    -

    -

桶日志费用说明

  • 桶日志上传会产生相应的PUT请求费用;桶日志上传至目标桶后,也会产生存储费用。详情请参见OBS计费说明
  • 当日志存储桶为开启日志功能的桶本身时,OBS将为写入该存储桶的日志创建额外的日志,这将增加您的存储账单费用,且由于额外日志的存在,将使您在寻找需要的日志时更加困难。因此,建议您将日志存放到不同的桶中。
  • 请及时清理不需要的日志文件,以减少您的存储费用。建议您通过配置生命周期规则来定期删除日志文件。

桶日志相关的权限

  • 日志记录开启后,系统会同步开启日志存储桶的日志投递用户组对桶的写入权限和ACL读取权限。

    如果手动将日志投递用户组的桶写入权限和ACL读取权限关闭,桶的日志记录会失败。

  • 由于日志文件是OBS产生,并且由OBS上传到存放日志的桶中,因此OBS需要获得委托授权,用于上传生成的日志文件。所以在配置桶日志记录前,需要先到统一身份认证服务创建一个对OBS服务的委托,并在配置日志记录时添加该委托。关于详细的创建委托步骤,请参见创建用于上传日志的委托
    • 默认情况下,只需要为委托配置日志存储桶的上传对象权限(obs:object:PutObject)。统一身份认证服务的自定义策略JSON视图格式的示例如下,其中mybucketlogs为日志存储桶的桶名。
      {
          "Version": "1.1",
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "obs:object:PutObject"
                  ],
                  "Resource": [
                      "OBS:*:*:object:mybucketlogs/*"
                  ]
              }
          ]
      }
  • 如果日志存储桶开启了服务端加密功能,还需要委托同时具有日志存储桶所在区域的KMS Administrator系统角色权限。
  • 日志文件存储至日志存储桶后,如果您希望其他用户可以访问日志文件,可以通过以下方式为用户设置权限:
    • 通过桶ACL设置

      该方式仅支持对账号配置ACL,不支持对IAM用户配置。如果您需要为IAM用户配置日志文件的访问权限,请通过桶策略设置

      授予账号对日志存储桶的读取权限和对象读权限,即可访问日志存储桶的日志文件,详情请参见配置桶ACL

    • 通过桶策略设置