注意
本文档适用于 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. 如果您想支持这一点和我们的其他工作,请考虑加入现在加入.