Google Analytics の Cookie 値を HTTP サーバーのアクセスログに記録する


Google Analytics の cookie 値を HTTP サーバーのアクセスログに記録できないか調べたので、調べた結果を記載します。


動機

ユーザーの行動を解析する上で HTTP アクセスログと、Google Analytics の クライアントID が紐付けしておくと便利な場合があると、考えたためです。


参考


前提

  • OS の version

    cat /etc/redhat-release 
    CentOS release 6.9 (Final)
    

  • HTTP サーバーの version

    httpd -v
    Server version: Apache/2.2.15 (Unix)
    Server built:   Oct 19 2017 16:43:38
    


アクセスログに出力する情報

以下の2つをアクセスログに出力します。

  • mod_usertrack で出力する Cookie 値
    初回アクセス時は、Google Analytics の Cookie 値 は JavaScript で出力されるため 空になります。
    このアクセスの紐付けのため、mod_usertrack を使用します。
    mod_usertarack に出力する Cookie の 有効期限は、Google Analytics の Cookie 値と同様で 2年にしておきます。

  • Google Analytics の Cookie 値
    Google Analytics の Cookie 値を出力します。 キー値は、デフォルトの_ga です。


設定方法

  • モジュールの有効化

    # コメントアウトさえていれば、解除する   
    LoadModule usertrack_module modules/mod_usertrack.so
    

  • Cookie のトラッキングの有効化
    Cookie 名称が デフォルトだと、Apache だとわかる名称になるので変えたほうがいいかと思います。

    # For user_track
    CookieDomain .monotalk.xyz
    CookieTracking on
    CookieExpires "2 years"
    CookieName track
    CookieStyle Cookie
    

  • 気に成った点
    Cookie2 を使おうとして、以下の記載をしたのですが、何故か設定されず、Cookie を使用するようにしました。

    CookieStyle Cookie2
    

\"%{track}C\" \"%{_ga}C\" の記載を追加し、ログ行の末尾に、Cookie 値を出力するようにしました。

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" \"%{Accept-Language}i\" \"%{track}C\" \"%{_ga}C\"" combined

これで、track もしくは、_ga の値が同じ人は、同じユーザーという扱いでログ解析を行おうかと思います。
以上です。

コメント