ログ解析スクリプトAWStats 5.0ドキュメント

 


FAQ(よくある質問) / トラブルシューティング


全般についての質問:

セットアップ / エラーについての質問:
以下に, AWStatsをインストール/セットアップする際によく聞かれる質問をまとめました.

一般的な質問:
以下に, AWStatsを利用する際によく聞かれる質問をまとめました.

セキュリティについての質問:
以下に, AWStatsを利用する際のセキュリティの問題について, よく聞かれる質問をまとめました.





FAQ-ABO100 : サポートされているログファイル形式/OSは ?
AWStatsは以下の環境で動作します :
- ログファイルを, Apacheのようなcombinedログ形式 (XLF/ELF), ApacheやSquidのようなcommonログ形式(CLF), IIS 5.0以上のような W3Cログ形式でログを記録できる全てのWebサーバー(IIS 4.0のW3Cログ形式で動作したというユーザーの報告もありますが, サービスパック6が必要になります).
- そのほかのほぼ全てのWeb/Wap/プロキシサーバー.
- 特定のFTPログ, シスログ, メールログファイル.
AWStatsはPerlで記述されているため, 全てのOSで動作します.
利用実績があるプラットフォームの例を以下に示します(太字は'著者がテストした'という意味で, そのほかはAWStatsのユーザーから正常に動作したという報告があったものです) :
OS:
Windows 2000, Windows NT 4.0, Windows Me, Linux, Macintosh, Solaris, Aix, BeOS, ...
Web/Wap/プロキシ/FTP/メールサーバー
Apache, IIS 5.0, WebStar, WebLogic, WebSite, Tomcat, Squid, Sendmail, Roxen, Resin, ProFTP, Lotus Notes/Domino, IPlanet, IceCast, Zope, www4mail, ...
Perlインタープリタ:
ActivePerl 5.6, Perl 5.8, Perl 5.6, Perl 5.0, Apacheのmod_perl, ...


FAQ-ABO150 : AWStatsが解析できるログ形式は ?
AWStatsで事前に定義されているログ形式を利用すれば, 設定が簡単になります. しかし, 独自のログ形式を利用することもできます. このため, AWStatsはほぼ全てのWeb/WAP/プロキシサーバーのログを解析できるのです. また, 特定のFTPサーバーやシスログ, メールサーバーのログを解析することもできます.
唯一の必須条件は, "必要とされる情報がログファイルに格納されていること"です.
解析できるログ形式の一例を以下に示します:
Apache combined ログ形式 (NCSA combined ログ形式, XLFあるいはELF形式という名で知られています)
IIS 5.0+ログ形式 (W3C形式という名で知られています)
Webstarネイティブログ形式
ProFTPサーバー
多くのweb/wap/プロキシサーバーのログ形式
Apache commonログ形式(AWStatsはこの形のログも解析できるようになりましたが, AWStatsが必要とする全ての情報が含まれていません. 問題は内容であり, 形式ではありません). commonログ形式のファイルを解析するのはあまり有意義とはいえません. なぜならば, 欠落している情報が多すぎて, ロボットのフィルタや検索エンジン/検索キーワード/OS/ブラウザの検出ができないからです, しかし, 多くのユーザーがAWStatsにcommonログ形式のサポートを望んでいたため, AWStatsはその声に応えてサポートしました. しかしながら, ロボットのフィルタや検索エンジン/検索キーワード/OS/ブラウザの検出などのAWStatsの先進的な機能の多くは, 動作しません.

F.A.Q.: LOG FORMAT SETUP OR ERRORS も参照してください.


FAQ-ABO200 : 利用できる言語は ?
AWStatsは30モノ言語でレポートを作成することができます. 以下に最新版のリストをアルファベット順で示します(LangパラメーターとShowFlagLinksパラメーターで利用できるコードです) :
ボスニア語=ba, 中国語(台湾)=tw, 中国語(Traditional)=cn, チェコ語=cz, デンマーク語=dk, オランダ語=nl, 英語=en, フィンランド語=fi, フランス語=fr, ドイツ語=de, ギリシャ語=gr, ハンガリー語=hu, インドネシア語=id, イタリア語=it, 日本語=jp, 韓国語=kr, ラトヴィア語=lv, ノルウェー語(ニーノシク)=nn, ノルウェー語(ブークモール)=nb, ポーランド語=pl, ポルトガル語=pt, ポルトガル語(ブラジル)=br, ルーマニア語=ro, ロシア語=ru, スロベキア語=sk, スペイン語=es, スペイン語(カタロニア)=es_cat, スゥェーデン語=se, トルコ語=tr, ウクライナ語=ua
ただし, AWStatsのドキュメントは英語でのみ提供されています.
しかし, 有志によるドキュメントも存在します:
フランス語: AWStatsとWebalizerのインストール方法


FAQ-ABO250 : AWStatsがPHP Nukeに統合される可能性は ?
現時点では, 筆者はPHPNukeにAWStatsをアドオンするという計画は聞いたことがありません. しかし, 計画が生まれる可能性はあります. そのようなアドオンが存在するかどうかを, PHPNuleの作者やPHPNukeのフォーラムに確認してみてください.




