「AWStats」の設定

「AWStats」を用いて「vsFTPd」のログ解析を行います。
ただ、以下の説明でログファイルの変換スクリプトを作成していますが、全ログファイルを変換していますので、 ログファイルのサイズが大きいと非常に時間が掛かります。
その為、ログローテートのタイミング等で変換する方が良いです。
また、日本語のファイルを送受信した場合、ファイル名が正しく表示されません。
これは「vsFTPd」がログファイルに書き込む段階で、判断できない文字を「?」に変換している為です。
なお、「Apache」の設定「vsFTPd」の設定Webアクセスログ解析(AWStats)は完了済みとします。

「vsFTPd」の設定

「vsFTPd」の設定

xferlog形式のログファイルを出力するように変更します。
ただ、xferlog形式のログではファイルの送受信以外の操作等はログに記録されませんので、 「vsFTPd」オリジナルのログファイルも出力するようにします。

[root@CentOS ~]# vi /etc/vsftpd/vsftpd.conf <= 設定ファイルの編集
vsftpd_log_file=/var/log/vsftpd.log <= 追加(「vsFTPd」オリジナルのログファイルのパス)

xferlog_enable=YES <= 確認(アップロードやダウンロードの詳細ログを「vsFTPd」オリジナルのログに作成する)

#xferlog_file=/var/log/vsftpd.log
↓
xferlog_file=/var/log/xferlog <= xferlogのパス

xferlog_std_format=YES <= 確認

dual_log_enable=YES <= 追加(2種類のログをとる)
log_ftp_protocol=NO <= 追加(全てのやりとりはログに残さない。xferlog_std_formatと背反の為)

古いログファイルを削除します。

[root@CentOS ~]# rm /var/log/xferlog

「vsFTPd」を再起動し、設定を反映させます。

[root@CentOS ~]# /etc/rc.d/init.d/vsftpd restart

ログファイルの変換

「vsFTPd」の出力するxferlog形式のログファイルは、そのままでは「AWStats」で利用できませんので、 ログファイルを変換するスクリプトを作成します。

[root@CentOS ~]# vi /var/www/awstats/conv_vsftpdlog.sh <= ログ変換スクリプトの作成
#!/bin/sh

AWK='/bin/awk'

$AWK '{print $2" "$3" "$4" "$5" "$7" "$8" "$9" "$12" "$14" "$18}' $1 | \
$AWK '{gsub(/o/, "GET",$8); print; }' | \
$AWK '{gsub(/i/, "PUT",$8); print; }'

exit 0


[root@CentOS ~]# chmod 755 /var/www/awstats/conv_vsftpdlog.sh <= 作成したスクリプトに実行権限付加
「AWStats」の設定

新規に設定ファイルを作成します。

[root@CentOS ~]# vi /etc/awstats/awstats.vsftpd.conf <= 設定ファイルの作成
LogFile="/var/log/conv_xferlog" <= ログファイルのパスを指定
LogType=F
LogFormat="%time3 %host %bytesd %url %method %logname %code"
LogSeparator=" " <= ログの区切り文字をスペースに指定
SiteDomain="crimson-snow.net" <= ドメインを指定
DNSLookup=1
DirData="/var/www/awstats/vsftpd" <= AWStatsが保持する分析結果等のファイルを格納するディレクトリを指定
(絶対パスもしくはawstats.plからの相対パス)

DirCgi="/awstats" <= awstats.plが格納されているディレクトリを指定
(絶対URLもしくはWWWサーバのルートディレクトリからの相対URL)

DirIcons="/awstats/icon" <= アイコンファイルが格納されているディレクトリを指定
(絶対URLもしくはWWWサーバのルートディレクトリからの相対URL)

EnableLockForUpdate=0
AllowAccessFromWebToFollowingIPAddresses=""
AllowToUpdateStatsFromBrowser=0
Lang="jp"

NotPageList=""
LevelForBrowsersDetection=0
LevelForOSDetection=0
LevelForRefererAnalyze=0
LevelForRobotsDetection=0
LevelForWormsDetection=0
LevelForSearchEnginesDetection=0

ShowLinksOnUrl=0
ShowMenu=1
ShowSummary=UVHB
ShowMonthStats=UVHB
ShowDaysOfMonthStats=HB
ShowDaysOfWeekStats=HB
ShowHoursStats=HB
ShowDomainsStats=HB
ShowHostsStats=HBL
ShowAuthenticatedUsers=HBL
ShowRobotsStats=0
ShowEMailSenders=0
ShowEMailReceivers=0
ShowSessionsStats=1
ShowPagesStats=PBEX
ShowFileTypesStats=HB
ShowFileSizesStats=0
ShowBrowsersStats=0
ShowOSStats=0
ShowOriginStats=0
ShowKeyphrasesStats=0
ShowKeywordsStats=0
ShowMiscStats=0
ShowHTTPErrorsStats=0
ShowSMTPErrorsStats=0

ディレクトリの作成

AWStatsが保持する分析結果等のファイルを格納するディレクトリを作成します。

[root@CentOS ~]# mkdir /var/www/awstats/vsftpd
「AWStats」の実行

ログファイルを変換してから「AWStats」を実行します。

[root@CentOS ~]# /var/www/awstats/conv_vsftpdlog.sh /var/log/xferlog > /var/log/conv_xferlog <= ログファイルの変換
[root@CentOS ~]# /var/www/awstats/awstats.pl -config=vsftpd -update

http://サーバのIPアドレス/awstats/awstats.pl?config=vsftpd
でアクセスできれば問題ありません。

出力結果のHTML化

上記のままの設定で問題ありませんが、アクセスするたびにCGIスクリプトが実行されますので、 表示が遅く、サーバにも負荷がかかります。
そこで、出力結果をHTML化します。

[root@CentOS ~]# /var/www/awstats/awstats.pl -config=vsftpd -output -staticlinks \
> /var/www/awstats/vsftpd.html

http://サーバのIPアドレス/awstats/vsftpd.html
でアクセスできれば問題ありません。

HTML化の自動実行

出力結果のHTML化を行うスクリプトを作成し、cronに登録して自動的に実行するようにします。

[root@CentOS ~]# vi awstats_vsftpd.sh <= スクリプトファイルの新規作成
#!/bin/sh

/var/www/awstats/conv_vsftpdlog.sh /var/log/xferlog > /var/log/conv_xferlog
/var/www/awstats/awstats.pl -config=vsftpd -update > /dev/null
/var/www/awstats/awstats.pl -config=vsftpd -output -staticlinks > /var/www/awstats/vsftpd.html


[root@CentOS ~]# chmod 755 awstats_vsftpd.sh <= スクリプトファイルに実行権限を付加
[root@CentOS ~]# crontab -e <= cronの編集
00 00 * * * /root/awstats_vsftpd.sh <= 追加
▲ページのトップへ