サーバーレス ピクセル トラッキングを行う方法

このチュートリアルでは、ピクセル トラッキング インフラストラクチャを設定する方法について説明します。これはウェブサイトの設定に関するチュートリアルではありません。ここでは、ウェブページなどのパブリッシャのプロパティに埋め込むことができるピクセルを URL を通じて使用可能にする方法を示します。

このインフラストラクチャの例には、3 つの主な機能があります。次の機能です。

  • 提供: 場合によっては毎秒数十万リクエストを処理できるような、スケーラブルで高速なオブジェクト ストレージが必要です。このチュートリアルでは、Google Cloud Storage の使用方法を示します。
  • 収集: この部分は、ピクセルに対して行われたすべての HTTP リクエストを捕捉できる必要があります。このチュートリアルでは、Stackdriver Logging を利用する Google Compute Engine の HTTP ロードバランサを使います。
  • 分析: ユーザーがページにアクセスするたびにピクセルが読み込まれます。このようなリクエストは、1 秒間に数十万件のイベントを生成する可能性があります。このチュートリアルでは、Google BigQuery を使用して、パラメータを含めてすべてのデータを理解できるようにします。

目標

このチュートリアルの最後には、次のものが構築されます。

  • http://[YOUR_IP_ADDRESS]/pixel.png?[PARAMETERS] で提供されるピクセル。
  • ピクセルの URL に対して行われたリクエストを記録する方法。
  • ピクセルがページによって呼び出されたかのように動作するテスト環境。次のようなパラメータ文字列でさまざまな Key-Value ペアを組み合わせて URL を呼び出します。
    • ユーザー ID。
    • 表示されているページ。
    • ショッピング カートの商品。
  • Google BigQuery のログエクスポート機能は、ピクセル リクエストが発生したときに BigQuery に記録されるようにします。
  • 以下の理解に役立ついくつかのクエリ例:
    • ウェブサイトのトップユーザー。
    • 訪問されたページ。
    • ショッピング カートのトップ商品。

費用

このようなアーキテクチャでは、次のような費用が発生する可能性があります。

この例では BigQuery を使用していますが、必要に応じてさまざまなオプションを選択でき、それによって別に費用が発生します。

  • Google Cloud Storage へのエクスポート: ピクセルログをエクスポートする最も簡単な方法です。データは 1 時間ごとにエクスポートされ、ストレージの料金だけを払います。
  • BigQuery へのエクスポート: データをリアルタイムでアドホック分析ツールに提供します。関連費用には次の使用料が含まれます。
    • BigQuery ストレージ
    • BigQuery streaming API
    • BigQuery クエリ
  • Google Cloud Pub/Sub へのエクスポート: このチュートリアルの最後に記載されているこのソリューションは、Google Cloud Dataflow を使用してデータのリアルタイム集約を可能にします。このアプローチは、BigQuery ストリーミング API のコストを制限する可能性があります。このソリューションでは次のようなコストが発生します。
    • Cloud Pub/Sub
    • Cloud Dataflow

料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを出すことができます。

始める前に

  1. GCP Console で [リソースの管理] ページに移動します。

    [リソースの管理] ページに移動

  2. 既存のプロジェクトを選択するか、[プロジェクトを作成] をクリックして、新しい GCP プロジェクトを作成します。

ピクセル提供の設定

バケットの作成

バケットの作成は、UI または gsutil コマンドラインで行うことができます。このチュートリアルでは、次のようなバケット名を使用することを前提としています。

    [YOUR_PREFIX]-gcs-pixel-tracking

[YOUR_PREFIX] は一意の文字列に置き換えます。

バケットを作成するには:

GCP Console

  1. GCP Console で、Cloud Storage ブラウザに移動します。

    Cloud Storage ブラウザに移動

  2. [バケットを作成] をクリックします。
  3. [バケットを作成] ダイアログ内で、以下の属性を指定します。
  4. [作成] をクリックします。