FAQ-SET050 : "MISSING $ ON LOOP VARIABLE ..."というエラーが発生します
問題:
コマンドラインからAWStatsを起動すると, 以下のエラーが発生します:
"Missing $ on loop variable at awstats.pl line xxx"
解決方法:
利用しているPerlのインタプリタに問題があります. より新しい, より安定したPerlインタプリタをインストール/再インストールしてみてください.
最新版のPerlはActivePerl (Win32)もしくは Perl.com (Unix/Linux/Other)で入手できます.


FAQ-SET100 : ブラウザで閲覧すると, Perlスクリプトが実行されずに, ソースが見えてしまいます
問題:
WebブラウザからPerlを実行しようとすると, 実行結果のHTMLではなく, Perlスクリプトのソースが見えてしまいます!
解決方法:
AWStatsの問題ではなく, Webサーバーの設定の問題です. awstats.plファイルはWebサーバーで"cgi"ディレクトリと定義されている場所に置く必要があります. これは, Webサーバーのそのディレクトリには, 通常のドキュメントファイルではなく, "実行"ファイルが置かれていると設定するということです. 特定のディレクトリを"実行可能なcgi"ディレクトリに指定する方法については, Webサーバーのマニュアルを参照してください(IISの場合, ディレクトリのプロパティでいくつかのチェックボックスをチェックし, Apacheの場合はそのディレクトリの"ディレクティブ"の中の"ExecCGI"オプションを利用することになるはずです).


FAQ-SET150 : ブラウザに内部サーバーエラー500が返される
FAQ-SET200 : ERROR "... COULDN'T CREATE/SPAWN CHILD PROCESS..."
問題:
AWStatsのコマンドライン上での実行は成功しているようですが, ブラウザからCGIとして実行しようとすると"内部サーバーエラー 500"が返されます.
また, Apacheのエラーログファイルに(Apache 2.0+の場合はブラウザに)以下のメッセージが記録されます:
...couldn't create/spawn child process: c:/mywebroot/cgi-bin/awstats.pl
解決方法:
まず, awstats.plをコマンドラインから実行し, 正常に動作するかどうかを確認してください. UNIX系のOSを利用していて文法エラーが発生した場合, ファイルがUNIX形式になっている(各行がCR+LFではなくLFで終了している)ことを確認してください.
awstats.plがコマンドラインから正常に動作した場合, WebサーバーがPerlスクリプトをどのように実行すれば言いかを知らない可能性が高いと考えられます. この問題は, 内蔵のPerlインタプリタが存在しない(mod_perlが有効でない)Apacheで発生する場合があります. この問題を解決するには, Apacheに外部のPerlインタプリタの場所を伝える必要があります.
この問題を解決する2つの方法:
1) Apacheのhttpd.confに以下のディレクティブを追加します(すでに存在する場合は, コメントを外します).
ScriptInterpreterSource registry
設定が完了したら, Apacheを再起動します. この設定を行うと, Apacheはレジストリを検索し, .pl拡張子に関連付けられたプログラムを見つけようとします.
2) 別の方法 (1番目の方法がうまく動作した場合は不要): awstats.plの1行目に, Perlインタプリタのフルパスを記述する.
WindowsとActivePerl Perlインタプリタ(C:\Program Files\ActiveState\ActivePerlにインストールされている)の場合, awstats.plの最初の行を以下のように修正します:
#!c:/program files/activestate/activeperl/bin/perl


FAQ-SET220 : Windows XPを利用するとawstats.plの実行中にクラッシュする, もしくはページの内容の一部しかロードされない
問題:
AWStatsに特定の設定を施して実行すると, 時々私のブラウザ(大抵IE6)がクラッシュします. 別のバージョンや別のブラウザだと, ページの内容の一部しかロードされません.
解決方法:
MSのサイトのQ317949で紹介されている, WinXPとWinXPproの問題です;
"Socket Sharing Creates Data Loss When Listen and Accept Occur on Different Processes"
結果として, MSIEはクラッシュするか画面に何も表示しません. NetscapeやOperaはソケットをより適切に処理しますが, ページの一部しか表示できません.
このバグの影響については, 以下のページで詳細に解説されています(30k強).
http://support.microsoft.com/default.aspx?scid=kb;EN-US;q317949
Apache.orgでも解説されています
http://www.apache.org/dist/httpd/binaries/win32/
MSはHotfixを提供しており, 現在はSP1に含まれています.


