Cloud Logging を使用してサイトのウェブ リクエストログを表示、検索、フィルタする

Firebase プロジェクトを Cloud Logging にリンクすると、各 Hosting サイトのウェブ リクエストログを表示、検索、フィルタできます。これらのログは Firebase によって自動的に提供される CDN から取得されるため、サイトへのすべてのリクエストと関連するリクエスト データが記録されます。

Cloud Logging ログには次のような機能があります。詳細については、このページの各セクションをご覧ください。

プロジェクトに複数の Hosting サイトがある場合は、どの Hosting サイトでログをエクスポートするかを選択できます。その後、Hosting サイトやドメインでもログデータをフィルタして表示できます。ログをエクスポートする特定の Hosting サイトを選択することで、プロジェクトで処理されるデータの量も制御できます。

  1. Firebase コンソールの Cloud Logging [統合] カードで [リンク] をクリックします。

    Cloud Logging をリンクまたはリンク解除するには、プロジェクト オーナー、編集者Firebase Develop 管理者のいずれかのロールにバンドルされた権限が必要です。

  2. 画面上の指示に従って、Cloud Logging にログをエクスポートする Hosting サイトを選択します。

    アクティブな Hosting サイトがすでにある場合、リンク ワークフローには、各 Hosting サイトのログの推定データ使用レベルが表示されます。この値は過去 30 日間から推定されます。

Cloud Logging にリンクした後、Hosting サイトへの新しいリクエストのログは、通常はリクエストが行われてから 30 分以内に表示されます。

Cloud Logging から Firebase Hosting のリンクを解除すると、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 リクエストの完全な URL(例:
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 ツールにログをエクスポートする

サイトのログを、Cloud Monitoring や BigQuery などの他の Google Cloud ツールにエクスポートすることもできます。次に例を示します。

  • Cloud Monitoring を使用すると、グラフやアラート ポリシーで使用できるログベースの指標を作成できます。

  • BigQuery を使用すると、次のことが可能になります。

    • データポータルを使用して、Hosting データのダッシュボードを生成する。
    • クエリを実行して、リクエストを詳しく分析する(平均レスポンス サイズ、キャッシュ ヒット数とミス数など)。
    • ユーザーが実際にリクエストする URL を確認する。
    • BigQuery にエクスポートした他の Firebase データと Hosting データを結合し、新しい方法でクエリする。