Webalizerの統計やり直し

Webalizerを累計モード(Incremental)で動作させています。先日のエントリでログファイルが大きくなり過ぎて一発で動作しませんでしたという話を書きました。このときに、ある程度の大きさにsplitで分割してからそれぞれをwebalizerに食わせるスクリプトを書いてそれを動かすようにしました。だいたい3分割くらいしてから食わせるようにしたんですが、1番目のファイルがそれでも大きすぎるようで統計解析に失敗していました。2番目と3番目のファイルはちゃんと解析していて、1番目と2番目のファイルは行数が同じなので、制限は行数よりもサイズか、Webalizerが動作するタイミングでのメモリのどちらかにあるようです。

さて、このように「中途半端」な状態で解析された場合、Incrementalモードで動作させていると失敗した期間だけを再度Webalizerに喰わせても解析してくれません。今回の場合でいうと、9月分の解析のうち9月1日〜9月9日分くらいがすっぽり抜けた状態。単純に思いつく方法は3つくらい。

  • ログ解析を全部クリアして、残ってるファイルで全部もう一回解析させる。
  • Incremental を noにして再解析する。
  • webalizer.currentとwebalizer.histをいじくって9月分を再解析する。

1番目は多分とてつもない時間がかかりそうな気配。2番目って、正直にいって今思い付きました。今度やってみます。失敗した部分のログファイルが正確に切りだせれば、これでいいかもしれないですね。

というわけで今回試したのは3番目の方法です。

webalizer.hist

webalizer.histの中身はこんなの。

1 2006 12571473 8663907 135298 88663469 1 31 3378762 376861
2 2006 13952542 9825355 158453 90597934 1 28 3559117 372204
3 2006 15692010 11099149 178255 101541648 1 31 4154475 457770
4 2006 14590095 10370816 160681 101151188 1 30 3889999 386158
5 2006 16246287 11309541 187363 101515223 1 31 4229228 445800
6 2006 15772792 10993679 182118 109937710 1 30 4237002 536026
7 2006 15078774 10774345 180626 111437877 1 31 4077856 544202
8 2006 15527205 11170249 190174 113101782 1 31 3991818 503275
9 2006 18375310 13470367 190360 112920176 1 30 3819213 496898
10 2005 11316442 8228318 125604 74583617 1 31 3023471 348133
11 2005 12431888 8809389 132323 79739203 1 30 3465819 376001
12 2005 11476789 7604886 114063 75690203 1 31 3721364 342459

各月の統計がサマリで書かれているようです。このファイルの中で、最解析する部分を「去年」に書き換えちゃいます。単純に9 2006のところを9 2005に変更するだけ。

1 2006 12571473 8663907 135298 88663469 1 31 3378762 376861
2 2006 13952542 9825355 158453 90597934 1 28 3559117 372204
3 2006 15692010 11099149 178255 101541648 1 31 4154475 457770
4 2006 14590095 10370816 160681 101151188 1 30 3889999 386158
5 2006 16246287 11309541 187363 101515223 1 31 4229228 445800
6 2006 15772792 10993679 182118 109937710 1 30 4237002 536026
7 2006 15078774 10774345 180626 111437877 1 31 4077856 544202
8 2006 15527205 11170249 190174 113101782 1 31 3991818 503275
9 2006 18375310 13470367 190360 112920176 1 30 3819213 496898
10 2005 11316442 8228318 125604 74583617 1 31 3023471 348133
11 2005 12431888 8809389 132323 79739203 1 30 3465819 376001
12 2005 11476789 7604886 114063 75690203 1 31 3721364 342459

変えた後がこんなの。

1 2006 12571473 8663907 135298 88663469 1 31 3378762 376861
2 2006 13952542 9825355 158453 90597934 1 28 3559117 372204
3 2006 15692010 11099149 178255 101541648 1 31 4154475 457770
4 2006 14590095 10370816 160681 101151188 1 30 3889999 386158
5 2006 16246287 11309541 187363 101515223 1 31 4229228 445800
6 2006 15772792 10993679 182118 109937710 1 30 4237002 536026
7 2006 15078774 10774345 180626 111437877 1 31 4077856 544202
8 2006 15527205 11170249 190174 113101782 1 31 3991818 503275
9 2005 18375310 13470367 190360 112920176 1 30 3819213 496898
10 2005 11316442 8228318 125604 74583617 1 31 3023471 348133
11 2005 12431888 8809389 132323 79739203 1 30 3465819 376001
12 2005 11476789 7604886 114063 75690203 1 31 3721364 342459

webalizer.current

ファイルの中身はこんなのです。

# Webalizer V2.01-10 Incremental Data - 09/30/2006 23:59:59
2006 9 30 23 59 59
8375326 6142192 92495 60380 25208 3002 51489998162 1722845 227536 3
7618 16233 94416 17 30
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
98012 48622 339457017 1713 49734 1654
511337 390647 3052929635 8938 95519 14672
751424 543714 4442321812 11876 130590 19709
759995 560101 4594355053 11791 144516 20199
(以下略)

0が6つ並んでるところが解析に失敗した部分。このファイル、現在の値が書かれているようです。それも見ると9月分だけ。9月分は再度解析するので、このファイルはいらないんじゃないかなという予想のもとに、ファイルごと削除。

# rm webalizer.current

解析した結果のファイル

解析後の出力ファイルを消します。

# rm *200609*

再解析実施

準備が出来たので、再解析。

# /usr/local/bin/webalizer -c /etc/webalizer.conf ./xaa

xaaが失敗したファイル。本当は、さらに分割してからwebalizerに食わせました。
うまくいきました。失敗した場合の時に備えて、バックアップはとっておきましょう。