FAQ-SET250 : ログ形式の設定/エラーについて
問題:
私が利用しているログの形式でAWStatsを動作させるためには, どのような値をLogFormatに設定すればいいのでしょうか?
解決方法:
AWStatsのLogFomatパラメーターには, 考えうる全ての値を設定することができるようになっています. 以下に一般的なログ形式の例を示しますので, 参考にしてください. LogFormatの対応する値が, AWStatsの設定ファイルに設定しなければならない値になります:
もしあなたのログのレコードが正確に以下の通り(NCSA combined/XLF/ELF ログ形式)であれば:
62.161.78.73 - - [dd/mmm/yyyy:hh:mm:ss +0x00] "GET /page.html HTTP/1.1" 200 1234 "http://www.from.com/from.htm" "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"
あなたが利用すべき設定: LogFormat=1
次のように書いても同じ意味になります: LogFormat="%host %other %logname %time1 %methodurl %code %bytesd %refererquot %uaquot"
もしあなたのログのレコードが正確に以下の通り(NCSA combinedで複数のバーチャルホストが単一のログファイルを共有している)であれば:
virtualserver1 62.161.78.73 - - [dd/mmm/yyyy:hh:mm:ss +0x00] "GET /page.html HTTP/1.1" 200 1234 "http://www.from.com/from.htm" "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"
あなたが利用すべき設定 : LogFormat="%virtualname %host %other %logname %time1 %methodurl %code %bytesd %refererquot %uaquot"
もしあなたのログのレコードが正確に以下の通り(NCSA combinedApacheがmod_gzipを形式1で利用している)であれば:
62.161.78.73 - - [dd/mmm/yyyy:hh:mm:ss +0x00] "GET /page.html HTTP/1.1" 200 1234 "http://www.from.com/from.htm" "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)" mod_gzip: 66pct.
あなたが利用すべき設定 : LogFormat="%host %other %logname %time1 %methodurl %code %bytesd %refererquot %uaquot %other %gzipratio"
もしあなたのログのレコードが正確に以下の通り(NCSA combinedApacheがmod_gzipを形式2で利用している)であれば:
62.161.78.73 - - [dd/mmm/yyyy:hh:mm:ss +0x00] "GET /page.html HTTP/1.1" 200 1234 "http://www.from.com/from.htm" "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)" mod_gzip: DECHUNK:OK In:11393 Out:3904:66pct.
あなたが利用すべき設定 : LogFormat="%host %other %logname %time1 %methodurl %code %bytesd %refererquot %uaquot %other %other %gzipin %gzipout"
もしあなたのログのレコードが正確に以下の通り(NCSA common CLFログ形式)であれば:
62.161.78.73 - - [dd/mmm/yyyy:hh:mm:ss +0x00] "GET /page.html HTTP/1.1" 200 1234
あなたが利用すべき設定 : LogFormat=4
ノート: ブラウザ, OS, キーワード, Refererの機能はこのログ形式の場合利用できません.
もしあなたのログのレコードが正確に以下の通り(特定のバージョンのSquid)であれば:
200.135.30.181 - - [dd/mmm/yyyy:hh:mm:ss +0x00] "GET http://www.mysite.com/page.html HTTP/1.0" 200 456 TCP_CLIENT_REFRESH_MISS:DIRECT
あなたが利用すべき設定 : LogFormat="%host %other %logname %time1 %methodurl %code %bytesd %other"
もしあなたのログのレコードが正確に以下の通り(IIS W3C ログ形式)であれば:
yyyy-mm-dd hh:mm:ss 62.161.78.73 - GET /page.html 200 1234 HTTP/1.1 Mozilla/4.0+(compatible;+MSIE+5.01;+Windows+NT+5.0) http://www.from.com/from.html
あなたが利用すべき設定 : LogFormat=2
もしあなたのログのレコードが正確に以下の通り(特定のバージョンのWebSite)であれば:
yyyy-mm-dd hh:mm:ss 62.161.78.73 - 192.168.1.1 80 GET /page.html - 200 11205 0 0 HTTP/1.1 mydomain.com Mozilla/4.0+(compatible;+MSIE+5.5;+Windows+98) - http://www.from.com/from.html
あなたが利用すべき設定 : LogFormat="%time2 %host %logname %other %other %method %url %other %code %bytesd %other %other %other %other %ua %other %referer"
もしあなたのログのレコードが正確に以下の通り(Webstar ネイティブログ形式)であれば:
05/21/00 00:17:31 OK 200 212.242.30.6 Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt) http://www.cover.dk/ "www.cover.dk" :Documentation:graphics:starninelogo.white.gif 1133
あなたが利用すべき設定 : LogFormat=3
もしあなたのログのレコードが正確に以下の通り(Lotus Notes/Domino ログ形式)であれば:
62.161.78.73 - Name Surname Service [dd/mmm/yyyy:hh:mm:ss +0x00] "GET /page.html HTTP/1.1" 200 1234 "http://www.from.com/from.htm" "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"
あなたが利用すべき設定 : LogFormat=6
(管理人注 : Ver.5.0ではLogFormat=6は定義されていません. Ver.5.1以降の機能?)
ProFTPのようなFTPサーバーを利用している場合:
FAQ-SET260を参照してください.
Sendmailのログファイルを解析したい場合:
FAQ-SET270を参照してください.
もしあなたのログのレコードが正確に以下の通り(特定のプロバイダが提供するログ)であれば:
62.161.78.73 - - [dd/Month/yyyy:hh:mm:ss +0x00] "GET /page.html HTTP/1.1" "-" 200 1234
あなたが利用すべき設定 : LogFormat="%host %other %logname %time1 %methodurl %other %code %bytesd"
ノート: ブラウザ, OS, キーワード, Refererの機能はこのログ形式の場合利用できません.
他にも様々な形のログ形式が存在する可能性があります.
上記以外のログ形式をサポートするには, 設定ファイル内のLogFormat="..."で, 独自のログ形式を指定する必要があります.



