使用 Cloud Logging 查看、搜索和过滤网站的 Web 请求日志

您可以将 Firebase 项目关联到 Cloud Logging,以便查看、搜索和过滤每个 Hosting 网站的 Web 请求日志。这些日志来自 Firebase 自动提供的 CDN,因此对网站的每个请求和关联的请求数据都会被记录。

Cloud Logging 日志可用于以下目的,请访问此页的各个部分了解详情。

如果您的项目中有多个 Hosting 网站,则可以选择将导出哪些 Hosting 网站的日志。然后,您可以按 Hosting 网站甚至按网域过滤和查看日志数据。通过选择特定 Hosting 网站来导出日志,您还可以控制为您的项目处理的数据量。

  1. 在 Firebase 控制台中,点击“Cloud Logging”集成卡片中的关联

    如需关联 Cloud Logging 或与其解除关联,您需要获得以下任何角色具有的权限:项目 Owner 或 EditorFirebase Develop Admin

  2. 按照屏幕上的说明选择应将哪些 Hosting 网站的日志导出到 Cloud Logging。

    如果您已经有一个或多个活跃 Hosting 网站,则关联工作流会显示来自每个 Hosting 网站的日志的估算数据使用量水平。此值是过去 30 天的估算值。

关联到 Cloud Logging 后,发送到 Hosting 网站的任何新请求的日志通常会在请求发出后 30 分钟内显示。

您还可以将 Firebase Hosting 与 Cloud Logging 解除关联,这样会停止将 Web 请求日志导出到 Cloud Logging。

监控日志的数据使用量

关联到 Cloud Logging 后,您可以在以下位置查看自己的 Hosting 网站中日志的数据使用量水平:

更好地了解您的网站

Google Cloud 控制台中的日志查看器界面提供了多种工具,可供您使用查询和内置过滤条件及数据面板查看特定日志和数据。如需详细了解如何使用查询过滤日志,请参阅下文。

  • 更具体地了解您的网站流量来自哪里?
    您可以查看每个请求的相关信息,包括来源 IP、引荐来源网址、城市和状态。

  • 用户何时访问您的网站?
    您可以使用“直方图”面板按特定时间范围查看分布情况。这可以让您深入了解应用使用量的常规高峰和低谷,并发现任何意外的流量高峰。

  • 最终用户请求的状态分布情况如何?
    您可以查看每个请求的状态,甚至可以对收到错误响应的请求进行诊断。您可以按 CriticalErrorWarning 过滤日志。

  • 您的网站需要多长时间来响应请求?
    您可以使用每个日志中捕获的 latency 值来查看网站的每个请求的延迟时间。

  • 您的网站是否利用内容缓存?
    每个日志都包含一个 cacheHit 字段,指示网站资源是从 Hosting 的 CDN 缓存位置快速提供,还是需要从客户端一直访问到 Hosting 后端才能获得。这有助于您充分利用 Firebase 的全球级 CDN 来提升网站的性能。例如,您可以根据这些数据微调静态资源动态内容的缓存习惯。

  • 传输到各个网域的流量的分布情况如何?
    如果您有多个网域或 Hosting 网站,可以按网域或网站过滤日志,这样便可以查看流量分布情况。按网域过滤时,您可以跟踪访问频率最高的网域。

使用查询过滤日志

如需了解如何使用查询过滤日志,请访问使用日志查看器的示例查询构建日志查询。下表介绍了这些查询可用的字段。

对于 Hosting,下面是一些查询的初始过滤条件:

  • 资源 (resource.type) — firebase_domain(Firebase Hosting 网站网域)
  • 日志名称 (logName) - webrequests (Firebase Hosting)

每个日志条目都有一个预定义的结构和多个可查询字段(请参阅 LogEntry)。对于 Hosting,某些字段是 HTTP 请求的标准字段,但还有一些字段值来自 Hosting 对每个请求进行的处理。

字段 说明
Firebase Hosting 将以下字段存储在日志条目的 httpRequest 对象中。
这些字段在 HTTP 规范中定义。
cacheHit Hosting CDN 是否在缓存中存储了该响应的资源
latency 请求的时长(以秒为单位),后缀为 s(例如 1.256s
protocol 请求所使用的协议(例如 HTTP/1.1HTTP/2websocket
referer 链接到当前所请求网页的上一个网页的网址(如果有)
remoteIp 请求的源客户端 IP
requestMethod 请求方法(GETPOSTPUT 等)
requestSize 请求的大小(以字节为单位)
requestUrl 请求的完整网址(例如
https://foo.web.app/barhttps://custom.domain.com?query=param
responseSize HTTP 响应大小(以字节为单位)
serverIp 未填充
status HTTP 响应状态(例如 200404
userAgent 请求的 user-Agent 标头
Firebase Hosting 会在日志条目的 jsonPayload 对象中存储其他字段。
acceptEncoding (来自 HTTP 请求)客户端支持的内容编码,通常是压缩算法(例如 gzipcompress
billable 系统是否针对此请求向您的项目收取了费用
customDomain 请求是否针对自定义网域发出
hostname 请求所针对的主机名
remoteIpCountry 发出请求的国家/地区
remoteIpCity 发出请求的城市

使用基于日志的指标

您可以查看和构建基于日志的指标,然后在 Cloud Monitoring 中使用这些指标创建图表和提醒政策。

  • 利用自动记录的预定义系统指标,例如在特定时间段内发生的日志记录事件的数量。

  • 为您的项目创建用户定义的指标。您可以统计与给定查询匹配的日志条目数,或使用匹配的日志条目跟踪特定值。您可以使用正则表达式进行过滤。

  • 还可以使用 Cloud Monitoring 记录包含特定消息的日志条目数,或提取日志条目中报告的延迟时间信息。然后,您可以在图表和提醒政策中使用这些指标。

Firebase Hosting 还会生成以下特定于 Hosting 的日志记录指标。这些指标并非特定于日志条目,而是整个 Hosting 网站。

  • log_bytes:每个网站的数据流量总字节数

  • response_count:为该网站编写的回复总数

    此指标包含 HTTP 状态字段,因此您可以按多种因素(例如状态)绘制 HTTP 响应。

将日志导出到其他 Google Cloud 工具

您还可以将网站的日志导出到其他 Google Cloud 工具(如 Cloud Monitoring 或 BigQuery),例如:

  • 使用 Cloud Monitoring,您可以创建可在图表和提醒政策中使用的基于日志的指标。

  • 借助 BigQuery,您可以执行以下任一操作:

    • 使用数据洞察生成 Hosting 数据的信息中心。
    • 运行查询以更深入地了解您的请求(平均响应大小、缓存命中与未命中等)。
    • 了解用户实际请求哪个网址。
    • 将您的 Hosting 数据与导出到 BigQuery 的其他 Firebase 数据相结合使用,以新的方式查询这些数据。