Cloudflare Logpush 支持将日志直接推送到 R2。你可以通过自动设置(Cloudflare 为你创建 R2 存储桶)完成,也可以使用自定义设置创建自己的 R2 存储桶。自动设置适合快速创建存储桶或用于测试。若需要完全控制配置,请使用自定义设置。
有关 R2 的更多信息,请参阅 Cloudflare R2 文档。
若要使用自动设置为 Logpush 作业:
-
在 Cloudflare 仪表板中,前往账户或域名(也称为 zone)级别的 Logpush(日志推送) 页面。
账户级别:Go to Logpush ↗
域名(也称为 zone)级别:Go to Logpush ↗
-
根据你的选择,可分别访问账户范围数据集与 zone 范围数据集。
-
选择 Create a Logpush job(创建 Logpush 作业)。
-
选择 R2 Object Storage - automatic(R2 对象存储 - 自动) 作为目标。
-
接下来,选择要使用的数据集和存储区域。
-
最后,选择 Create Logpush job(创建 Logpush 作业)。
设置现已完成。如果需要完全控制配置,请考虑改用自定义设置。
Cloudflare Logpush 支持通过 Cloudflare 仪表板或 API 将日志直接推送到 R2。
开始之前:
-
创建 R2 存储桶并设置 R2 API 令牌。
-
前往 R2 UI > Create bucket(创建存储桶)。
-
选择 Manage R2 API Tokens(管理 R2 API 令牌)。
-
选择 Create API token(创建 API 令牌)。
-
在 Permission(权限) 下,为令牌选择 Edit(编辑) 权限。
-
复制 Secret Access Key 和 Access Key ID。设置 Logpush 作业时将需要这些信息。
-
-
确保你拥有以下权限:
- R2 write、Logshare Edit。
-
在 Cloudflare 仪表板中,前往账户或域名(也称为 zone)级别的 Logpush(日志推送) 页面。
账户级别:Go to Logpush ↗
域名(也称为 zone)级别:Go to Logpush ↗
-
根据你的选择,可分别访问账户范围数据集与 zone 范围数据集。
-
选择 Create a Logpush job(创建 Logpush 作业)。
-
在 Select a destination(选择目标) 中,选择 R2 Object Storage(R2 对象存储)。
-
输入或选择以下目标详细信息:
- Bucket(存储桶) - R2 存储桶名称
- Path(路径) - 存储桶位置,例如
cloudflare-logs/http_requests/example.com - Organize logs into daily subfolders(按日整理到子文件夹)(推荐)
- 在 Authentication(身份验证) 下添加你的 R2 Access Key ID 和 R2 Secret Access Key。更多信息请参阅 Manage R2 API tokens ↗。
输入完目标详细信息后,选择 Continue(继续)。
-
选择要推送到存储服务的数据集。
-
在下一步中,需要配置你的 Logpush 作业:
- 输入 Job name(作业名称)。
- 在 If logs match(如果日志匹配) 下,可以选择要包含和/或从日志中排除的事件。更多信息请参阅 Filters。并非所有数据集都提供此选项。
- 在 Send the following fields(发送以下字段) 中,可以选择将所有日志推送到存储目标,或有选择地推送部分日志。
-
在 Advanced Options(高级选项) 中,你可以:
- 选择日志中时间戳字段的格式(
RFC3339(默认)、Unix或UnixNano)。 - 为日志选择 采样率,或推送随机采样百分比的日志。
- 为
CVE-2021-44228启用脱敏。此选项会将所有${替换为x{。
- 选择日志中时间戳字段的格式(
-
配置完 Logpush 作业后,选择 Submit(提交)。
要创建作业,请向 Logpush jobs 端点发送 POST 请求,并包含以下字段:
- name(可选)- 使用你的域名作为作业名称。
- destination_conf - 由存储桶路径、账户 ID、R2 access key ID 和 R2 secret access key 组成的日志目标。
r2://<BUCKET_PATH>/{DATE}?account-id=<ACCOUNT_ID>&access-key-id=<R2_ACCESS_KEY_ID>&secret-access-key=<R2_SECRET_ACCESS_KEY>- dataset - 你要接收的日志类别。完整支持的数据集列表请参阅 Datasets。
- output_options(可选)- 要配置字段、采样率和时间戳格式,请参阅 API configuration options。
使用 cURL 的示例请求:
Required API token permissions
At least one of the following token permissions is required:Logs Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/logpush/jobs" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"name": "<DOMAIN_NAME>",
"output_options": {
"field_names": [
"ClientIP",
"ClientRequestHost",
"ClientRequestMethod",
"ClientRequestURI",
"EdgeEndTimestamp",
"EdgeResponseBytes",
"EdgeResponseStatus",
"EdgeStartTimestamp",
"RayID"
],
"timestamp_format": "rfc3339"
},
"destination_conf": "r2://<BUCKET_PATH>/{DATE}?account-id=<ACCOUNT_ID>&access-key-id=<R2_ACCESS_KEY_ID>&secret-access-key=<R2_SECRET_ACCESS_KEY>",
"dataset": "http_requests",
"enabled": true
}'响应:
{
"errors": [],
"messages": [],
"result": {
"id": <JOB_ID>,
"dataset": "http_requests",
"kind": "",
"enabled": true,
"name": "<DOMAIN_NAME>",
"output_options": {
"field_names": ["ClientIP", "ClientRequestHost", "ClientRequestMethod", "ClientRequestURI", "EdgeEndTimestamp", "EdgeResponseBytes", "EdgeResponseStatus" ,"EdgeStartTimestamp", "RayID"],
"timestamp_format": "rfc3339"
},
"destination_conf": "r2://<BUCKET_PATH>/{DATE}?account-id=<ACCOUNT_ID>&access-key-id=<R2_ACCESS_KEY_ID>&secret-access-key=<R2_SECRET_ACCESS_KEY>",
"last_complete": null,
"last_error": null,
"error_message": null
},
"success": true
}有关更新作业(包括启用和禁用),请参阅 Manage Logpush with cURL。
日志存储到 R2 后,你可以通过多种方法下载:
-
在 Cloudflare 仪表板中,前往 R2 页面。
Go to Overview ↗ -
选择你的存储桶。
-
在存储桶页面中,找到所需的日志文件。
-
选择文件旁的 ... 图标以下载。
Cloudflare R2 与 S3 兼容,因此你可以使用 AWS CLI 与其交互。
- 使用你的 R2 凭据配置 AWS CLI。
- 使用
aws s3 cp命令下载日志文件:
aws s3 cp s3://<BUCKET-NAME>/<PATH-TO-LOG-FILE> <LOCAL-DESTINATION>将 <bucket-name>、<path-to-log-file> 和 <local-destination> 替换为你的具体信息。
下载的文件经过 gzip 压缩,必须先解压才能在文本编辑器中打开。