Cloudflare Logpush 支持通过 Cloudflare 仪表板或 API 将日志推送到 S3 兼容目标,包括:
- Alibaba Cloud OSS ↗
- Backblaze B2 ↗
- DigitalOcean Spaces ↗
- IBM Cloud Object Storage ↗
- JD Cloud Object Storage Service ↗
- Linode Object Storage ↗
- Oracle Cloud Object Storage ↗
- 本地 Ceph Object Gateway ↗
有关 Logpush 及当前生产 API 的更多信息,请参阅 Cloudflare Logpush 文档。
-
在 Cloudflare 仪表板中,前往账户或域名(也称为 zone)级别的 Logpush(日志推送) 页面。
账户级别:Go to Logpush ↗
域名(也称为 zone)级别:Go to Logpush ↗
-
根据你的选择,可分别访问账户范围数据集与 zone 范围数据集。
-
选择 Create a Logpush job(创建 Logpush 作业)。
-
在 Select a destination(选择目标) 中,选择 S3-Compatible(S3 兼容)。
-
输入或选择以下目标信息:
- Bucket(存储桶) - S3 兼容存储桶名称
- Path(路径) - 存储容器内的路径位置
- Organize logs into daily subfolders(按日整理到子文件夹)(推荐)
- Endpoint URL - 不含存储桶名称或路径的 URL。例如:
sfo2.digitaloceanspaces.com。 - Bucket region(存储桶区域)
- Access Key ID(访问密钥 ID)
- Secret Access Key(秘密访问密钥)
完成目标详细信息输入后,选择 Continue(继续)。
-
选择要推送到存储服务的数据集。
-
在下一步中,需要配置 Logpush 作业:
- 输入 Job name(作业名称)。
- 在 If logs match(如果日志匹配) 下,可以选择要包含和/或从日志中移除的事件。更多信息请参阅 Filters。并非所有数据集都提供此选项。
- 在 Send the following fields(发送以下字段) 中,可以选择将所有日志推送到存储目标,或有选择地选择要推送的日志字段。
-
在 Advanced Options(高级选项) 中,可以:
- 选择日志中时间戳字段的格式(
RFC3339(默认)、Unix或UnixNano)。 - 为日志选择采样率,或推送随机采样的一定百分比的日志。
- 启用对
CVE-2021-44228的脱敏。此选项会将所有${替换为x{。
- 选择日志中时间戳字段的格式(
-
完成 Logpush 作业配置后,选择 Submit(提交)。
要设置 S3 兼容端点:
- 使用适当的端点 URL 和身份验证参数创建作业。
- 启用作业以开始推送日志。
在尝试读取或配置 Logpush 任务之前,请确保已启用 Log Share 权限。更多信息请参阅角色部分。
要创建作业,请向 Logpush jobs 端点发送包含以下字段的 POST 请求:
- name(可选)- 使用您的域名作为作业名称。
- destination_conf - 日志目标,由端点名称、存储桶名称、存储桶路径、区域、access-key-id 和 secret-access-key 组成,格式如下:
"s3://<BUCKET_NAME>/<BUCKET_PATH>?region=<REGION>&access-key-id=<ACCESS_KEY_ID>&secret-access-key=<SECRET_ACCESS_KEY>&endpoint=<ENDPOINT_URL>"- dataset - 要接收的日志类别。完整支持的数据集列表请参阅 Datasets。
- output_options(可选)- 要配置字段、采样率和时间戳格式,请参阅 Log Output 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>",
"destination_conf": "s3://<BUCKET_NAME>/<BUCKET_PATH>?region=<REGION>&access-key-id=<ACCESS_KEY_ID>&secret-access-key=<SECRET_ACCESS_KEY>&endpoint=<ENDPOINT_URL>",
"output_options": {
"field_names": [
"ClientIP",
"ClientRequestHost",
"ClientRequestMethod",
"ClientRequestURI",
"EdgeEndTimestamp",
"EdgeResponseBytes",
"EdgeResponseStatus",
"EdgeStartTimestamp",
"RayID"
],
"timestamp_format": "rfc3339"
},
"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": "s3://<BUCKET_NAME>/<BUCKET_PATH>?region=<REGION>&access-key-id=<ACCESS_KEY_ID>&secret-access-key=<SECRET_ACCESS_KEY>&endpoint=<ENDPOINT_URL>",
"last_complete": null,
"last_error": null,
"error_message": null
},
"success": true
}有关更新作业(包括启用和禁用),请参阅 使用 cURL 管理 Logpush。