awffullにトラブル発生

目次

公開日 2025-12-3 更新日 2025-12-5

はじめに

trixieをインストールして使いながら、前に使っていたbullseye上の作業ができるように仕上げていく過程でトラブルが発生。Linuxのインストールと基本設定は「Linux生活」、それ以降のソフトウェアの話は「役に立たないお話」と分類していたが、今回はちょっと迷った。まあ、どちらでもいいのだが、今回はこちらで。

今のところ、3つのトラブルがある。(1)awfullが閲覧ページ数と訪問者数の計数をしない。ヒット数、ファイル数、サイト数、Volume数は計算します。(2)プリンタの用紙選択で用紙名が文字化けするものあり。(3)fonts-yozvox-yozfontというフォントをいれると、フォント名が文字化けする。

ここでは簡単に(1)だけ書いておきます。

awffullのトラブルとは

次の図は2018年6月からのdebian.comのアクセス統計です。水色がページ数の月ごとグラフですが、右端の10月と11月のふた月が欠けています。訪問者も同様です。サイトだけになっているのがわかります。(クリックすると拡大します)

ページと訪問者の10月と11月のふた月が欠けている
Debian13のawffullの出力

今回のインストールでは、起動時に元のDebian11(bullseye)が選択できますので、こちらでやってみると、正常なものが得られます。

ページと訪問者の10月と11月のふた月が表示されている
Debian11のawffullの出力

そもそもこれは何?

レンタルサーバーが提供している毎日のアクセスログを1,2週に一度ダウンロードして、ローカルなPCのawffullで月ごとの記録を取ろうといういうものです。当サイトの「役に立たないお話」でも3つの記事で紹介しています。アクセス解析(awffull)の導入awffullの調整awffullのDebian11機への移設 です。トラブルがなければ、今回のこのページは「Debian13機への移設」になるはずでした。

awffullはウェブサーバーのアクセスログを読んで統計をとります。webalizerの後継のような位置づけです。Incrementalをyesに設定しておくと、最後の日時を覚えておき、それ以前のデータは無視し、以降のデータのみを積み上げて処理していきます。サーバーのログはある程度貯まるとローテートされますが、古いデータが重複してもよいので、頻度を調整すれば取りこぼしなく集計することができます。この仕組みで稼働中のウェブサーバーの元で少々遅れてもリアルタイムでいつ見ても自動で集計結果がみられるという状態を作ります。

私の借りているレンタルサーバーでは、awffullを自分で仕込むようなところまではできないのですが、日毎にまとめられた生のlogをダウンロードできるようになっています。

これを使って次のような手順で処理しています。

  1. ファイルは適宜ダウンロードして一つのフォルダに放り込んでおく。
  2. catコマンドなどで一つのファイルにする。
    zcat dabiyone.com_201806??.log.gz >dabiyone.com.log
  3. awffullを起動してそのファイルを読ませ集計させる。
    awffull -v -c /etc/awffull/awffull.conf
  4. すでにローカルで動いているapache2でレポートを見る

ローカルのウェブサーバーの利用統計は不要なので、cronで定時にawffullを走らせるのは止めておきます。

入力になる dabiyone.com.log の位置と、出力になるレポートの位置は awffull.conf の中に書いてあります。

awffullコマンドの引数は -v が Level of verbosity つまり、作業状況の報告の詳細度で -vv -vvv と数を増やすことでより詳細になります。-c はconfigファイルを指定するものです。

-vのレベルを上げても問題がありそうな様子は見つけられませんでした。

バージョンはほぼ同じで設定ファイルも同じ

Debian11のもDebian13のもawffullのバージョンは同じです。実行ファイルのサイズは多少違いがありますが、どちらもコンパイルされた実行ファイルで、faileコマンドの出力は実質同じです。

Debian13では、awffull (3.10.2-10)。Debian11では、awffull (3.10.2-4+deb9u1)。

awffullの設定ファイルは割と短いので、見れば何をしているかがわかります。設定ファイルに変更を加えたところに 署名しています。grepで変更したところがわかりやすくて便利です。

Debian13では以下のようです。Debian11のものも同じです。(diffを使って違いを見ると私の入れた日時だけが異なるので、変更した所以外も一致していることがわかります)

adachi の後ろの説明は、ここで追加したもの。最後の2項目は1行以上追加しているので、コマンド出力に後から補っています。

