Cloudflare Logpush 支持通过 Cloudflare 仪表板或 API 将日志直接推送到 Google Cloud Storage (GCS)。
-
在 Cloudflare 仪表板中,前往账户或域名(也称为 zone)级别的 Logpush(日志推送) 页面。
账户级别:Go to Logpush ↗
域名(也称为 zone)级别:Go to Logpush ↗
-
根据你的选择,可分别访问账户范围数据集与 zone 范围数据集。
-
选择 Create a Logpush job(创建 Logpush 作业)。
-
在 Select a destination(选择目标) 中,选择 Google Cloud Storage(Google 云存储)。
-
输入或选择以下目标详细信息:
- Bucket(存储桶) - GCS 存储桶名称
- Path(路径) - 存储容器内的存储桶位置
- Organize logs into daily subfolders(按日整理到子文件夹)(推荐)
- 对于 Grant Cloudflare access to upload files to your bucket(授予 Cloudflare 将文件上传到存储桶的权限),请确保您的存储桶已将 Cloudflare 的 IAM 添加为具有 Storage Object Admin 角色 ↗ 的用户。
输入完目标详细信息后,选择 Continue(继续)。
-
为证明所有权,Cloudflare 将向您指定的目标发送一个文件。要找到令牌,请在所有权质询文件的 Overview(概览) 标签页中选择 Open(打开) 按钮,然后将其粘贴到 Cloudflare 仪表板中以验证您对存储桶的访问权限。输入 Ownership Token(所有权令牌) 并选择 Continue(继续)。
-
选择要推送到存储服务的数据集。
-
在下一步中,您需要配置 Logpush 作业:
- 输入 Job name(作业名称)。
- 在 If logs match(如果日志匹配) 下,您可以选择要包含和/或从日志中移除的事件。更多信息请参阅 过滤器。并非所有数据集都提供此选项。
- 在 Send the following fields(发送以下字段) 中,您可以选择将所有日志推送到存储目标,或有选择地选择要推送的日志。
-
在 Advanced Options(高级选项) 中,您可以:
- 选择日志中时间戳字段的格式(
RFC3339(默认)、Unix或UnixNano)。 - 为日志选择采样率,或推送随机采样百分比的日志。
- 为
CVE-2021-44228启用脱敏。此选项会将每次出现的${替换为x{。
- 选择日志中时间戳字段的格式(
-
配置完 Logpush 作业后,选择 Submit(提交)。
Cloudflare 使用 Google Cloud Identity and Access Management (IAM) 获取对您存储桶的访问权限。Cloudflare IAM 服务账户需要对存储桶具有管理员权限。
在尝试读取或配置 Logpush 任务之前,请确保已启用 Log Share 权限。更多信息请参阅角色部分。
要启用 Logpush 到 GCS:
-
创建 GCS 存储桶。请参阅 GCS 的说明 ↗。
-
在 Storage > Browser > Bucket(存储桶) > Permissions(权限) 中,添加成员
logpush@cloudflare-data.iam.gserviceaccount.com,并授予Storage Object Admin权限。
Logpush 始终以 gzip 压缩格式交付日志文件。上传到 GCS 时,Logpush 会在对象元数据上设置 Content-Encoding: gzip。
GCS 默认执行解压缩转码 ↗。这意味着当客户端下载以 Content-Encoding: gzip 存储的对象时,如果客户端未在请求标头中包含 Accept-Encoding: gzip,GCS 可能会在传输过程中自动解压缩文件。发生这种情况时,下载的文件包含未压缩的数据,即使文件名仍保留 .gz 扩展名。
要以原始压缩格式下载日志文件,请使用以下方法之一:
-
在下载请求标头中包含
Accept-Encoding: gzip。 例如,使用 gsutil 时:gsutil -h "Accept-Encoding: gzip" cp gs://your-bucket/path/file.log.gz .