注意

本文档适用于 Ceph 开发版本。

桶日志记录

T 版本中的新功能。

桶日志记录提供了一种记录对桶的所有访问的机制。日志数据可用于监控桶活动、检测未经授权的访问、了解桶使用情况,并使用日志作为桶更改的日记。日志记录保存在单独桶中的对象中,稍后可以进行分析。日志配置在桶级别进行,可以随时启用或禁用。日志桶可以累积多个桶的日志。建议为每个桶配置不同的“前缀”,以便不同桶的日志将保存在日志桶中不同的对象中。

Note

  • 在启用桶日志记录之前必须创建日志桶

  • 日志桶不能与正在记录的桶相同

  • 日志桶上不能启用日志记录

  • 日志桶上不能设置任何加密(包括使用 AES-256 的 SSE-S3)

  • 日志桶上不能设置任何压缩

  • 日志桶必须禁用 RequestPayer

  • 源桶和日志桶必须在同一个 zonegroup 中

  • 源桶和日志桶可以属于不同的账户(设置适当的桶策略)

  • 日志桶可以启用对象锁定,并设置默认保留期

日志可靠性

出于性能原因,尽管日志记录写入持久存储,但日志对象只有在经过可配置的一段时间(或达到 128MB 的最大对象大小)后才会出现在日志桶中。此时间(以秒为单位)可以通过 REST API 的 Ceph 扩展为每个源桶设置,或通过rgw_bucket_logging_obj_roll_time配置选项全局设置。如果未设置,默认时间为 5 分钟。将日志对象添加到日志桶是“延迟”完成的,这意味着如果不再向对象写入记录,即使经过配置的时间后,它也可能仍然在日志桶之外。

标准

如果日志类型设置为“标准”(默认值),则在桶操作完成后将日志记录写入日志桶。这意味着日志操作可能会失败,而不会向客户端指示。

日志

如果日志类型设置为“日记”,则记录将在桶操作完成之前写入日志桶。这意味着如果日志操作失败,操作将不会执行,并且将向客户端返回错误。

桶日志记录策略

在源桶上,只有其所有者才允许启用或禁用桶日志记录。s3:PutObject操作为日志桶执行,由logging.s3.amazonaws.com服务主体执行。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowLoggingFromSourceBucket",
      "Effect": "Allow",
      "Principal": {
        "Service": "logging.s3.amazonaws.com"
      },
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::log-bucket-name/prefix*",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "source-account-id"
        },
        "ArnLike": {
          "aws:SourceArn": "arn:aws:s3:::source-bucket-name"
        }
      }
    }
  ]
}

桶日志记录配额

桶和用户配额应用于日志桶。每次写入日志记录时都会检查配额,并在将日志对象添加到日志桶时更新配额。在“日记”模式下,如果配额超出限制,日志操作将失败,从而导致桶操作也失败。在“标准”模式下,日志操作将被跳过,但桶操作将继续。

桶日志记录 REST API

Detailed under: Bucket Operations.

日志对象键格式

简单

具有以下格式:

<prefix><year-month-day-hour-minute-second>-<16 bytes unique-id>

例如:

fish/2024-08-06-09-40-09-TI9ROKN05DD4HPQF

分区

具有以下格式:

<prefix><bucket owner>/<source region>/[tenant:]<bucket name>/<year>/<month>/<day>/<year-month-day-hour-minute-second>-<16 bytes unique-id>

例如:

fish/testid//all-log/2024/08/06/2024-08-06-10-11-18-1HMU3UMWOJKNQJ0X

日志记录

日志记录是空格分隔的字符串列,具有以下可能的格式:

日志

用于记录桶更改的最少数据量(这是 Ceph 扩展)。

  • 桶所有者(如果为空则为短横线)

  • 桶名称(如果为空则为短横线)。格式为:[tenant:]<bucket name>

  • 时间格式为:[day/month/year:hour:minute:second timezone]

  • 对象键(如果为空则为短横线)

  • 操作格式为:WEBSITE/REST.<HTTP method>.<resource>

  • 对象大小(如果为空则为短横线)

  • 版本 ID(为空则为短横线,如果未知则为问号)

  • eTag

例如:

testid fish [06/Aug/2024:09:40:09 +0000] myfile - REST.PUT.OBJECT 4cfdfc1f58e762d3e116787cb92fac60
testid fish [06/Aug/2024:09:40:28 +0000] myfile REST.DELETE.OBJECT 4cfdfc1f58e762d3e116787cb92fac60

标准

基于AWS 日志记录格式.

  • 桶所有者(如果为空则为短横线)

  • 桶名称(如果为空则为短横线)。格式为:[tenant:]<bucket name>

  • 时间格式为:[day/month/year:hour:minute:second timezone]其中“时区”为 UTC 偏移量

  • 客户端 IP 地址(如果为空则为短横线)

  • 用户或账户(如果为空则为短横线)

  • 请求 ID

  • 操作格式为:WEBSITE/REST.<HTTP method>.<resource>

  • 对象键(如果为空则为短横线)

  • 请求 URI 格式为:"<HTTP method> <URI> <HTTP version>"

  • HTTP 状态(如果为零则为短横线)。注意,在大多数情况下,日志是在状态已知之前写入的

  • 错误代码(如果为空则为短横线)

  • 发送的字节数(如果为零则为短横线)

  • 对象大小(如果为零则为短横线)

  • 总时间(不支持,始终为短横线)

  • 毫秒内的周转时间

  • 引用(如果为空则为短横线)

  • 用户代理(如果为空则为短横线)双引号内

  • 版本 ID(如果为空则为短横线)

  • 从“x-amz-id-2”中获取的主机 ID(如果为空则为短横线)

  • 签名版本(如果为空则为短横线)

  • 密码套件(如果为空则为短横线)

  • 身份验证类型(如果为空则为短横线)

  • 主机标头(如果为空则为短横线)

  • TLS 版本(如果为空则为短横线)

  • 访问点 ARN(不支持,始终为短横线)

  • ACL 标志(如果请求是 ACL 操作则为“是”,否则为短横线)

例如:

testid fish [06/Aug/2024:09:30:25 +0000] - testid 9e369a15-5f43-4f07-b638-de920b22f91b.4179.15085270386962380710 REST.PUT.OBJECT myfile "PUT /fish/myfile HTTP/1.1" 200 - 512 512 - - - - - - - - - localhost - -
testid fish [06/Aug/2024:09:30:51 +0000] - testid 9e369a15-5f43-4f07-b638-de920b22f91b.4179.7046073853138417766 REST.GET.OBJECT myfile "GET /fish/myfile HTTP/1.1" 200 - - 512 - - - - - - - - - localhost - -
testid fish [06/Aug/2024:09:30:56 +0000] - testid 9e369a15-5f43-4f07-b638-de920b22f91b.4179.10723158448701085570 REST.DELETE.OBJECT myfile "DELETE /fish/myfile1 HTTP/1.1" 200 - - 512 - - - - - - - - - localhost - -

由 Ceph 基金会带给您

Ceph 文档是一个社区资源,由非盈利的 Ceph 基金会资助和托管Ceph Foundation. 如果您想支持这一点和我们的其他工作,请考虑加入现在加入.