访问对象存储OSS的过程中会产生大量的访问日志,您可以通过日志转存功能将这些日志按照固定命名规则,以小时为单位生成日志文件写入您指定的Bucket。对于已存储的日志,您可以通过阿里云日志服务或搭建Spark集群等方式进行分析。

说明 日志转存相关API接口请参见:

日志文件命名规则

转存后的日志文件命名规则如下:

<TargetPrefix><SourceBucket>YYYY-mm-DD-HH-MM-SS-UniqueString
字段 说明
TargetPrefix 日志文件的文件名前缀。
SourceBucket 产生访问日志的源Bucket名称。
YYYY-mm-DD-HH-MM-SS 日志文件被创建的时间。从左到右分别表示:年、月、日、小时、分钟和秒。
UniqueString 系统生成的字符串,是日志文件的唯一标识。

日志的格式和示例

  • 日志格式

    OSS的访问日志包含请求者和被访问资源的相关信息,格式如下:

    RemoteIP Reserved Reserved Time "RequestURL" HTTPStatus SentBytes RequestTime "Referer" "UserAgent" "HostName" "RequestID" "LoggingFlag" "RequesterAliyunID" "Operation" "BucketName" "ObjectName" ObjectSize ServerCostTime "ErrorCode RequestLength "UserID" DeltaDataSize "SyncRequest" "StorageClass" "TargetStorageClass" "TransmissionAccelerationAccessPoint" "AccessKeyID"
    字段 示例值 说明
    RemoteIP 192.168.0.1 请求者的IP地址。
    Reserved - 保留字段,固定值为-
    Reserved - 保留字段,固定值为-
    Time 03/Jan/2021:14:59:49 +0800 OSS收到请求的时间。
    RequestURL GET /example.jpg HTTP/1.0 包含query string的请求URL。

    OSS会忽略以x-开头的query string参数,但这个参数会被记录在访问日志中。所以您可以使用x-开头query string参数标记一个请求,然后使用这个标记快速查找该请求对应的日志。

    HTTPStatus 200 OSS返回的HTTP状态码。
    SentBytes 999131 请求产生的下行流量。单位:Byte。
    RequestTime 127 完成本次请求耗费的时间。单位:ms。
    Referer http://www.aliyun.com/product/oss 请求的HTTP Referer。
    UserAgent curl/7.15.5 HTTP的User-Agent头。
    HostName examplebucket.oss-cn-hangzhou.aliyuncs.com 请求访问的目标域名。
    RequestID 5FF16B65F05BC932307A3C3C 请求的Request ID。
    LoggingFlag true 是否已开启日志转存。取值如下:
    • true表示已开启日志转存。
    • false表示未开启日志转存。
    RequesterAliyunID 16571836914537**** 请求者的用户ID。取值-表示匿名访问。
    Operation GetObject 请求类型。
    BucketName examplebucket 请求的目标Bucket名称。
    ObjectName example.jpg 请求的目标Object名称。
    ObjectSize 999131 目标Object大小。单位:Byte。
    ServerCostTime 88 OSS处理本次请求所花的时间。单位:毫秒。
    ErrorCode - OSS返回的错误码。取值-表示未返回错误码。
    RequestLength 302 请求的长度。单位:Byte。
    UserID 16571836914537**** Bucket拥有者ID。
    DeltaDataSize - Object大小的变化量。取值-表示此次请求不涉及Object的写入操作。
    SyncRequest cdn 请求是否为CDN回源请求。取值如下:
    • cdn表示请求是CDN回源请求。
    • -表示请求不是CDN回源请求。
    StorageClass Standard 目标Object的存储类型。取值如下:
    • Standard表示标准存储。
    • IA表示低频访问存储。
    • Archive表示归档存储。
    • Cold Archive表示冷归档存储。
    • -表示未获取Object存储类型。
    TargetStorageClass - 是否通过生命周期规则或CopyObject转换了Object的存储类型。取值如下:
    • Standard表示转换为标准存储。
    • IA表示转换为低频访问存储。
    • Archive表示转换为归档存储。
    • Cold Archive表示转换为冷归档存储。
    • -表示请求不涉及Object存储类型转换操作。
    TransmissionAccelerationAccessPoint - 通过传输加速域名访问目标Bucket时使用的传输加速接入点。例如请求者通过华东1(杭州)的接入点访问目标Bucket时,值为cn-hangzhou

    取值-表示未使用传输加速域名或传输加速接入点与目标Bucket所在地域相同。

    AccessKeyID LTAI4FrfJPUSoKm4JHb5**** 请求者的AccessKey ID。取值-表示匿名请求。
  • 日志示例
    192.168.0.1 - - [03/Jan/2021:14:59:49 +0800] "GET /example.jpg HTTP/1.0" 200 999131 127 "http://www.aliyun.com/product/oss" "curl/7.15.5" "examplebucket.oss-cn-hangzhou.aliyuncs.com" "5FF16B65F05BC932307A3C3C" "true" "16571836914537****" "GetObject" "examplebucket" "example.jpg" 999131 88 "-" 302 "16571836914537****" - "cdn" "standard" "-" "-" "LTAI4FrfJPUSoKm4JHb5****"

    日志文件转存到OSS指定Bucket后,您可以通过日志服务对日志文件进行分析。对日志文件进行分析前,您需要通过数据导入方式将OSS日志文件导入到日志服务。有关数据导入的具体操作,请参见导入OSS数据。有关日志服务分析功能的更多信息,请参见分析概述

注意事项

  • 生成日志的源Bucket和存储日志的目标Bucket可以相同也可以不同,但是必须属于同一账号下的相同地域。
  • 日志文件以小时为单位生成,但并不表示某个时段的日志文件记录了该时段的所有请求,部分请求可能会出现在上一时段或下一时段的日志文件中。
  • 在您关闭日志转存功能前,OSS的日志文件会一直生成。请及时清理不再需要的日志文件,以减少您的存储费用。

    您可以通过生命周期规则定期删除日志文件。更多信息,请参见基于最后一次修改时间的生命周期规则介绍

  • OSS会根据需求在日志的尾部添加一些字段,请您在开发日志处理工具时考虑兼容性的问题。

操作方式

操作方式 说明
控制台 Web应用程序,直观易用。
命令行工具ossutil 命令行工具,性能好。
Java SDK 丰富、完整的各语言SDK demo。
Python SDK
PHP SDK
Go SDK
C SDK
.NET SDK
Node.js SDK
Ruby SDK

常见问题

中断的请求能否在OSS访问日志中查询?

OSS访问日志目前不会记录中断的请求。若您是通过SDK发起的请求,可以根据SDK的返回值判断请求中断的原因。