跳转到内容
搜索文档

日志搜索(Log Search)

最后更新 查看 MarkdownAgent 设置

Log Explorer 使您能够直接在 Cloudflare 仪表板或 API 中存储和探索 Cloudflare 日志,从而无需将日志转发给第三方服务即可了解日志内容。日志使用 R2 对象存储平台存储在 Cloudflare 的全球网络上,并可以通过仪表板或 SQL API 进行查询。

何时使用 Log Explorer

当您需要调查生产流量中实际发生的情况时,使用 Log Explorer:

  • 分析历史数据和趋势
  • 在安全事件发生后进行调查
  • 在数千个请求中搜索模式
  • 随时间监测应用程序性能
  • 向支持团队提供取证证据

当您需要测试模拟请求会发生什么情况时,请使用 Trace

  • 了解规则为何未按预期触发
  • 测试您的规则如何处理不同的请求场景
  • 查看规则的评估顺序
  • 模拟来自不同地理位置或条件的请求

其核心区别在于,Log Explorer 显示实际流量,而 Trace 显示模拟的“假设”场景。

使用 Log Explorer

您可以通过 Cloudflare 仪表板或 API 过滤和查看日志。

  1. 在 Cloudflare 仪表板中,前往 Log Explorer(日志浏览器)> **Log Search(日志搜索)**页面。

    Go to Log search ↗
  2. 选择您要使用的 Dataset(数据集),并在 **Columns(列)**中选择数据集字段。如果您选择了区域范围的数据集,请选择您要使用的区域。

  3. 输入 Limit(限制数)。限制数是返回结果的最大数量,例如 50。

  4. 选择您要查询的 Time period(时间段),例如前 12 个小时。

  5. 选择 **Add filter(添加过滤器)**来创建您的查询。选择 Field(字段)、**Operator(运算符)**和 Value(值),然后选择 Apply(应用)

  6. 系统会显示查询预览。选择 **Custom SQL(自定义 SQL)**可修改查询。

  7. 完成后,选择 Run query(运行查询)。结果将显示在下方的 **Query results(查询结果)**区域中。

例如,要使用特定的 Ray ID 查找 HTTP 请求,请前往 Custom SQL(自定义 SQL),并输入以下 SQL 查询:

SELECT
	clientRequestScheme,
	clientRequestHost,
	clientRequestMethod,
	edgeResponseStatus,
	clientRequestUserAgent
FROM http_requests
WHERE RayID = '806c30a3cec56817'
LIMIT 1

作为另一个示例,要在特定时间段内查找具有所选列的 Cloudflare Access 请求,您可以执行以下 SQL 查询:

SELECT
	CreatedAt,
	AppDomain,
	AppUUID,
	Action,
	Allowed,
	Country,
	RayID,
	Email,
	IPAddress,
	UserUID
FROM access_requests
WHERE Date >= '2025-02-06' AND Date <= '2025-02-06' AND CreatedAt >= '2025-02-06T12:28:39Z' AND CreatedAt <= '2025-02-06T12:58:39Z'

要查询请求标头、响应标头和 Cookie,您必须首先使用自定义字段为这些字段启用日志记录。使用 API 或仪表板配置自定义字段列表;无需修改 Logpush 作业本身。

下面的示例展示了如何按日期、时间戳、客户端国家/地区和自定义请求标头来查询 HTTP 请求。请确保提前记录您计划查询的特定标头或 Cookie。

SELECT clientip, clientrequesthost, clientrequestmethod, edgeendtimestamp, edgestarttimestamp, rayid, clientcountry, requestheaders
FROM http_requests
WHERE Date >= '2025-07-17'
  AND Date <= '2025-07-17'
  AND edgeendtimestamp >= '2025-07-17T07:54:19Z'
  AND edgeendtimestamp <= '2025-07-18T07:54:19Z'
  AND clientcountry = 'us'
  AND requestheaders."x-test-header" like '%654AM%';

保存查询

为查询选择所有字段后,您可以通过选择 **Save query(保存查询)**将其保存。提供名称和描述,以便日后识别。要查看您保存的查询和最近的查询,选择 Queries(查询)—— 它们将显示在侧边栏面板中,您可以在其中插入新查询或删除任何查询。

与安全分析 (Security Analytics) 的集成

您也可以直接从 安全分析仪表板 (Security Analytics dashboard) 访问 Log Explorer 仪表板。执行此操作时,您在安全分析中应用的过滤器将自动结转到您在 Log Explorer 中的查询中。

优化您的查询

Log Explorer 支持的所有表都包含一个名为 date 的特殊列,该列有助于缩小为响应您的查询而扫描的数据量,从而缩短查询响应时间。date 的值必须采用 YYYY-MM-DD 格式。例如,要查询 2023 年 10 月 12 日发生的日志,请在 WHERE 子句中添加以下内容:date = '2023-10-12'。该列支持 <, >, 和 = 等标准运算符。

  1. 登录到 Cloudflare 仪表板 并选择您的账户。
  2. 前往 Log Explorer > Log Search(日志搜索) > Custom SQL(自定义 SQL)
  3. 输入以下 SQL 查询:
SELECT
	clientip,
	clientrequesthost,
	clientrequestmethod,
	clientrequesturi,
	edgeendtimestamp,
	edgeresponsestatus,
	originresponsestatus,
	edgestarttimestamp,
	rayid,
	clientcountry,
	clientrequestpath,
	date
FROM
	http_requests
WHERE
	date = '2023-10-12' LIMIT 500

额外的查询优化技巧

  • 缩小您的查询时间范围。专注于更小的时间窗口,以减少处理的数据量。这有助于避免查询过量的数据并加快响应速度。
  • 省略 ORDER BYLIMIT 子句。这些子句会减慢查询速度,在处理大型数据集时尤为明显。对于返回大量记录的查询,请缩短时间范围,而不是在更宽的时间范围内限制最新的 N 条记录。
  • 仅选择必需的列。例如,将 SELECT * 替换为您需要的特定列列表。您也可以将 SELECT RayId 作为第一步迭代,然后通过过滤 Ray ID 的查询来检索其他列。此外,您可以使用 SELECT COUNT(*) 来探测具有匹配记录的时间范围,而无需检索完整的数据集。

这篇文档对您有帮助吗?