見出し画像

第6回 ログファイルをMatomoにインポートする

【登場人物】

IT営業アシスタント。上司にネットでの製品PRを命じられ、ウェブサイトを作ることになった。ただ、でき上がったサイトをどう運営していけばいいかわからず悩んでいる。

元SE。今はアクセス解析ツールの営業。
Webマーケティングについてお客様に日々説明をしている。

アクセス解析の技術者。
アクセス解析の重鎮、生き字引、サポートの鬼。
アクセス解析でわからないことがあれば何なりと。


Matomoを使う環境が出来上がったところで、目的である「過去のウェブサイトアクセスを解析する」ために、ログファイルを読み込ませよう。
アクセスログとはなにか、覚えているかな?「第1回 過去のアクセス状況が知りたい!」でおさらいしてみてね。

ログファイルの読み込みを「インポート」と呼ぶよ。
インポートするには、次の3つのステップがあるよ。

  1. ログファイルをmatomoサーバーに保存する。

  2. ログファイルをMatomoにインポートする。

  3. インポートされたデータを処理してレポートを見られるようにする。

アクセスログファイルは依頼してきた方から預かっています。PCに保存してあってもインポートはできないんですね。

そうだよ。MatomoはGoogle Analyticsの代替を目指して開発されたツールだから、本来はタグをサイトに導入して解析するんだ。だからインポートは追加の機能なんだね。
最初は、ログファイルをMatomoサーバーに転送するよ。使うツールはTeratermだ。

Teratermによるサーバーへの接続方法は、第3回第4回の記事を見直してください。

Teratermにはファイルを転送する「SSH SCP」というメニューがある。

これをクリックすると、こんな画面が開く。

ファイルをどこに格納するかは「To:」フィールドに指定する。いろいろ便利なので「/tmp」を指定しておこう。

/tmpは、一時的なファイルを置くためのディレクトリで、ここに置いてあるファイルはサーバー再起動時や一定日数後に自動的に削除されますね。

「From:」に送信したいログファイルのパスを指定するんだけど、右側にある[…]ボタンをクリックすると、見慣れたファイルダイアログが開くので、ログファイルを選択して「開く」ボタンをクリックしよう。

最後に「送信」ボタンをクリックすればファイルの転送が始まるよ。Teratermから、念のためちゃんとファイルが転送されたかを確認しよう。

ls -l /tmp	

今転送したaccess_log-20240916が、ファイル名として表示されるね。

次はMatomoへのインポートだ。
これはMatomoに付属しているPythonスクリプトを利用する。必要なPythonのバージョンは3.xだ。
スクリプトのある場所に移動しよう。

cd /var/www/html/matomo/misc/log-analytics/	

ここにあるimport_logs.pyがインポートスクリプトだよ。これをPython3を使って動作させるよ。

python3 import_logs.py --url=http://localhost/matomo --idsite=1 /tmp/access_log-20240916

コマンドの後にハイフンで始まるものがついていますが、これは何ですか?

ログファイル名以外にいくつかオプションパラメータをつける必要があるんだ。

--urlは、MatomoのメインプログラムがあるFQDNだね。サーバー内からの呼び出しなので、http://localhost/matomo を使っているよ。
--idsiteは、Matomoに存在する「ウェブサイト」のID番号だ。今回は作成したばかりのMatomo環境なので、IDは1になるね。

ウェブサイトのIDは変わることもあるのですか?

Matomoの管理画面で、ウェブサイトを追加すると新しいIDが発行される。そちらのウェブサイトにログファイルをインポートする場合は、--idsiteの値は変わるよ。

IDは自動的に発行され、自分で変更することはできないのですね。

ログファイルの読み込みが終わると、ログファイルインポート処理のインフォメーションが表示される。

Logs import summary
-------------------

11266 requests imported successfully
4624 requests were downloads
78119 requests ignored:
6858 HTTP errors
6666 HTTP redirects
0 invalid log lines
0 filtered log lines
0 requests did not match any known site
0 requests did not match any --hostname
3389 requests done by bots, search engines...
61206 requests to static resources (css, js, images, ico, ttf...)
0 requests to file downloads did not match any --download-extensions

Website import summary
----------------------

11266 requests imported to 1 sites
1 sites already existed
0 sites were created:

0 distinct hostnames did not match any existing site:

Performance summary
-------------------

Total time: 79 seconds
Requests imported per second: 142.27 requests per second

Processing your log data
------------------------

In order for your logs to be processed by Matomo, you may need to run the following command:
./console core:archive --force-all-websites --url='http://localhost/matomo'

最初の部分でこのログファイルからは、

  • 11266件の有効なリクエスト(ページビュー)が読み取れた。

  • 4624件のダウンロード(ページビューに含まれない)が読み取れた。

  • 78119件のアクセスは、アクセスエラーだったり、リダイレクトだったり、ボットからのアクセスだったり、ページビューにカウントしない種類のファイルだったので無視された。

ということが分かるね。

さらに、処理にかかった時間は79秒で、1秒当たり142.27リクエストが処理できたこともわかる。

こういった情報は何に役立つのでしょうか。

1秒当たりの処理リクエスト数が少ない、つまり処理が遅いようなら、サーバーのスペックを上げた方がいいね。CPUコア数が複数あるタイプなら、並列処理を行う「--recorders=」というオプションを追加することも検討できるよ。

例えば、サーバーのCPUコア数が4個だった場合、DBが使う分を引いて

python3 import_logs.py --url=http://localhost/matomo --idsite=1 --recorders=3 /tmp/access_log-20240916

とすれば、並列に3つのプロセスが動いてインポートの速度を上げてくれる。

また、フィールドが壊れているとかログファイルの内容に問題があれば、それも指摘してくれるよ。

最後にMatomoのウェブ画面から見られるレポートのデータを作成するため、以下のコマンドを実行する。

cd ../..												
./console core:archive --force-all-websites --url='http://localhost/matomo'	

Matomoではこの処理を「アーカイブ」と呼ぶ。読みこんだログのデータから基本的なレポートのデータを計算して格納し、同じレポートの表示のために計算を繰り返さないようにしてくれるんだ。

普段聞きなれている「アーカイブ」とは意味が違うので注意が必要ですね。

「アーカイブ」は「データを保存する」というイメージが強かったですが、ここではデータを解析して、レポートの為に準備するという役割なのですね。

「console」コマンドはPHPのスクリプトなんだけど、レポート作成以外にいろいろな使い道があるんだ。それはいずれ説明するね。

これでインポートの作業は完了だ。
次回はMatomoの画面をブラウザから見てみよう。



関連リンク

サイオステクノロジー「アクセス解析・データ活用」サービスの紹介

note「初心者のための優しいアクセス解析入門マガジン①」

note「初心者のための優しいアクセス解析入門マガジン②」


この記事が気に入ったらサポートをしてみませんか?