Latest File Release

#osc16ep (20161005)2016-10-05 11:46
piwik-fluentd (2.0.3)2015-11-12 15:22
Piwik patches for Japanese (20160813)2016-08-13 15:23

#osc16ep Piwik を elasticsearch + kibana で可視化してみる

#osc16ep 発表資料 speaker deck

Piwik の集計は、Web サイトに組みこんだ JavaScript (Piwik トラッカー)が Piwik に閲覧データを送ることで行われます。 もちろん Piwik であれば多角的に分析ができますが、Piwik トラッカーのデータを elasticsearch に入れ、kibana で可視化してみます。 くわしくはこちらへ

Piwik 日本語(マルチバイト)パッチ(2.6.0 ~ 2.16.2)

このパッチで Piwik の日本語(マルチバイト)問題を解決します

  • 検索エンジンからの着地時のキーワード検出でキーワードの文字コードが Shift_JIS あるいは EUC-JP である場合、文字化けする。
  • 自サイトの検索(Piwik の表記では "サイト内検索" )キーワードの抽出で、キーワードの文字コードが Shift_JIS あるいは EUC-JP である場合、文字化けする。
  • (Piwik 2.16.0 で本家にマージされました)上記キーワードが、255 バイトを超えるときは、256 バイト以上が切り捨てられる。256 バイト目がマルチバイト文字コード途中であれば、キーワードの最後が文字化けする。
  • tracker 使用時に action_name= で送られてくる UTF-8 のページ title が文字化けしたとき、 title 文字列を空白にし、データベースに文字化けで記録することを抑止する (Piwik >= 2.14.3)
  • (Piwik 2.16.0 で本家にマージされました) tracker 使用時に pk_campaign= (utm_campaign=) で送られてくる文字列が 70 バイト以上で切り捨てられる。 70 バイト目がマルチバイト文字コード途中であれば、文字列の最後が文字化けする。(Piwik >= 2.14.3)

くわしくはこちらへ

RedHat7 で td-agent 2.3.1 の全部入り rpm パッケージを作る

このプロジェクトが td-agent (fluentd)ありきなので、そもそものパッケージの作り方を書いてみました。 くわしくはこちらへ

piwik-fluentd の使い方 (Piwik 2.3.0 ~ 2.14.3)

なにができるのか

Piwik の import_logs.py にパッチを当てて、fluentd のログを取り込めるように機能拡張します。

  • Fluentd 経由の apache combined または urchin (ただし utm ログではありません)のアクセスログを取り込めるようになります。 また、デフォルトの取り込み method を get, post のみとしました。
  • (Piwik >= 2.14.3)Piwik tracker のログを fluentd で取り込めるようになりました。これは通常、集計対象の Web サイトのアクセスと同時に piwik.php cgi をたたいて取得していたサイト訪問者の詳細属性です。
  • 他にもコマンドラインが拡張されます。詳しくは import_logs.pyで拡張されたオプション をご覧ください。

What's new

Piwik <= 2.4.1(piwik-fluentd 1.0.[12])

初期バージョン、取り込むデフォルト method を get と post とし、その他は --method-include で指定するようにした。

2.4.1 < Piwik <= 2.6.1(piwik-fluentd 1.0.3)

オプション --static-extensions-include, --static-extensions-exclude, --download-extensions-include, --download-extensions-exclude を追加、静的ファイル、ダウンロードファイルの拡張子を自在に設定できるようになる。

2.7.0 <= Piwik <= 2.10.0 (piwik-fluentd 1.1.[0123456])

console core:archive を実行するタイミングをログ 1 ファイル毎から、cron で全てのサイトのログを取り込んだあとに変更した。これにより、大幅にログ処理時間が短くなった。

2.11.1 <= Piwik <= 2.14.1 (piwik-fluentd 1.2.[01234])

同一ディレクトリに約 3000 のログファイルがあるときに、 make が異常終了する不具合を修正。カレントディレクトリに残せるログファイル数(任意で指定可能)を超えた時は古いものからサブディレクトリ(任意で指定可能)に転送するようにした。

2.14.1 <= Piwik <= 2.14.3 (piwik-fluentd 2.0.0)

最新バージョン。Piwik tracker のログを fluentd で取り込めるようにした。あわせて --import-time-start, --import-time-end オプションを追加、どこからどこまでの時間を import_logs.py で取り込むのか指定できるようにした。

さあ、はじめましょう

以下順に設定してください。

再集計について

過去のログを取り込んだときに、 console core:archive を実行したにもかかわらず、集計されない日が出てきたときは、 再集計の方法 で再集計を行います。

Piwik <= 2.10.0 (piwik-fluentd <= 1.1.6) をお使いの皆様へ

piwik-fluentd >= 1.2.0 へのバージョンアップは設定ファイルの追加が必要です