コマンドライン

    新しい Cloud Storage バケットを作成します。[YOUR_BUCKET] は、バケット名の要件を満たすバケット名に置き換えます。
    gsutil mb gs://[YOUR_BUCKET]

バケットを作成すると、リストにバケットが表示されます。次に、それを一般公開します。GCP Console で次の手順に従います。

  1. 公開するバケットの行の右側にあるその他メニューをクリックします。
  2. [バケットの権限を編集] を選択します。
  3. [読み取り] として「allUsers」を追加します。

バケットに対する権限の設定

バケットに設定された権限

ピクセルのアップロード

Google の公開 Cloud Storage バケットからピクセルを直接コピーすることができます。

gsutil cp gs://solutions-public-assets/pixel-tracking/pixel.png  gs://[YOUR_PREFIX]-gcs-pixel-tracking

[YOUR_PREFIX]-gcs-pixel-tracking はバケットの名前に置き換えます。

または、ピクセルをローカルに作成した後、バケットの [ファイルをアップロード] ボタンを使用してアップロードすることもできます。

[公開リンク] チェックボックスを必ずオンにします。

ピクセルの公開

ロードバランサの設定

この時点で、Cloud Storage バケットには、一般公開された非表示のピクセルが 1 つ含まれます。次に、それに対して行われたすべてのリクエストを記録する方法を設定する必要があります。そのバケットの前面に HTTP ロードバランサを作成します。

  1. [ネットワーキング] の [負荷分散] に移動します。

    [負荷分散] を開く

  2. [ロードバランサを作成] をクリックします。

  3. [HTTP(S) 負荷分散] タイルの [設定を開始] をクリックします。

  4. Cloud Storage バケットのバックエンドを設定します。結果は次のイメージのようになります。バックエンド バケットの作成方法については、バックエンド バケットのドキュメントをご覧ください。

    バックエンドの構成

  5. 必要に応じてホストとパスを設定するか、基本構成のままにします。

  6. [作成] をクリックします。

完了すると、次のスクリーンショットのような環境になります。

バケットの設定

ログの収集

Stackdriver Logging のエクスポートを使用してログを収集します。ここでは、データを BigQuery に直接エクスポートします。エクスポートを設定するには、ロギングデータを受け取るデータセットを作成し、エクスポート ルールを設定する必要があります。

BigQuery での受信用データセットの作成

これは、次のように BigQuery ウェブ UI を使用して簡単に行うことができます。

  1. BigQuery ウェブ UI に移動します。

    BigQuery を開く

  2. プロジェクト名の横にある矢印をクリックします。

  3. [BigQuery] をクリックします。

  4. 名前に「gcs_pixel_tracking_analytics」と入力します。

エクスポートの設定

  1. Google Cloud Platform Console の [Stackdriver Logging] ページに移動します。

    Stackdriver を開く

  2. ロードバランサ用のフィルタを追加します。[YOUR_LB_NAME] はロードバランサの名前に置き換えます。

    resource.type = http_load_balancer AND resource.labels.url_map_name = "[YOUR_LB_NAME]"
    
  3. ページの上部にある [エクスポートを作成] をクリックします。

  4. シンク名を入力します。

  5. [シンクサービス] として [BigQuery] を選択します。

  6. [シンクのエクスポート先] として、前に作成したデータセットを選択します。

  7. [シンクを作成] ボタンをクリックします。

シンクの作成

架空データの作成

これでピクセルを提供できるようになりましたが、実際に動作するところを見るより優るものはありません。もちろん、ピクセルは何千ものページビューを獲得しているサイトにはまだありません。BigQuery でトラフィックを分析し、規模を拡大してどのように機能するかを見るために、ピクセルの URL に追加されたカスタムメイドのパラメータを使用して、架空のデータを作成します。

これを行うには、Vegeta を利用できます。負荷テスト環境を設定するチュートリアルは GitHub にあります。負荷テストは、次のように URL パラメータにランダムな値を追加することによって、ピクセル URL にリクエストを送信します。