adachi@banach:/etc/awffull$ grep adachi -B1 -A1 awffull.conf
#LogFile /var/log/apache2/access.log.1
#2025-11-11 adachi logファイルの指定。
LogFile /media/adachi/S1T/dablog/dabiyone.com.log
--
#Incremental    no
#2025-11-11 adachi 最後の日時を覚えておき、それより前を無視することで重複なく集計する。
Incremental    yes
--
#HostName banach
#2025-11-11 adachi 結果報告のタイトルに使うだけ
HostName dabiyone.com
--
#UseHTTPS       no
#2025-11-11 adachi 後で説明します
UseHTTPS       yes
--
#GeoIP          no
#2025-11-11 adachi どの国からのアクセスかの集計に使う方式をGeoIPにする
GeoIP          yes
--
#GeoIPDatabase   /usr/local/share/GeoIP/GeoIP.dat
#2025-11-11 adachi
GeoIPDatabase   /usr/share/GeoIP/GeoIP.dat
--
#Top404Errors    0
#2025-11-11 adachi どのファイルが file not found になったかの集計。リンクの間違いを知ろうとした
Top404Errors    10
--
#HideSite       localhost
#2025-11-11 adachi "Your own site should be hidden"と書いてあったので。
HideSite       dabiyone.com
--
#HideReferrer   mrunix.net/
#2025-11-11 adachi "Your own site gives most referrals"と書いてあったので
HideReferrer   dabiyone.com
--
HideURL         *.ra
#2025-11-11 adachi  同じcss,jsファイルをたくさんのページで使っていたのでこれが上位に出てしまう
HideURL         *.css
HideURL         *.js
--
#GraphIndexX    512
#GraphIndexY    256
#2025-11-11 adachi 1年以上グラフを集計すると狭くなって棒グラフの幅が細くなるので拡大。
GraphIndexX    768
GraphIndexY    384

UseHTTPS についての説明

UseHTTPS  should be used if the analysis is being run on a secure
server, and links to urls should use ‘https://’  instead  of  the
default  ‘http://’. If you need this, set it to ‘yes’. Default is
‘no’. This only changes the behaviour of the ‘Top URLs’ table.

統計の中に次のような さまざまなランキングで上位ページへのリンクが出るのですが、このリンクをhttps://で始めるかhttp://で始めるかの違いです。統計の対象であるサイト(ここではdabiyone.com)がhttps://でアクセスするようになっているなら"UseHTTPS yes"とするということだけです。統計そのものには影響しませんし、Referrerについてはそれぞれのサイトが申告するものがそのまま記録されるので影響はありません。

Top 30 of 1541 Total URLs
# ヒット Volume URL
1 1032 2.22% 5.68 MB 0.40% /
2 925 1.99% 3.17 MB 0.22% /favicon.ico
3 247 0.53% 2.46 MB 0.17% /misc/
4 203 0.44% 1.81 MB 0.13% /misc/mia017.html
5 183 0.39% 3.51 MB 0.25% /system/a12toninst02.html
6 132 0.28% 1.14 MB 0.08% /misc/mia001.html

ここのURLのリンクをhttps://で書くかどうかという設定

上のグラフの数値表

最初にあげたグラフの2025年7月以降の数値です。Debian13とDebian11で比較しています。pages訪問者以外は同一であることがわかります。

Debian13の10月の「月の合計」にある17,29は、まだDebian11で処理していた時の、9月30日に含まれる10月のデータが引き継がれたものです。

月の統計
一日あたりの平均 月の合計
ヒット ファイル ページ 訪問者 サイト Volume 訪問者 ページ ファイル ヒット
11月 2025 1647 895 0 0 3472 1.05 GB 0 0 17912 32951
10月 2025 1500 892 0 0 5268 1.43 GB 17 29 27674 46505
9月 2025 1757 1227 1084 160 4094 1.84 GB 4829 32520 36836 52739
8月 2025 1528 563 1088 156 3454 921.06 MB 4838 33755 17470 47394
7月 2025 1832 565 1345 179 4314 891.80 MB 5549 41696 17529 56818

Debian13のawffullの出力

Debian11による集計です。pages訪問者も集計されています。

月の統計
一日あたりの平均 月の合計
ヒット ファイル ページ 訪問者 サイト Volume 訪問者 ページ ファイル ヒット
11月 2025 1647 895 904 176 3472 1.05 GB 3532 18089 17912 32951
10月 2025 1500 892 788 198 5268 1.43 GB 6142 24439 27674 46505
9月 2025 1757 1227 1084 160 4094 1.84 GB 4829 32520 36836 52739
8月 2025 1528 563 1088 156 3454 921.06 MB 4838 33755 17470 47394
7月 2025 1832 565 1345 179 4314 891.80 MB 5549 41696 17529 56818