FAQ-SET260 : FTPサーバーのログファイルの設定について
問題:
AWStatsでFTPサーバーのログファイルを解析する場合, 何をすればいいのでしょうか?
解決方法:
AWStatsはWeb/WAP/プロキシサーバーのログファイルを解析するように設計されていますが, 特定のFTPサーバーのログファイルを解析することもできます.
ProFTPのログ形式のセットアップ:
proftpd.confを修正し, 以下の2行を追加します:
LogFormat awstats "%t %h %u %m %f %s %b"
ExtendedLog /var/log/xferlog read,write awstats

古いの形式の転送ログを無効にします:
TransferLog none

AWStatsをFTPのログファイルを解析できるように設定する:
awstats.confを"awstats.proftp.conf"という名前でコピーします.
続いて, その新しい設定ファイルを編集します:
LogFile="/var/log/xferlog"
LogFormat="%time1 %host %logname %method %url %code %bytesd"
DNSLookup=0
SkipFiles=""
NotPageList=""
ShowLinksOnUrl=0
ShowHeader=1
ShowMenu=1
ShowMonthDayStats=1
ShowDaysOfWeekStats=1
ShowHoursStats=1
ShowDomainsStats=1
ShowHostsStats=1
ShowAuthenticatedUsers=1
ShowRobotsStats=0
ShowSessionsStats=1
ShowPagesStats=1
ShowCompressionStats=0
ShowFileTypesStats=1
ShowFileSizesStats=0
ShowBrowsersStats=0
ShowOSStats=0
ShowOriginStats=0
ShowKeyphrasesStats=0
ShowKeywordsStats=0
ShowHTTPErrorsStats=0
ShowEMailSenders=0
ShowEMailReceivers=0


あとは通常通りにAWStatsを利用するだけです(更新処理を走らせてから, レポートを作成します).
警告: このTipはスペースが含まれているFTPのログファイルでは動作しません(レポートされません). スペースを'_'に置換すれば動作するでしょうが...


FAQ-SET270 : SENDMAILのログファイルの設定について
問題:
AWStatsでSendmailのログファイルを解析する場合, 何をすればいいのでしょうか?
解決方法:
まず最初に, SMAをダウンロードしてAWStatsの更新処理のポストプロセッサとして利用できるように設定する必要があります(管理人注 : "ポストプロセッサ"は"プリプロセッサ"の間違いだと思われます).
SMAをAWStatsと協調して動作するように設定する:
sma(もしくはsma.exe)とsma.confをawstats.plと同じディレクトリにコピーします.
sma.confを編集し, CLogFormatパラメーターを以下のように変更します:
CLogFormat "%y-%m-%d %h:%n:%s %f %t %F %T SMTP - %z %S"
ClogSentOnly no

AWStatsを設定して, SMAが処理したメールのログを解析できるようにする:
awstats.confを"awstats.sendmail.conf"という名前でコピーします.
続いて, その新しい設定ファイルを編集します:
LogFile="sma -O clog /var/log/mail/maillog |"
LogFormat="%time2 %email %email_r %host %host_r %method %url %code %bytesd"
DNSLookup=0
ShowHeader=1
ShowMenu=1
ShowMonthDayStats=1
ShowDaysOfWeekStats=1
ShowHoursStats=1
ShowDomainsStats=0
ShowHostsStats=1
ShowAuthenticatedUsers=0
ShowRobotsStats=0
ShowSessionsStats=0
ShowPagesStats=0
ShowCompressionStats=0
ShowFileTypesStats=0
ShowFileSizesStats=0
ShowBrowsersStats=0
ShowOSStats=0
ShowOriginStats=0
ShowKeyphrasesStats=0
ShowKeywordsStats=0
ShowHTTPErrorsStats=0
ShowEMailSenders=1
ShowEMailReceivers=1


あとは通常通りにAWStatsを利用するだけです(更新処理を走らせてから, レポートを作成します).


FAQ-SET280 : "NOT SAME NUMBER OF RECORDS OF..."というエラーが発生します
問題:
コマンドラインからAWStatsを実行すると(もしくはブラウザからCGIとして実行すると), "Not same number of records of ..."というエラーが発生します.
解決方法:
このエラーは, AWStatsが参照するデータベースファイル(OS, ブラウザ, ロボット...)が不正であるということを意味します. まずAWStatsを最新のバージョンに更新してみてください. そして, ハードディスク上に以下のファイルが複数存在しないことを確認してください. これらのファイルは, awstats.plがインストールされているディレクトリの中の'lib'(4.0の場合は'db')ディレクトリに存在するはずです:
browsers.pm
operating_systems.pm
robots.pm
domains.pm
search_engines.pm
worms.pm


