Cloudflare Logpush 现已支持将日志发送到可配置的 HTTP 端点。
请注意,使用 Logpush 推送到 HTTP 端点时,Cloudflare 客户需自行对推送的日志进行身份验证。例如,客户可以在 Logpush 目标的 URL 或 HTTP 标头中指定密钥令牌。
-
在 Cloudflare 仪表板中,前往账户或域名(也称为 zone)级别的 Logpush(日志推送) 页面。
账户级别:Go to Logpush ↗
域名(也称为 zone)级别:Go to Logpush ↗
-
根据你的选择,可分别访问账户范围数据集与 zone 范围数据集。
-
选择 Create a Logpush job(创建 Logpush 作业)。
-
在 Select a destination(选择目标) 中,选择 HTTP destination(HTTP 目标)。
-
输入要将日志发送到的 HTTP endpoint(HTTP 端点),然后选择 Continue(继续)。 - 你可以使用
"header_*"URL 参数来设置请求标头,例如,向 HTTP 端点传递身份验证令牌。 -
选择要推送到存储服务的数据集。
-
在下一步中,需要配置 Logpush 作业:
- 输入 Job name(作业名称)。
- 在 If logs match(如果日志匹配) 下,可以选择要包含和/或从日志中排除的事件。请参阅 Filters 了解更多信息。并非所有数据集都提供此选项。
- 在 Send the following fields(发送以下字段) 中,可以选择将所有日志推送到存储目标,或有选择地选择要推送的日志。
-
在 Advanced Options(高级选项) 中,你可以:
- 选择日志中时间戳字段的格式(
RFC3339(默认)、Unix或UnixNano)。 - 为日志选择采样率,或推送随机采样的日志百分比。
- 为
CVE-2021-44228启用脱敏。此选项会将每次出现的${替换为x{。
- 选择日志中时间戳字段的格式(
-
完成 Logpush 作业配置后,选择 Submit(提交)。
要创建 Logpush 作业,请使用相应参数向 Logpush 作业创建端点 URL 发送 POST 请求。
支持的参数如下:
- 与其他来源相同的字段:
- dataset(必填):例如
http_requests。 - name(可选):建议使用你的域名作为作业名称。
- output_options(可选):请参阅 Log Output Options 以配置字段、采样率和时间戳格式。
- dataset(必填):例如
- 特有字段:
- destination_conf:日志发送位置。由端点 URL 和所用的 HTTP 标头组成。
- 任何
"header_*"URL 参数都将用于设置请求标头。- HTTPS 端点不能包含与你已设置的任何
"header_*"URL 参数冲突的自定义 URL 参数。 - 这些参数必须正确进行 URL 编码(例如,空格使用
"%20"),否则某些特殊字符可能会被错误解码。
- HTTPS 端点不能包含与你已设置的任何
- 除了特殊的
"header_*"参数外,destination_conf还可以有更多 URL 参数。- 未进行 URL 编码的特殊字符在上传时会被编码。
- 示例:
https://logs.example.com?header_Authorization=Basic%20REDACTED&tags=host:theburritobot.com,dataset:http_requests
- 任何
- max_upload_bytes(可选):一批日志的最大未压缩文件大小。此设置值必须在 5 MB 到 1 GB 之间。请注意,你无法设置最小文件大小;这意味着日志文件可能远小于此批次大小。
- max_upload_records(可选):每批的最大日志行数。此设置必须在 1,000 到 1,000,000 行之间。请注意,你无法指定每批的最小日志行数;这意味着日志文件可能包含远少于该数量的行。
- destination_conf:日志发送位置。由端点 URL 和所用的 HTTP 标头组成。
使用 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": "https://logs.example.com?header_Authorization=Basic%20REDACTED&tags=host:theburritobot.com,dataset:http_requests",
"output_options": {
"field_names": [
"ClientIP",
"ClientRequestHost",
"ClientRequestMethod",
"ClientRequestURI",
"EdgeEndTimestamp",
"EdgeResponseBytes",
"EdgeResponseStatus",
"EdgeStartTimestamp",
"RayID"
],
"timestamp_format": "rfc3339"
},
"max_upload_bytes": 5000000,
"max_upload_records": 1000,
"dataset": "http_requests",
"enabled": true
}'响应:
{
"errors": [],
"messages": [],
"result": {
"id": <JOB_ID>,
"dataset": "http_requests",
"kind": "",
"max_upload_bytes": 5000000,
"max_upload_records": 1000,
"enabled": true,
"name": "<DOMAIN_NAME>",
"output_options": {
"field_names": ["ClientIP", "ClientRequestHost", "ClientRequestMethod", "ClientRequestURI", "EdgeEndTimestamp", "EdgeResponseBytes", "EdgeResponseStatus" ,"EdgeStartTimestamp", "RayID"],
"timestamp_format": "rfc3339"
},
"destination_conf": "https://logs.example.com?header_Authorization=Basic%20REDACTED&tags=host:theburritobot.com,dataset:http_requests",
"last_complete": null,
"last_error": null,
"error_message": null
},
"success": true
}请参阅 使用 cURL 管理 Logpush 以更新作业(包括启用和禁用)。