Debian11のawffullの出力

awffullが依存するもの

awffullが変更を加えられていない様子なので、使っているライブラリが変更されている可能性があります。

synapticでわかる依存情報です。

devconf(>=0.5)|debconf-2.0
libc6(>=2.34)
libgd3(>=2.1.0~alpha~)
libpcre2-8-0(>=10.22)
zlib1g(>=1:1.2.3.3)

PageTypeでもう一つ調査

諦めて、この報告を書いていたのですが、confのPageTypeの設定を再び目にして、何がページとして計数されるべきかという判断が違っているためにページが計数されないのではないかと考えました。

PageTypeとNotPageTypeの2つの指定方法があって、既定値は次のようになっています。

PageType        htm
PageType        html
PageType        php
#PageType       pl
#PageType       cfm
#PageType       pdf
#PageType       txt
#PageType       cgi

#NotPageType     gif
#NotPageType     css
#NotPageType     js
#NotPageType     jpg
#NotPageType     ico
#NotPageType     png

どちらか一方を使えとかの説明がコメントとして書いてありますが、省きます。

htm, html, php のタイプがページであるといういう設定です。

これを次のようにすれば、不正確かもしれないけれど、少なくとも 0 にはならないだろうと考えたのです。

#PageType        htm
#PageType        html
#PageType        php
#PageType       pl
#PageType       cfm
#PageType       pdf
#PageType       txt
#PageType       cgi

NotPageType     gif
NotPageType     css
NotPageType     js
NotPageType     jpg
NotPageType     ico
NotPageType     png

すると大きな変化があったのですが、その過程で confファイルの扱いに不手際でごたごたしました。結論を急ぐ方はこの項を飛ばして次に行ってください。

confファイルの扱いに不手際発見

まず、PageTypeとNotPageTypeの両方を指定しているのは受け付けられないと、はねられます。

adachi@banach:/media/adachi/S1T/dablog2$ ./fromdablog1
Using config file: /etc/awffull/awffull2.conf
FATAL! You may not specify both PageType and NotPageType in the config file.%s

いやいや、awffull2.confには、PageTypeの指定はありません。

fromdablog1はbashのスクリプトで、内容は次のようなものです。awffull2.confファイルを指定しています。

 zcat ../dablog/dabiyone.com_202511??.log.gz >dabiyone.com.log
 awffull -v -c /etc/awffull/awffull2.conf 

脇道にそれますが、以前から気になっていたことがあります。awffull2.confを指定しているのに、Initially processed ... と言って、awffull.conf を読んだようなことを言っています。

adachi@banach:/media/adachi/S1T/dablog2$ ./fromdablog1
Using config file: /etc/awffull/awffull2.conf
Initially processed default config file: /etc/awffull/awffull.conf
awffull 3.10.2 (Linux 6.12.57+deb13-amd64) 日本語
Using GeoIP for IP Address Lookups: /usr/share/GeoIP/GeoIP.dat
使用するログファイル = /media/adachi/S1T/dablog2/dabiyone.com.log
出力先 = /var/www/awffull2
レポートするホスト名 = 'dabiyone.com'
Using CSS file: awffull.css
ヒストリファイルが見つかりません...
前回実行時のデータが見つかりません...
現在の実行データを保存しています... [2025/11/20 03:26:31]
レポートを生成しています - 11月 2025
概要レポートを生成しています
Graph Done!
ヒストリ情報を保存しています...
32911 レコード in 0.07 秒

awffull.confにはPageTypeを元にして、awffull2.confはNotPageTypeを元にして設定していますから、両方を読んでしかも # でコメントアウトしたものは無視するようにすると、両方を設定したことになりますね。

awffull.confを規定値として読んで、awffull2.confに書いたものだけ上書きするという設計はありそうですが、'PageType htm' と書いたものを、'#PageType htm' とは上書きできないと気づかなかったのでしょう。

awffull.confの名前を変えて存在しないように偽装して、awffull2.confだけをを使わせると、素直に従ってくれました。