GET http://[YOUR_IP_ADDRESS]/pixel.png?[YOUR_PARAMETERS]

パラメータは次の例のようになります。

uid=19679&pn=checkout&purl=http%3A%2F%2Fexample.com%2Fpage&e=pl&pr=prod1;prod2:

上の例の各要素の内容は次のとおりです。

  • uid はアクセスしている顧客のユーザー ID です。
  • purl はアクセスしているページの URL です。
  • e はイベントです。
  • pr はその時点でショッピング カートに入っている商品のリストです。

ログの分析

BigQuery のデータを分析するにはさまざまな方法があります。このチュートリアルでは、BigQuery ウェブ UI を使ってログを分析します。

次のセクションでは、ピクセル トラッキングのシナリオでよく使用されるクエリを示します。

再来店回数上位 5 顧客

次のクエリでは、ユーザー ID (uid) と、ピクセルをホストする URL に対する各 ID のリクエスト数 (c_uid) が一覧表示されます。結果は、回数が多い順に 5 件に制限されます。

SELECT
  count(REGEXP_EXTRACT(httpRequest.requestUrl, r"^.+uid=([0-9]*)")) as c_uid,
  REGEXP_EXTRACT(httpRequest.requestUrl, r"^.+uid=([0-9]*)") as uid
FROM
  `YOUR_PROJECT.YOUR_DATASET.request_*`
GROUP BY uid
ORDER BY c_uid DESC
LIMIT 5

結果

バケットの設定

上位 5 商品

この例では、パラメータ文字列に pr=product1;product2;product3 などが含まれています。どの商品に訪問者の関心が集まっているかを調べてみましょう。次のクエリでは、BigQuery の配列を使用して、すべてのパブリッシャーでの各商品の出現回数をカウントします。

SELECT
  DATE(timestamp) day,
  product,
  count(product) c_prod
FROM
  `[PROJECT_ID].gcs_pixel_tracking_analytics.[TABLE_ID]`
CROSS JOIN UNNEST(SPLIT(REGEXP_EXTRACT(httpRequest.requestUrl, r"^.+pr=(.*)"), ";")) as product
GROUP By product, day
ORDER by c_prod desc

[PROJECT_ID][TABLE_ID] は適切な値に置き換えてください。

たとえば、データを変換して別の BigQuery テーブルに保存し、Google Data Studio を使用してダッシュボードを作成することで、追加の分析を行うことができます。

負荷テスト

設定の負荷テストに関心があるユーザーのために、カスタムメイドの URL のリストを含む GitHub リポジトリが用意されています。テストは 100,000 QPS に達しますが、さらに必要があれば、より多くの需要に対してテストを行うこともできます。

コードは GitHub リポジトリにあります。

クリーンアップ

このチュートリアルで使用するリソースについて、Google Cloud Platform アカウントに課金されないようにする手順は次のとおりです。

プロジェクトの削除

すべてのリソースを削除する最も簡単な方法は、このチュートリアルで作成したプロジェクトを削除することです。プロジェクトを削除しない場合には、次のセクションで説明する手順に沿って操作してください。

  1. GCP Console で [プロジェクト] ページに移動します。

    プロジェクト ページに移動

  2. プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
  3. ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。

リソースを個別に削除する

プロジェクト全体ではなく、個々のリソースを削除する手順に沿って削除してください。

ストレージ バケットを削除する

  1. GCP Console で、Cloud Storage ブラウザに移動します。

    Cloud Storage ブラウザに移動

  2. 削除したいバケットの隣にあるチェックボックスをクリックします。
  3. ページの上部にある [削除] ボタンをクリックし、バケットを削除します。

BigQuery データセットを削除する

  1. BigQuery ウェブ UI を開きます。

    BigQuery を開く

  2. チュートリアルで作成した BigQuery データセットを選択します。

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...