アクセス元IPを取得するには、Google Analyticsのデフォルト設定ではできません。 IPを取得、集計するには
- Google Analyticsにdimensionを設定し、アクセス元IPを集計できるようにする
- PHPを使って、blogの参照時のIPを取得する
- 取得したIPをdimensionに渡す
- 集計結果をGoogle Analyticsで参照できるよう、カスタムレポートを作成する
という手順で対応します。
この記事で紹介するシステム構成
- CentOS6
- Ghost
- Nginx
何はともあれ、まずはGoogleAnalyticsを導入してください。
Google Analyticsにdimensionを設定し、アクセス元IPを集計できるようにする
Analyticsが提供していない値(今回でいうところのアクセス元IP)を集計するには、dimension(変数)を設定し、その変数に値を代入することで、集計することができるようになります。
アナリティクス設定 > カスタム定義 > カスタム ディメンション
新しいカスタム ディメンション > カスタム ディメンションを編集 > 保存
保存するとdimension1
という変数がAnalyticsに設定されます。
PHPを使って、blogが参照された時のIPを取得する
このblogにはGhostを動かすための最小の設定しかしていなかったので、まずはNginx上でPHPが動く環境を整えます。
# yum -y install php php-fpm
次に、事前に用意したdomainをバーチャルホスト(VH)に割り振り、そのVHに対してPHPが動くように設定します。
/etc/nginx/conf.d/php.conf
```` server { listen 80; server_name ga.10rane.com;
location / {
root /var/www/html;
index index.html index.htm index.php;
}
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
include fastcgi_params;
}
}
php-fpmの起動のおよびNginxの再起動
# /etc/init.d/php-fpm start
# chkconfig php-fpm on
# /etc/init.d/nginx restart
`/var/www/html/`配下に、アクセス元IPを取得するスクリプトを配置します。
このスクリプト自体はPHPですが、ブラウザ上からはJsとして認識させたいので、
`header`には`header("Content-type: application/x-javascript");`を設定します。
/var/www/html/remote_addr.php
<?php header(“Content-type: application/x-javascript”); echo “var remote_addr = ‘” . $_SERVER[‘REMOTE_ADDR’] . “‘;”; ?> ```
http://ga.10rane.com/remote_addr.php
にアクセスし、自分(アクセス元)のIPが参照されれば完了です。
- CentOSにてnginxでPHPを動かす
- javascriptでPHPファイルを実行してそれを出力する方法
- Google AnalyticsでIPアドレスを表示できるタグ「analyticsIP」を公開
取得したIPをdimensionに渡す
先ほど作成したソースで、変数remote_addr
にIPを代入するようにしたので、
今度はremote_addr
をAnalyticsのdimension1
に代入します。
変更前のタグ
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-****', 'auto');
ga('send', 'pageview');
</script>
変更後のタグ。Analyticsのタグより前に先ほど用意したスクリプト(PHPファイル)をJsとして読み込んでいます。
<script type="text/javascript" src="//ga.10rane.com/remote_addr.php"></script>
<noscript><img src="//ga.10rane.com/remote_addr.php"></noscript>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-****', 'auto');
ga('set', 'dimension1', remote_addr);
ga('send', 'pageview');
</script>
ghostの再起動。このブログはforever
で管理しているので、以下のように再起動します。
$ cd src/ghost/
$ forever stop index.js
$ NODE_ENV=production forever start index.js
集計結果をGoogle Analyticsで参照できるよう、カスタムレポートを作成する
カスタム > 新しいカスタム レポート >
ディメンションを追加 > カスタムディメンション > remote_addr(自分で設定した名前)
カスタム > 設定したカスタムレポート
集計結果は翌日反映されるので、明日以降にIPの集計が確認できれば成功です。
お疲れ様でした。