FAQ-SET300 : "COULDN'T OPEN FILE ..."というエラーが発生します
問題:
以下のエラーが発生します:
"Couldn't open file /workingpath/awstatsmmyyyy.tmp.9999: Permission denied."
解決方法:
このエラーは, 権限の問題でWebサーバーがテンポラリなワークファイル(.tmp.9999で終了するファイル, 9999は4桁の数字です)の書き込みに失敗したということを意味します.
まず最初にnobodyユーザー(Linuxで動作するApacheのデフォルトユーザー), あるいは IUSR_SERVERNAME (NTのIISのデフォルトユーザー名)が/workingpathに対する"書き込み"権限を持っていることを確認してください.
UNIXを利用している場合、そのパスにリンクが存在しないようにしてください.
NTを利用していてディレクトリがNTFSのパーティションに存在する場合, NTFSの権限("読み取り/書き込み/変更")を確認する必要があります.
IISを利用している場合, IISの設定のディレクトリのプロパティで, "書き込み"権限のチェックボックスがチェックされているかどうかも確認する必要があります.
IIISを利用している場合, デフォルトのcgi-binディレクトリがIISのインストール時に生成されていたら, そのディレクトリにAWStatsのディレクトリを置いてみてください.
これら全てを行ってもうまくいかない場合は, DirDataパラメーターを変更して(間違いなくWebサーバーのデフォルトユーザーの権限で書き込みが行える)別のディレクトリを利用するように設定してみてください.


FAQ-SET350 : 空の統計が出力されてしまいます
問題:
AWStatsは動作しているようですが, 結果が全く出力されません. あたかも1ヒットもなかったかのようなレポートが出力されます.
解決方法:
これは高い頻度で発生する問題で, 原因として以下の2つの理由が考えられます.:

1) ログファイル形式の設定が誤っている.
Apacheを利用している場合
もっとも確実に動作させる方法は, "combined" ログ形式を利用することです(セットアップと利用を参照すると, "common" ログ形式を"combined"ログ形式に変更する方法がわかります). Apacheを停止し, ログを消去してから再起動しないと, ログ形式の変更が有効にならないことを忘れないでください. それから, AWStatsの設定ファイルでLogFormat=1に設定してください.
もし別の形式のログを利用したい場合は, 次のFAQにログファイルの形式に合致したLogFileの値を設定する例があります.
IISもしくはWindowsにビルトインされたWebサーバーを利用している場合
nternet Information Serverは, デフォルトのW3C拡張ログ形式ではAWStatsが正常に動作しません. 正常に動作させるためには, IISのスナップインを起動し, Webサイトを選択してそのプロパティを見ます. W3C拡張ログ形式を選択し, そのプロパティを開きます. 拡張プロパティのタブの中の全てのチェックを外します. 全てのチェックが外されたことを確認してから, セットアップと利用の"IISの場合"にあるリストの項目をチェックします.
次のFAQにログファイルの形式に合致したLogFormatの値を設定する例があります.

2) あなたのWebサーバーにアクセスがなかった年もしくは月の統計を閲覧している.
AWStatsを起動すると, デフォルトで当月/当年の数値がレポートされます.
別の月/年のデータを閲覧したい場合は, コマンドラインからHTMLのレポートを生成する際に, -year=YYYYもしくは-month=MMを付加する必要があります.
AWStatsをCGIとして利用している場合は, http://myserver/cgi-bin/awstats.pl?config=xxx&year=YYYY&month=MMのようなURLを利用してください.


FAQ-SET400 : ファイルに出力をパイプしようとしたら, 空ファイルになってしまいました
問題:
awstats.plの出力結果を以下のコマンドを利用してリダイレクトしようとしたら:
> awstats.pl -config=... [other_options] > myfile.html
myfile.htmlが空ファイル(サイズが0)になってしまいました. リダイレクションを外せば, 全てが上手く動作します.
解決方法:
これはAWStatsのバグではなく, PerlとWindowsの間の問題です..
代わりに以下のコマンドを実行すれば, 容易にこの問題を解決できます:
> perl awstats.pl -config=... [other_options] > myfile.html


FAQ-SET450 : 画像やグラフが表示されません
問題:
AWStatsは動作している(全てのデータやカウンタは正常に見える)ようですが, イメージが一切見えません.
解決方法:
Apacheを利用している場合, このような問題(イメージが一切統計ページに表示されない)が発生する可能性があります. "icons"という名前のディレクトリ(Apacheで事前定義されている"icons"エイリアスのターゲットディレクトリ)を利用しているのであれば, 代わりに, 例えば"icon"という名前のディレクトリを利用してみてください(ディレクトリの名前を物理的に変更し, この変更を反映するために設定ファイルのDirIconsパラメーターを変更します).


FAQ-SET500 : 損失なくログファイルを循環させるには
問題:
Webサーバーのシステムの機能, もしくは外部コマンド(rotatelog, cronolog)を利用してログファイルをアーカイブ/循環させたいのですが, 循環処理中に一行たりとも情報を失いたくありません.
解決方法:
循環システムを利用している場合(Webサーバー内蔵の機能, もしくは外部のソフトウェア), あなたはおそらくAWStatsのPurgeLogFileパラメーターもArchiveLogRecords パラメーターも利用していないのではないでしょうか.
* もし設定ファイルで現行のログを処理するように設定されており(AllowToUpdateStatsFromBrowserオプションを利用したい場合), 循環処理の間に1レコードたりとも失いたくないのであれば, -logfileオプションを利用して(設定ファイルの変更を避けるためです)AWStatsの更新処理の対象をアーカイブされたログファイルにするだけでいいでしょう.
* もしあなたがスケジューラーを利用してアーカイブされたファイルを対象に更新を行うという手段を選択しているのであれば(セキュリティ的な理由や, 巨大サイトでCPUの乱用を避けるため), AllowToUpdateStatsFromBrowserを有効にしたAWStatsの"リアルタイム"機能を利用していないのでしょう. この場合, 循環プロセスが終了した後に, アーカイブされたログを処理するような設定を利用して更新処理を実行する(例えばLogFileのdateタグを利用します)だけでいいということになります.
ノート: Apacheを利用している場合は, rotatelogよりもcronologを利用したほうがいいように思われます(cronologはUnix/Linux, Windowsで利用できる上、柔軟性に富んでいます).
cronlogもしくはrotatelogを利用するには, 以下の例のような形でWebサーバーのログファイル名を, パイプを利用して指定する必要があります:
CustomLog "|/usr/sbin/cronolog [cronolog_options] /var/logs/access.%Y%m%d.log" combined