[試行1203a]
adachi@banach:/media/adachi/S1T/dablog2$ ./fromdablog1 
Using config file: /etc/awffull/awffull2.conf
awffull 3.10.2 (Linux 6.12.57+deb13-amd64) 日本語
Using GeoIP for IP Address Lookups: /usr/share/GeoIP/GeoIP.dat
使用するログファイル = /media/adachi/S1T/dablog2/dabiyone.com.log
出力先 = /var/www/awffull2
レポートするホスト名 = 'dabiyone.com'
Using CSS file: awffull.css
ヒストリファイルが見つかりません...
前回実行時のデータが見つかりません...
現在の実行データを保存しています... [2025/11/20 03:26:31]
レポートを生成しています - 11月 2025
概要レポートを生成しています
Graph Done!
ヒストリ情報を保存しています...
32911 レコード in 0.09 秒

これがなんと、pages訪問者も計数されています。

いままで、awffullとawffull2の両方があったことが問題を起こす原因だったかもしれないということで、awffull2を名前を変えてawffullだけにしてみました。PageTypeは元に戻しました。fromdablog1中の指定もawffull.confを参照するように書き換えます。

するとawffullを2度読んでいます。

[試行1203b]
adachi@banach:/media/adachi/S1T/dablog2$ vi ./fromdablog1
adachi@banach:/media/adachi/S1T/dablog2$ ./fromdablog1
Using config file: /etc/awffull/awffull.conf
Initially processed default config file: /etc/awffull/awffull.conf
awffull 3.10.2 (Linux 6.12.57+deb13-amd64) 日本語
Using GeoIP for IP Address Lookups: /usr/share/GeoIP/GeoIP.dat
使用するログファイル = /media/adachi/S1T/dablog2/dabiyone.com.log
出力先 = /var/www/awffull2
レポートするホスト名 = 'dabiyone.com'
Using CSS file: awffull.css
ヒストリファイルが見つかりません...
前回実行時のデータが見つかりません...
現在の実行データを保存しています... [2025/11/20 03:26:31]
レポートを生成しています - 11月 2025
概要レポートを生成しています
Graph Done!
ヒストリ情報を保存しています...
32911 レコード in 0.07 秒

PageTypeを戻したので、これでは、pages訪問者は計数されません。

もう一度、awffull.confを直接変更して PageType をすべてコメントアウトし、NotPageType だけ有効にします。

[試行1203c]
adachi@banach:/media/adachi/S1T/dablog2$ ./fromdablog11203c
Using config file: /etc/awffull/awffull.conf
Initially processed default config file: /etc/awffull/awffull.conf
awffull 3.10.2 (Linux 6.12.57+deb13-amd64) 日本語
Using GeoIP for IP Address Lookups: /usr/share/GeoIP/GeoIP.dat
使用するログファイル = /media/adachi/S1T/dablog2/dabiyone.com.log
出力先 = /var/www/awffull2
レポートするホスト名 = 'dabiyone.com'
Using CSS file: awffull.css
ヒストリファイルが見つかりません...
前回実行時のデータが見つかりません...
現在の実行データを保存しています... [2025/11/20 03:26:31]
レポートを生成しています - 11月 2025
概要レポートを生成しています
Graph Done!
ヒストリ情報を保存しています...
32911 レコード in 0.09 秒

やはり、pages訪問者も計数されています。

pagesが計数されたが変だ

PageType を NotPageType でしたことでpagesばかりか、訪問者も計数されています。でも変です。

ヒットの高さとpagesの高さが常に同じなのです。

多分ですが、こんなことなのではないでしょうか。

PageType で指定 ⇨ ヒットとされたもののうち、PageType で指定されたもの(htm, html, php)を探すと 0 だったので pages = 0

NotPageType で指定 ⇨ ヒットとされたもののうち、NotPageType で指定されたもの(gif, css, js, jpgなど)を探すと 0 だったので pages = hits - 0

どちらにしても、PageType も NotPageType も探すのに失敗しているという推測ができます。

NotPageTypeの説明に

Those who understand pcre's would do well to examine the source
# of parser.c if they wish to extract greater flexibility from the
# below.

とありますので、依存関係にある libpcre2-8-0(>=10.22) あたりとの連携がとれないというところではないでしょうか。

結局awstatsに乗換

2025年11月末の段階で、対処法がありません。

結局、あきらめて、別のツールである awstats に乗り換えました。awstats の設定はちょっと面倒で、サーバー上で動かすのではないやり方の使用例も少ないというのがネックでした。

この話は改めて書きます。