piwik-fluentd >= 1.2.0 (Piwik >= 2.11.1) で、上記にもあるように make が異常終了する不具合 を修正しています。

変更するファイルは、

  • cron
  • GNUmakefile

加わるファイルは

  • MOVECONDITIONS

です。これらのファイルを上書きするか、新規で作成します。 MOVECONDITIONS については アクセスログ解析自動化 を参照してください。

Piwik <= 2.14.1 (piwik-fluentd <= 1.2.4) をお使いの皆様へ

piwik-fluentd >= 2.2.0 へのバージョンアップは設定ファイルの追加が必要です

piwik-fluentd >= 2.2.0 (Piwik >= 2.14.1 ) で、Piwik tracker のログを fluentd で取り込めるようにしました。

変更されるファイルは、

  • common.mak
  • cron
  • GNUmakefile
  • env.sh
  • importlogs.sh

加わるファイルは

  • IMPORTRANGE

です。これらのファイルを上書きするか、新規で作成します。 IMPORTRANGE については アクセスログ解析自動化 を参照してください。

Piwik 2.11.[012] で ./console core:archive ができない

  • 2.12 からインストール時に tracker ディレクトリが作成されるようになっています。

実行結果として次のように表示されます。

  [InvalidArgumentException]
  There are no commands defined in the "core" namespace.

Cron: InvalidArgumentException There are no commands defined in the "core" namespace. #7356 にスレッドが上がっていて、Piwik 2.8.3 では問題なかったのに 2.11.2 にしても解決しないとあります。

対処は、 /your_own_path/tmp/cache/tracker/ に書き込み権限を与えてください。 /your_own_path は Piwik をインストールしているディレクトリです(例: /var/www/piwik)。

多分

drwxr-x---.  2 apache   apache 4096  3月 19 13:27 2015 tracker/
となっているはずです。 これを、td-agent からも書き込めるように(もしくは ./console core:archive を実行するユーザー)権限を変更します。
sudo chmod g+rwxs /your_own_path/tmp/cache/tracker/
そして /etc/groups の apache に td-agent (もしくは ./console core:archive を実行するユーザー)を加えます
略
apache:x:48:td-agent
略
ヘルプメッセージがでれば成功です:
./console help core:archive 
Usage:
 core:archive [--url="..."] [--force-all-websites] [--force-all-periods[="..."]] [--force-timeout-for-periods[="..."]] [--skip-idsites[="..."]] [--force-idsites[="..."]] [--force-periods[="..."]] [--force-date-last-n="..."] [--force-date-range[="..."]] [--concurrent-requests-per-website[="..."]] [--disable-scheduled-tasks] [--accept-invalid-ssl-certificate] [--xhprof]

Options:
略

2.12.0 でインストール時に警告を出すように変更されるようです。

./console core:archive で、The response was empty

/var/www/piwik に piwik がインストールされているとして、次のエラーがでてきます:

[yamachan@piwik bin]$ php /var/www/piwik/console core:archive --url=http://yourpiwik
INFO CoreConsole[2015-05-19 07:38:29] ---------------------------
INFO CoreConsole[2015-05-19 07:38:29] INIT
INFO CoreConsole[2015-05-19 07:38:29] Piwik is installed at: http://yourpiwik/index.php
INFO CoreConsole[2015-05-19 07:38:29] Running Piwik 2.12.1 as Super User
ERROR CoreConsole[2015-05-19 07:38:30] Got invalid response from API request: http://yourpiwik/index.php?module=API&method=API.getDefaultMetricTranslations&format=original&serialize=1&trigger=archivephp. The response was empty. This usually means a server error. This solut
ion to this error is generally to increase the value of 'memory_limit' in your php.ini file. Please check your Web server Error Log file for more details.
ERROR CoreConsole[2015-05-19 07:38:30] The Piwik URL http://yourpiwik/index.php does not seem to be pointing to a Piwik server. Response was ''.
ERROR CoreConsole[2015-05-19 07:38:30] The Piwik URL http://yourpiwik/index.php does not seem to be pointing to a Piwik server. Response was ''.
  [Exception]
  The Piwik URL http://yourpiwik/scratch/index.php does not seem to be pointing to a Piwik server. Response was ''.
core:archive [--url="..."] [--force-all-websites] [--force-all-periods[="..."]] [--force-timeout-for-periods[="..."]] [--skip-idsites[="..."]] [--force-idsites[="..."]] [--force-periods[="..."]] [--force-date-last-n="..."] [--force-date-range[="..."]] [--concurrent-requests-per-website[=
"..."]] [--disable-scheduled-tasks] [--accept-invalid-ssl-certificate] [--xhprof]

/var/www/piwik/tmp/logs/piwik.log のパーミッションを console core:archive を実行するユーザーで書き込みができるよにすれば解決します。