FAQ-SET550 : 短い間隔でAWStatsを起動するには
問題:
AWStatsを頻繁に起動して統計を更新しなければなりませんが, 実際どのように設定すればいいのでしょうか?
解決方法:

Windowsを利用している場合, 内蔵のタスクスケジューラーを利用することができます. タスクスケジューラーの利用は AWStatsに直接関係した問題ではないため, Windowsのマニュアルを参照してください. 警告, "awstats.pl -config=mysite -update" をタスクスケジューラーにスケジュールすると, タスクは失敗する可能性があります. この場合, 以下のように登録してみてください.
"C:\WINNT\system32\CMD.EXE /C C:\[awstats_path]\awstats.pl -config=mysite -update"
もしくは
"C:\[perl_path]\perl.exe C:\[awstats_path]\awstats.pl -config=mysite -update"
他に入手可能なタスクスケジューラー(シェアウェア/フリーウェア)は, 標準のものよりもよくできています.

UNIX系のOSを利用している場合, "crontab"を利用することができます.
以下にcronファイルの設定例を示します(UNIXのcronについてのリファレンスマニュアルを参照してください):
毎日午前4時に起動する場合, 以下のように設定します:
0 4 * * * /opt/awstats/wwwroot/cgi-bin/awstats.pl -config=mysite -update
毎時間更新処理を起動するには, 以下のように設定します :
0 * * * * /opt/awstats/wwwroot/cgi-bin/awstats.pl -config=mysite -update


FAQ-SET600 : 私自身のIPアドレス(もしくはサブネットごと)を統計から除外するには ?
問題:
自分のIPアドレスが統計に含まれないようにしたい, もしくは自分が所属するサブネットからのアクセスを全て統計から除外したい.
解決方法:
設定ファイルの中のSkipHostsパラメーターを設定する必要があります.
希望の条件に合わせて, 以下のように設定します:
- 自分のIPアドレスである123.123.123.123を除外したい場合, SkipHosts="123.123.123.123"と設定します.
- 123.123.123.xxxのサブネットごと除外したい場合, SkipHosts="123.123.123"と設定します.
- xxx.myintranet.comのサブホスト全てを除外したい場合, SkipHosts=".myintranet.com"と設定します(ログの中でDNSの逆引きが完了している場合のみ機能します).




FAQ-COM100 : AWSTATSのスピード/タイムアウトの問題
問題:
巨大なリグファイルを解析する際の処理時間がかかるのが気になります(例: 更新処理をブラウザから行うと, 待たされた挙句にタイムアウト/内部サーバーエラーが返される). 例のような事態を避けるために, 避けるべき/行うべき設定はありますか?
解決方法:
どうすればログ解析ツールが良好なパフォーマンスを得ることができるかを理解する必要があります. 処理時間を短縮するために行うべき代表的な設定がいくつかあります.
ベンチマークのページのAWStatsの処理速度を向上させるには を参照してください.


FAQ-COM150 : ベンチマーク / AWStatsの統計更新処理の起動頻度
問題:
AWStatsのパフォーマンスはどの程度なのでしょうか ?
私の場合, どれくらいの頻度でAWStatsの統計の更新処理を起動すればいいのでしょうか ?
解決方法:
全てのベンチマーク情報と更新処理の起動頻度についてのアドバイスは, ベンチマークのページにまとめられています.


FAQ-COM200 : どうすればDNSの逆引きをしてくれるのでしょうか
問題:
AWStatsの統計ページにホスト名が一切表示されていません. IPアドレスのみが表示されており, 国別レポートは全て"不明"と表示されています.
解決方法:
AWStatsの設定ファイルの中のDNSLookupの設定がDNSLookup=1(規定値)である場合, あなたのログファイルの中にIPアドレスを発見すると, AWStatsはDNSの逆引きを行ってホスト名とドメイン名を取得しようとします. まずここに正しい値が設定されていることを確認してください. DNSLookup=0という設定は, ログファイルの中のIPアドレスがすでにホスト名に解決されている場合にのみ利用します. 例えば, Apacheを設定する際にHostNameLookups=onというディレクティブを指定している場合です. WebサーバーがDNSの逆引きを行い, ログファイルの中のIPアドレスをホスト名に変換するように設定したとしても, DNSの逆引きは必ずしも成功するとは限らず, IPアドレスがそのまま残される場合もあります. しかし, WebサーバーがDNSの逆引きに失敗していたとしたら, AWStatsもまた必ずDNSの逆引きに失敗します(全てのDNSの逆引きは同一のシステムAPIを利用して行われるため). このため, 設定ファイル内でDNSLookup=0を指定して, AWStatsにすでに完了している逆引きを行わせないようにします. もし望むのであれば, ログ解析スクリプトを実行する前に, ログファイルのDNSの逆引きを行うことも可能です(ログファイル中のIPアドレスのホスト名への置換のみを行う必要がある場合). この場合, AWStatsに同梱されて配布されているlogresolvemergeツールを利用します(このツールは, Apacheに同梱されているlogresolveを, 更に改良したツールです).


