レンタルサーバーで提供しているアクセス解析が Analog で、とても使いにくい。 そこで、別に提供されているナマのログをダウンロードして、こちらのサーバーで解析ソフトを動かすことにする。
提供されているAnalogは、毎回必要事項を調整して期間を設定して結果を得るようになっている。ログの保存期間は3ヶ月だが、解析の期間は1ヶ月以内でなければならない。年間の推移を見ようとすれば、得られた解析ページを保存する必要がある。
4ヶ月前にサポートにwebalizerを使えるようにと要望を出したが、「具体的な導入等の予定をお伝えできず、心苦しい限り」との返事。少し脈がある回答だったが、4ヶ月経っても動く様子がないので、こちらで何とかすることにした。
ダウンロードするデータは日ごとに1ファイル。ログインしてからマウス操作で一つずつダウンロードする様になっていて、これまた不満。ftpやwgetでとれると自動化できるのだが、これも同時に要望済であったのだが。せめて、まとめてダウンロードできるようになっていればいいのに。
というわけで、次のようにする。
ログファイルのダウンロードがcronでできるようになれば、レポートの更新もcronで自動化できる。
職場で使っていたASJのレンタルサーバではwebalizerとawstatsが提供されていた。まずsynaptic(debianのパッケージマネージャ)で webalizer を検索。
出てきたのは3つ
awffullを使ってみることにしてsynapticでそのままインストール。
Commit Log for Wed Feb 13 00:36:14 2019 以下のパッケージがインストールされました: awffull (3.10.2-4+deb9u1)
awffullでネット検索をしても日本語の情報がほとんどない。look&feelはwebalizerとあまり変わらないものの、もう少し出てきてもいいように思う。
設定ファイルは/etc/awffull/awffull.conf
#でコメントアウトされた説明文中に、デフォルトの設定や自サイトに合わせるべき項目が散りばめられた、Linuxによくある設定ファイル。英文だが時間をかければなんとかなる。
# Sample AWFFull configuration file # # This is a sample configuration file for AWFFull (v3.8.1) # Lines starting with pound signs '#' are comment lines and are # ignored. Blank lines are skipped as well. Other lines are considered # as configuration lines, and have the form "ConfigOption Value" where # ConfigOption is a valid configuration keyword, and Value is the value # to assign that configuration option. Invalid keyword/values are # ignored, with appropriate warnings being displayed. There must be # at least one space or tab between the keyword and its value. # # AWFFull will look for a 'default' configuration file # "/usr/local/etc/awffull.conf", and if found, use that. # the '-c config.file' option can also be used to specify an alternate # configuration file. Or multiple configuration files, with multiple -c's. ......以下続く.......
Debianには /usr/local/etc/awffull.conf はない。/etc/awffull/awffull.conf がその役目なのだろう。-cオプションで指定しない時に使われる設定ファイルがdebianでは/etc/awffull/awffull.confなのかは不明なので、詮索せず、
$ awffull -c /etc/awffull/awffull.conf
で実行させる。
ログファイルの位置は、デフォルトはSTDIN。
ダウンロードしたファイルを指定する。
apache2のログローテートされるファイルが設定例になっている。
インストール時にcronも設定されて自動実行されるので、固定のファイル名でうまく行く仕組みなのだろう。
とりあえず数日のファイルを連結してdabiyone.com.logというファイルにすることにして、この名前を指定する(#がついているのはコメント扱い。変更したら署名しておくのが私の流儀)。
#LogFile /var/log/apache2/access.log.1 #adachi LogFile /home/adachi/Downloads/dabiyonelog/dabiyone.com.log
出力先はデフォルトがこれ。
OutputDir /var/www/awffull
変更してもいいのだが、あえてこのまま使う。
ここにできるファイルを、ローカルなapache2で提供するようにする。
これはPHPのテスト環境として運用するapache2のサイトの一つとするのだが、ローカルなファイルシステムのhtmlファイルとしての運用(つまり/var/www/awffullをGUIで開いてindex.htmlをダブルクリックする)でももちろん構わない。
ここで言うapache2は普段デスクトップ機として使用しているPC上で動いているもの。localなアクセスログは放置して、ダウンロードしたレンタルサーバーのログを処理し、それをlocalなapache2で閲覧するための設定。
設定完了後のapache2のサイト設定
root@debian64:# ll /etc/apache2/sites-available/ 合計 24 -rw-r--r-- 1 root root 1332 7月 11 2018 000-default.conf -rw-r--r-- 1 root root 325 10月 21 17:43 001-debian64.conf -rw-r--r-- 1 root root 285 10月 21 17:59 002-solomon.conf -rw-r--r-- 1 root root 285 2月 13 01:42 003-awffull.conf -rw-r--r-- 1 root root 6338 3月 31 2018 default-ssl.conf
000-default.confでは/var/www/htmlがDocumentRootになっている。これはDebianのapache2のデフォルトで、/var/www/html/index.html には It Works! が書いてある。
普通の解説では、このindex.htmlを書き換えていくか、DocumentRootを/srv/wwwなどに書き換えたりする。
でも、Debianではsites-availableに別ファイルで設定を書くことでサイトを追加という形で設定できる。いわゆるVirtualHostという考え方。
そのために、すでに、000-, 001-, 002- のサイトがある。そこに003-を追加した。
実際にはコピーして編集したもの
root@debian64:# cp /etc/apache2/sites-available/002-solomon.conf /etc/apache2/sites-available/003-awffull.conf root@debian64:# vi /etc/apache2/sites-available/003-awffull.conf
ファイルができたら、a2ensite コマンドで有効にする。(実際にはシンボリックリンクが作られるだけなので手動でも良い)
root@debian64:/home/adachi/Downloads# a2ensite 003-awffull.conf Enabling site 003-awffull. To activate the new configuration, you need to run: systemctl reload apache2
シンボリックリンクというのは、
root@debian64:# ll /etc/apache2/sites-enabled/ 合計 0 lrwxrwxrwx 1 root root 35 7月 11 2018 000-default.conf -> ../sites-available/000-default.conf lrwxrwxrwx 1 root root 36 7月 11 2018 001-debian64.conf -> ../sites-available/001-debian64.conf lrwxrwxrwx 1 root root 35 10月 21 18:01 002-solomon.conf -> ../sites-available/002-solomon.conf lrwxrwxrwx 1 root root 35 2月 13 01:43 003-awffull.conf -> ../sites-available/003-awffull.conf
003-awffull.confの編集内容はこちら
root@debian64:/home/adachi/Downloads# cat /etc/apache2/sites-available/003-awffull.conf <VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/awffull serverName awffull.dabiyone.com ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
つまりは、awffull.dabiyone.com でアクセスしてきたら、DocumentRoot を /var/www/awffull にするという設定。
dabiyone.com は私が取得したドメインだが、内部で使用する分には適当で構わない。
内部DNSを立てるほどのことではないので、/etc/hostsに書き込む。
root@debian64:# vi /etc/hosts root@debian64:# cat /etc/hosts 127.0.0.1 localhost 127.0.1.1 debian64.nan.dabiyone.com debian64 127.0.2.1 nan.dabiyone.com 127.0.3.1 www.nan.dabiyone.com 127.0.4.1 solomon.dabiyone.com 127.0.5.1 awffull.dabiyone.com # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters
nan, solomonなどは諸事情ですでに使っているホスト名。これで、dabiyone.comに nan, solomon などがついていれば自機、いなければDNS経由でIPを取得してレンタルサーバーに接続になる。
これで、次のURLでアクセスログページを表示できる。
http://awffull.dabiyone.com
レンタルサーバーからダウンロードしたログファイルは日毎に圧縮されている。例えば2018年6月24日は、
dabiyone.com_20180624.log.gz
そこで、zcatでファイルを復元・連結して dabiyone.com.log ファイルを作って、awffullの実行をする。
$ zcat dabiyone.com_201806??.log.gz >dabiyone.com.log $ awffull -c /etc/awffull/awffull.conf
これが6月分。7??で7月分だが、このままでは6月分が消えて7月分だけの結果となる。
Incrementalをyesに変更すると、アクセス記録を重ねていく。awffull.currentに記録されて同じログが重ねて集計されないようになっている。たぶん最終ログの日時などが記録されて、古いものは無視される仕様なのだろう。過去のログは追加できない。
というわけで、/etc/awffull/awffull.conf への変更。
Incremental yes HostName dabiyone.com
HostNameは表題に使用する。Incrementalには関係はない。
これで、
$ zcat dabiyone.com_201806??.log.gz >dabiyone.com.log $ awffull -c /etc/awffull/awffull.conf $ zcat dabiyone.com_201807??.log.gz >dabiyone.com.log $ awffull -c /etc/awffull/awffull.conf ...
で月ごとに追加してもよし
$ zcat dabiyone.com_201?????.log.gz >dabiyone.com.log $ awffull -c /etc/awffull/awffull.conf
で全部まとめてもよし。dabiyone.com.logは残す必要はない。
awffullですが、出来上がったページは見慣れたwebalizerです。
webalizerではヒット・ファイル・ページが一つのグラフにまとめられていましたが、awffullでは「ページ」が独立しています。これは実態把握の面で理にかなっています。
月ごとのページも出しておきます。こちらのグラフはヒット・ファイル・ページが一つのグラフです。
このページは2019年2月11日までのものですが(12日3時までが11日というのがレンタルサーバー側の設定)、続きのデータをダウンロードしたら
$ zcat dabiyone.com_201902??.log.gz >dabiyone.com.log $ awffull -c /etc/awffull/awffull.conf
で追加していけばOKです。dabiyone.com.logに過去のファイルが入っても二重集計にはなりませんが、データ量が多いとそれなりに負荷ですから、月ごとにしています。
awffull.confのLogFile指定をしなければ、STDINがデフォルトになりますから、パイプで渡すことも可能です。
$ zcat dabiyone.com_201902??.log.gz |awffull -c /etc/awffull/awffull.conf
私はrootでそのままやってしまいましたが、パーミッションを適切にすれば一般ユーザーでもできるはずです。
今回の、awffull.confの変更点は4つ
LogFile /home/adachi/Downloads/dabiyonelog/dabiyone.com.log OutputDir /var/www/awffull Incremental yes HostName dabiyone.com