使用 Cloud Logging 檢視、搜尋和過濾網站的 Web 請求日誌

您可以將 Firebase 專案連結到 Cloud Logging,以查看、搜尋和過濾每個託管網站的 Web 請求日誌。這些日誌來自 Firebase 自動提供的 CDN,因此會記錄對您網站的每個請求以及關聯的請求資料。

以下是您使用 Cloud Logging 日誌執行的一些操作。請訪問此頁面的每個部分以了解詳細資訊。

如果您的專案中有多個託管站點,您可以選擇哪個託管站點將匯出日誌。然後,您可以按託管網站甚至網域過濾和查看日誌資料。透過選擇特定的託管網站來匯出日誌,您還可以控制為專案處理的資料量。

  1. 點選 Firebase 控制台中Cloud Logging整合卡中的「連結」

    若要連結或取消連結 Cloud Logging,您需要將權限綁定到下列任一角色:專案擁有者或編輯者Firebase 開發管理員

  2. 請依照螢幕上的指示選擇哪些託管網站應將日誌匯出到 Cloud Logging。

    如果您已有一個或多個活動託管站點,則連結工作流程會顯示每個託管站點的日誌的估計資料使用等級。該值是根據過去 30 天估算的。

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

您也可以取消 Firebase Hosting與 Cloud Logging 的鏈接,這樣會停止將 Web 請求日誌匯出到 Cloud Logging。

監控您的資料使用情況以取得日誌

連結到 Cloud Logging 後,您可以查看託管網站日誌的資料使用量:

更了解您的網站

Google Cloud 控制台中的日誌檢視器介面提供了使用查詢、內建篩選器和資料面板查看特定日誌和資料的工具。在下面的下一部分中了解有關使用查詢過濾日誌的更多資訊。

  • 您網站的詳細流量來自哪裡?
    您可以查看每個請求的信息,包括來源 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請求的發起城市

使用基於日誌的指標

您可以檢視和建立基於日誌的指標,然後在 Cloud Monitoring 中使用這些指標來建立圖表和警報政策。

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

  • 為您的專案建立使用者定義的指標。您可以計算與給定查詢相符的日誌條目的數量,或追蹤具有符合日誌條目的特定值。您可以使用正規表示式進行篩選。

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

Firebase 託管也會產生以下特定於託管的日誌記錄指標。這些指標並不是特定於日誌條目,而是特定於整個託管網站。

  • log_bytes :每個站點的資料使用總位元組數

  • response_count :為網站編寫的回應總數

    此指標包括 HTTP 狀態字段,因此您可以按狀態繪製 HTTP 回應(作為範例)。

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

您也可以將網站日誌匯出到其他 Google Cloud 工具,例如 Cloud Monitoring 或 BigQuery,例如:

  • 使用Cloud Monitoring ,您可以建立可在圖表和警報政策中使用的基於日誌的指標。

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

    • 使用 Data Studio 產生託管資料的儀表板。
    • 執行查詢以更深入地了解您的請求(平均回應大小、快取命中與未命中等)。
    • 了解您的用戶實際請求哪些 URL。
    • 將您的託管資料與您匯出到 BigQuery 的其他 Firebase 資料相結合,並以新的方式進行查詢。