如何从云日志中分析 Firebase 托管下载

How to analyze Firebase Hosting downloads from cloud logging

我有一个小型 Firebase 项目,该项目使用 Firebase 托管来托管具有几个云功能的静态站点。通常情况下,它远低于免费限制,但在过去几天里,我看到一些非常大的峰值远远超出了免费限制。我试图确定这是为什么。比如什么文件被下载这么多,流量从哪里来等等

我已将该项目的 firebase 托管链接到 google Cloud Logging。所以我可以进去查看网络请求日志,这让我可以看到原始细节。但是我找不到汇总和分析这些信息的方法。

例如,我想回答如下问题:

然后这些查询会导致什么结果。

是否可以在 Google Cloud Platform 中执行此类操作?公司在分析他们的网络请求流量以了解其去向时似乎是一件非常标准的事情,但我找不到任何关于如何做到这一点的信息。这让我觉得我不知道正确的搜索词来找到使用 GCP 执行此操作的最佳方法。

有什么建议吗?

要分析过去几天的流量,请使用 Big Query 加载日志并查询它们而不是云日志记录,因为基于日志的指标仅在 之后捕获数据已定义(不能用于分析过去几天的流量)。

将日志加载到 BigQuery 的步骤:

  1. 将现有日志数据导出到 GCS 存储桶:您需要将已存储在 Cloud Logging 存储桶中的日志条目复制到 Cloud Storage 存储桶。当复制操作开始时,日志记录仅复制存储在日志桶中的日志条目。在复制操作开始后提取和存储的日志条目不会复制到 Cloud Storage。参考 Copying log entries.
  2. 将导出的数据加载到 BigQuery(导出的数据是 JSON。将 logs.json 文件上传到 BigQuery,使用 JSONL 文件格式。参考 Loading JSON data from Cloud Storage.
  3. 现在使用标准 SQL 查询日志。标准 SQL 是首选 SQL 方言,用于查询存储在 BigQuery 中的数据。参考 BigQuery schema for logs.

示例查询:

  1. 对于给定的 24 小时时间段,列出每个请求 URL 按所有请求的总请求大小排序:

     SELECT  httpRequest.requestUrl, SUM(httpRequest.responseSize) AS totSize FROM logs_table GROUP BY httpRequest.requestUrl
    

注意:新生成的日志更容易,因为可以通过配置接收器来设置直接日志路由到 BigQuery 表。当 Logging 收到新的日志条目时,会将它们与每个接收器进行比较。如果日志条目与接收器的过滤器匹配,则日志条目的副本将写入接收器的目的地。有关信息,请参阅 Configure sinks