FAQ-COM250 : 他のログ解析ツールと異なる結果が出ます
問題:
私はWebalizer(もしくは他のログ解析ツール)を利用していますが, AWStatsが報告する内容と一致していません. なぜなのでしょうか ?
解決方法:
AWStatsとその他のログ解析ツールとを比較すると, 場合によってはかなり顕著な違いを発見することがあるかもしれません. 事実, 全てのログ解析ツール(AWStatsでさえ)は, ロボットやプロキシサーバーの問題のため、"過剰な報告"をしてしまいます. しかしながら, もっとも著名な解析ツールでさえ非常に高い誤差(現実の10%~2倍)を出してしまう一方で, AWStatsはこの"過剰な報告"を最小限に抑え, 非常に精度が高い数値を作成します. .
以下に差異が発生する主な原因をいくつか挙げます:
- CGIが作成する特定の動的なページが".cgi"という拡張子を持っていない場合, ログ解析ツール(例 : Webalizer)によっては"ページ"としてカウントされません("ヒット"としてのみカウントされる). このため, これらのページが正しく統計に反映されなくなります. AWStatsはこのようなエラーを起こすことはなく, 全てのCGIのページを"ページ"としてカウントします.
- AWStatsのみが(現時点で私が知る限りで), ロボットの訪問を検知することができる唯一の解析ツールです. その他全ての解析ツールは, それを人間の訪問者だと考えます. この結果, 現実よりも多くの訪問回数と訪問者数が報告されることになります. この問題はAWStatsには発生しません. AWStatsが"1訪問者"と報告する場合, それは"人間の訪問者が1人"ということを意味します. ロボットによる全てのヒットは, "ロボット/スパイダーの統計"で報告されます.
- 多くのログ解析ツール(例 : Webalizer)は, "ヒット"を訪問者をカウントする際に利用します. この方法はあまりうまい方法とはいえません. 訪問者の中には, 多数のプロキシサーバーを利用している人もいます(例 : AOLユーザー). これは, ある一人の訪問者があなたのサイトに到達するために, 複数のホスト(複数のIPアドレス)を利用する可能性があることを意味します(例 : あるプロキシサーバーがページ本体をダウンロードし, 別の2つのサーバーが全てのイメージをダウンロードするために利用される). この場合, 一意な訪問者の統計が"ヒット"を基準にしていると, 3人の訪問者があったと報告されますが, これは誤りです. AWStatsでは, HitBoxと同様に, HTMLページのみを一意な訪問者をカウントする際に利用します. この方式だとエラーが減少しますが, あるプロキシサーバーがあるHTMLのフレームをダウンロードし, それ以外のプロキシサーバーが別のフレームをダウンロードする可能性があるので, 完璧ではありません. この場合, 一意な訪問者数が"過剰な報告"になりますが, 重要な問題とななりません.
また, ログ解析ツールが持つデータベースとアルゴリズムにより, 統計の詳細の正確性に差異が出ます:
- AWStatsはブラウザやOS, 検索エンジンについて巨大なデータベースを持っています. このため, これらに関係する統計は, より正確になります.
- AWStatsは, あなたのサイトを発見するために利用された検索語もしくは検索文を発見する際に利用する, URLの文法のルールを持っています. 更に, AWStatsは未知の文法を持ったURLから, 検索キーワードを発見するためのアルゴリズムも持っています.


FAQ-COM300 : ローカル時間とAWStatsが報告する時間とが一致しません
問題:
私はIISを利用していますが, ローカル時間とAWStatsが報告する時間とが一致しません. 例えば, 私が午前4時にヒットしたら, AWStatsはそれが午前2時に発生したものとして報告します.
解決方法:
あなたのクライアントの時間の設定に問題があるわけではありません. AWStatsはログに報告されているサーバーの時間のみを利用しており, 全ての時間はサーバーの時間を利用して報告されます. この問題は, 特定の言語のIISがログファイルに(ローカル時間ではなく)GMT時間を記録することが原因です. このため, 統計結果もGMT時間で報告されてしまいます.
現時点では, MSが次期バージョンのIISでこの仕様を変更するのを待つ以外に, この問題を根本的に解決する手段はありません. しかし, MSのサポート技術情報Q271196 "IIS Log File Entries Have the Incorrect Date and Time Stamp"には, 以下のように書かれています:
選択されたログ形式は, W3C拡張ログファイル形式です. 拡張ログ形式はPhillip M. Hallam-BakerおよびBrian Behlendorfの手により, W3C Working Draft WD-logfile-960323という仕様書によって定義されています. この仕様書では, 日付と時間は常にGMTで記録するように定義されています. IISのこの挙動は, この仕様に従った設計をしているためです.
つまり, この挙動は変更されることはまずないと考えられます.


