要估算 zone 每天的数据量(日志行数及其占用的字节数),可请求 1 小时时段的 1% 或 10% 样本数据(若流量较低,请使用 10%)。注意 start=2018-12-15T00:00:00Z 与 end=2018-12-15T01:00:00Z 跨度为 1 小时,且 sample=0.1。
curl "https://api.cloudflare.com/client/v4/zones/{zone_id}/logs/received?start=2018-12-15T00:00:00Z&end=2018-12-15T01:00:00Z&sample=0.1" \
--header "X-Auth-Email: <EMAIL>" \
--header "X-Auth-Key: <API_KEY>" \
> sample.logwc -l sample.log83 sample.logls -lh sample.log-rw-r--r-- 1 mik mik 25K Dec 17 15:49 sample.log据此信息,大约每天消息数为 19,920(83 × 10 × 24),字节大小为 6MB(25K × 10 × 24)。大小估算基于默认响应字段集。更改响应字段集(请参阅 Fields)会改变响应大小。
要较好估算每日流量,最好在小时样本中至少获得 30 行日志。若响应过小(或过大),请调整 sample 值,而非时间范围。
响应默认压缩(gzip)。cURL 会透明解压响应,除非调用时使用:
--header "Accept-Encoding: gzip"
在这种情况下,输出仍为 gzip 压缩。压缩后的数据大约为未压缩大小的 5-10%。这意味着 1GB 未压缩响应可压缩至 50-100MB。
若超出响应或超时限制,或获取响应时出现任何问题,将返回 200 状态,且响应以非 JSON 文本行 “Error streaming data.” 结尾。由于响应是流式传输的,无法提前识别错误。若响应不以 “Error streaming data" 文本行结尾,则视为成功。
一旦你对给定 zone 和时间范围收到成功响应,对所有后续请求以下内容成立:
- 返回记录的数量和内容相同。
- 返回记录的顺序可能(且很可能)不同。
关于是否包含 fields 参数:
- 当在请求 URL 中显式包含字段时,返回的字段不会改变。
- 当 URL 中未指定时,返回默认字段。
- 默认字段可能随时更改。
适用以下使用限制:
- 速率限制: 超出这些限制会导致
429错误响应:- 每个 zone 每分钟 15 次请求。
- 每个用户(电子邮件地址)每分钟 180 次请求。
- 时间范围: start 与 end 参数之间的最大差值可为 1 小时。
- 响应大小: 每个请求的最大响应大小为 10GiB,在选择约 55 个字段时大约相当于 1500 万条记录(选择较少字段时可检索更多记录,因为每条记录的大小会更小)。
- 超时: 10 分钟后响应会以连接终止失败。
- 流超时: 若连接空闲 30 秒,请求将以
408错误响应终止。此超时通常表示请求可能过于繁重(频繁超时(> 12 次/小时)会导致后续查询被以状态码 429 阻止 1 小时),因此:- 尝试使用较少字段请求记录。
- 尝试使用更小的 start 和 end 参数。