使用 Cloud Logging 查看、搜索和過濾您網站的網絡請求日誌

您可以將 Firebase 項目鏈接到 Cloud Logging,以查看、搜索和過濾每個託管網站的網絡請求日誌。這些日誌來自 Firebase 自動提供的 CDN,因此會記錄對您網站的每個請求以及相關的請求數據。

以下是您對 Cloud Logging 日誌執行的一些操作。訪問此頁面的每個部分以了解詳細信息。

如果您的項目中有多個託管站點,您可以選擇哪些託管站點將導出日誌。然後,您可以按託管站點甚至域過濾和查看日誌數據。通過選擇特定的託管站點來導出日誌,您還可以控制為您的項目處理的數據量。

  1. 在 Firebase 控制台的Cloud Logging集成卡中點擊鏈接

    要關聯或取消關聯 Cloud Logging,您需要將權限綁定到以下任意角色:項目所有者或編輯者Firebase 開發管理員

  2. 按照屏幕上的說明選擇應將哪些託管站點導出到 Cloud Logging。

    如果您已經有一個或多個活動託管站點,則鏈接工作流會顯示來自您的每個託管站點的日誌的估計數據使用級別。該值是根據過去 30 天估算的。

鏈接到 Cloud Logging 後,對您的託管站點的任何請求的日誌通常會在發出請求後 30 分鐘內顯示。

您還可以取消 Firebase 託管與 Cloud Logging 的關聯,這會停止將網絡請求日誌導出到 Cloud Logging。

監控日誌的數據使用情況

鏈接到 Cloud Logging 後,您可以查看來自您的託管站點的日誌的數據使用級別:

更好地了解您的網站

Google Cloud Console 中的日誌查看器界面提供了一些工具,可以使用查詢以及內置過濾器和數據面板查看您的特定日誌和數據。在下面的下一部分中了解有關使用查詢過濾日誌的更多信息。

  • 您網站的流量從何而來?
    您可以查看有關每個請求的信息,包括源 IP、引用者、城市和狀態。

  • 用戶何時訪問您的網站?
    您可以使用直方圖面板查看特定時間範圍的分佈。這可以讓您深入了解應用使用的正常高峰和低谷,並揭示任何意外的流量高峰。

  • 最終用戶請求的狀態分佈是什麼?
    您可以查看每個請求的狀態,甚至可以診斷收到錯誤的請求。您可以按CriticalErrorWarning過濾日誌。

  • 您的網站需要多長時間來響應請求?
    您可以使用每個日誌中捕獲的latency值查看每個請求的站點延遲。

  • 您的網站是否利用了內容緩存?
    每個日誌都包含一個cacheHit字段,以告知您網站的資源是否從 Hosting 的 CDN 緩存中快速提供,或者是否必須完整訪問 Hosting 後端。這可以通過充分利用 Firebase 的全球 CDN 來幫助您提高網站的性能。例如,您可以使用這些數據來微調您的靜態資產動態內容的緩存習慣。

  • 您的各個域的流量分佈如何?
    如果您有多個域或託管站點,則可以按域或站點過濾日誌。這使您可以查看您的流量是如何分佈的。當您按域過濾時,您可以跟踪最常訪問的域。

使用查詢過濾您的日誌

要了解如何使用查詢過濾日誌,請訪問使用日誌查看器的示例查詢構建日誌查詢。下表描述了可用於這些查詢的字段。

對於託管,以下是查詢的一些初始過濾器:

  • 資源( resource.type ) — firebase_domain (Firebase 託管站點域)
  • 日誌名稱( logName ) — webrequests (Firebase 託管)

每個日誌條目都有一個預定義的結構和可查詢的字段(請參閱LogEntry )。對於 Hosting,一些字段是 HTTP 請求的標準字段,但還有其他字段值來自 Hosting 在每個請求上運行的處理。

場地描述
Firebase 託管將以下字段存儲在日誌條目的httpRequest對像中。
這些字段在 HTTP 規範中定義。
cacheHit Hosting CDN 是否有緩存中的響應資源
latency請求持續時間,以s為後綴(例如1.256s
protocol用於請求的協議(例如, HTTP/1.1HTTP/2websocket
referer前一個網頁的地址,從該網頁鏈接到當前請求的頁面(如果存在)
remoteIp請求的原始客戶端 IP
requestMethod請求方法( GETPOSTPUT等)
requestSize請求的大小(以字節為單位)
requestUrl請求的完整 URL(例如,
https://foo.web.app/barhttps://custom.domain.com?query=param
responseSize HTTP 響應大小(以字節為單位)
serverIp未填充
status HTTP 響應狀態(例如200404
userAgent請求的 user-Agent 標頭
Firebase 託管將其他字段存儲在日誌條目的jsonPayload對像中。
acceptEncoding (來自 HTTP 請求)客戶端支持哪種內容編碼,通常是壓縮算法(例如gzipcompress
billable您的項目是否已為請求計費
customDomain請求是否針對自定義域
hostname發出請求的主機名
remoteIpCountry請求的發起國
remoteIpCity請求的發起城市

使用基於日誌的指標

您可以查看和構建基於日誌的指標,然後在 Stackdriver Monitoring 中使用這些指標來創建圖表和提醒政策。

  • 利用自動記錄的預定義系統指標,例如在特定時間段內發生的日誌記錄事件的數量。

  • 為您的項目創建用戶定義的指標。您可以計算與給定查詢匹配的日誌條目數,或使用匹配的日誌條目跟踪特定值。您可以使用正則表達式進行過濾。

  • 使用Stackdriver Monitoring記錄包含特定消息的日誌條目數或提取日誌條目中報告的延遲信息。然後,您可以在圖表和警報策略中使用這些指標。

Firebase 託管還會生成以下託管特定的日誌記錄指標。這些指標並非特定於日誌條目,而是特定於整個託管站點。

  • log_bytes :每個站點的數據使用總字節數

  • response_count :為站點編寫的響應總數

    該指標包括 HTTP 狀態字段,因此您可以按狀態繪製 HTTP 響應(例如)。

將日誌導出到其他 Google Cloud 工具

您還可以將站點的日誌導出到其他 Google Cloud 工具,例如 Cloud Monitoring 或 BigQuery,例如:

  • 使用Stackdriver Monitoring ,您可以創建可在圖表和提醒政策中使用的基於日誌的指標。

  • 使用BigQuery ,您可以執行以下任何操作:

    • 使用數據洞察生成託管數據的儀表板。
    • 運行查詢以更深入地了解您的請求(平均響應大小、緩存命中與未命中等)。
    • 了解您的用戶實際請求的 URL。
    • 將您的託管數據與您導出到 BigQuery 的其他 Firebase 數據相結合,並以新的方式進行查詢。