FAQ-COM350 : 古いログファイルを処理させるにはどうしたらいいのでしょうか ?
問題:
AWStatsに過去のデータを取り込むために, 古いログファイルを処理させたい.
解決方法:
過去のログファイルをポイントするようにLogFileパラメーターを変更し, それから更新処理を実行する(あるいは, コマンドラインの-logfileオプションを利用して, LogFileパラメーターをオーバーライドする)必要があります. 更新処理はファイルを時系列でしか処理できません. このため, すでに最近のファイルを処理させているのであれば, 全ての統計(次のFAQを参照)を削除し, 過去の全てのログファイルについて, 時系列順で更新処理をやり直す必要があります.


FAQ-COM400 : ロードバランシングシステムで, ログファイルが分割されている場合の統計の更新方法は ?
問題:
ログファイルが分割されているロードバランシングシステムでは, どのように統計を更新すればいいのでしょうか ?
SOLUTION:
全てのロードバランシングサーバーに存在する分割されたログファイルを結合し, 1つのファイルにまとめるのが一番望ましい解決方法です. AWStatsに同梱されているlogresolvemerge を利用する場合は, 以下の形式で実行します:
logresolvemerge.pl file1.log file2.log ... filen.log > newfiletoprocess.log
それから設定ファイルのLogFileパラメーターをnewfiletoprocess.logを処理するように編集するか, コマンドラインオプションの-logfileを利用して, LogFileパラメーターをオーバーライドします.


FAQ-COM500 : 統計をリセットするにはどうしたらいいのでしょうか ?
問題:
今までの全ての統計をリセットして, 統計を再度開始したい.
解決方法:
AWStatsが解析したデータは, 全てawstatsMMYYYY.[site.]txt という名前のファイルに格納されています(1ファイル/1月). これらのファイルは, DirDataパラメーターで指定されたディレクトリ(デフォルトではawstats.plと同じディレクトリ)に置かれています.
任意の月の統計をリセットしたい場合は, その年/月のファイルを削除します.
全ての統計をリセットしたい場合は, 全てのawstats*.txtを削除します.
警告, これら全てのデータファイルをひとたび削除すると, バックアップを取っておかない限り, 統計情報を復元することは不可能になります. 過去の統計情報を取り戻すためには, 全ての過去のログファイル(時系列順)を再処理させなければなりません.


FAQ-COM550 : 履歴ファイル(awstatsMMYYYY*.txt)の任意の行を安全に削除することはできますか ?
問題:
ログファイルを処理した後で, AWStatsの更新処理を再度実行するのではなく, AWStatsの履歴ファイルの中のデータを直接編集することによって統計の結果を変更したくなりました.
解決方法:
"BEGIN_"もしくは"END_"で開始している行を削除してしまうと, AWStatsはそのファイルが"破損"していると検知してしまうため, これらの行は削除してはいけません. "section"(BEGIN_xxxとEND_xxxの間)に属していない全ての行も削除すべきではありません. "section record"の行を編集することはできますが, 自己責任で行ってください. 編集すると, 統計ページで不正な値が報告される可能性があります.




FAQ-SEC100 : AWStatsは Cross Site Scripting Attacksの攻撃対象となり得ますか ?
問題:
AWStatsがレポートページでリンクを表示する際に, 不正なユーザーがブラウザで < SCRIPT > ... < /SCRIPT >をパラメーターに含むURLを入力したとしたら, そのスクリプトは実行されますか ?
解決方法:
いいえ. AWStatsには, ログ解析結果ページを悪用したCross Site Scripting Attackを可能にするような, スクリプトコードを含んだURLをフィルタして削除する機能があります.

FAQ-SEC150 : 特定のユーザーが他のユーザーの統計を閲覧できないようにするにはどうしたらいいのでしょうか ?
問題:
ユーザーxxx(www.xxx.comを持っている)がユーザーyyy(www.yyy.comを持っている)の統計を閲覧できないようにしたいのですが, どのようにAWStatsを設定すればいいのでしょうか ?
解決方法:
セキュリティに関するTipsを参照してください.


FAQ-SEC200 : Code Red系のウイルスによって破損されたログ(統計)ファイルを修復する方法は ?
問題:
私のサイトがCode Redの攻撃を受けました. この結果, ログファイルは破損し, 404エラーで埋め尽くされています. このため, 統計も404エラーで埋め尽くされてしまいました. このため, AWStatsの動作が遅くなり, 履歴ファイルも巨大になってしまいました. この状況を改善する方法はありますか ?
解決方法:
はい.
感染したブラウザやロボットが以下のような長大で不正なURLのリクエストをあなたのサイトに(サーバーがIISであると期待して)送りつけてくるのが, Code Red系のウイルスによる攻撃の特徴です:
/default.ida?XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%40%50...%40%50
URLは感染したロボットやブラウザが生成したもので, Webサーバーの脆弱性を突くのが目的です(Code Redに関係があるのはIISだけです). Code Redによる攻撃には, 上記の文字列がしばしば現れます. 例えばCode Redの場合, URLの中に必ずdefault.ideという文字列が含まれます. このため, 設定ファイルを編集して, SkipFilesパラメーターに以下の値を設定するといいでしょう:
SkipFiles="default.ida"