| トップ | Solaris | FreeBSD | Gentoo | CentOS | Fedora | Windows | Tips | 自宅サーバの動作確認 | サイト内検索(Namazu) | サイト内検索(HE) |
「AWStats」を用いて「vsFTPd」のログ解析を行います。
ただ、以下の説明でログファイルの変換スクリプトを作成していますが、全ログファイルを変換していますので、
ログファイルのサイズが大きいと非常に時間が掛かります。
その為、ログローテートのタイミング等で変換する方が良いです。
また、日本語のファイルを送受信した場合、ファイル名が正しく表示されません。
これは「vsFTPd」がログファイルに書き込む段階で、判断できない文字を「?」に変換している為です。
なお、「Apache」の設定、
「vsFTPd」の設定、
Webアクセスログ解析(AWStats)は完了済みとします。
「vsFTPd」の設定
xferlog形式のログファイルを出力するように変更します。
ただ、xferlog形式のログではファイルの送受信以外の操作等はログに記録されませんので、
「vsFTPd」オリジナルのログファイルも出力するようにします。
[root@Fedora ~]# 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@Fedora ~]# rm /var/log/xferlog |
「vsFTPd」を再起動し、設定を反映させます。
[root@Fedora ~]# /etc/rc.d/init.d/vsftpd restart |
ログファイルの変換
「vsFTPd」の出力するxferlog形式のログファイルは、そのままでは「AWStats」で利用できませんので、 ログファイルを変換するスクリプトを作成します。
[root@Fedora ~]# vi /usr/share/awstats/wwwroot/cgi-bin/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@Fedora ~]# chmod 755 /usr/share/awstats/wwwroot/cgi-bin/conv_vsftpdlog.sh <= 作成したスクリプトに実行権限付加
|
新規に設定ファイルを作成します。
[root@Fedora ~]# 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/lib/awstats/vsftpd" <= AWStatsが保持する分析結果等のファイルを格納するディレクトリを指定 (絶対パスもしくはawstats.plからの相対パス) DirCgi="/awstats" <= awstats.plが格納されているディレクトリを指定 (絶対URLもしくはWWWサーバのルートディレクトリからの相対URL) DirIcons="/awstatsicons" <= アイコンファイルが格納されているディレクトリを指定 (絶対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@Fedora ~]# mkdir /var/lib/awstats/vsftpd |
ログファイルを変換してから「AWStats」を実行します。
[root@Fedora ~]# /usr/share/awstats/wwwroot/cgi-bin/conv_vsftpdlog.sh /var/log/xferlog > /var/log/conv_xferlog <= ログファイルの変換 [root@Fedora ~]# /usr/share/awstats/wwwroot/cgi-bin/awstats.pl -config=vsftpd -update |
http://サーバのIPアドレス/awstats/awstats.pl?config=vsftpd
でアクセスできれば問題ありません。
上記のままの設定で問題ありませんが、アクセスするたびにCGIスクリプトが実行されますので、
表示が遅く、サーバにも負荷がかかります。
そこで、出力結果をHTML化します。
[root@Fedora ~]# /usr/share/awstats/wwwroot/cgi-bin/awstats.pl -config=vsftpd -output -staticlinks \ > /var/www/html/vsftpd.html |
http://サーバのIPアドレス/vsftpd.html
でアクセスできれば問題ありません。
HTML化の自動実行
出力結果のHTML化を行うスクリプトを作成し、cronに登録して自動的に実行するようにします。
[root@Fedora ~]# vi awstats_vsftpd.sh <= スクリプトファイルの新規作成 #!/bin/sh /usr/share/awstats/wwwroot/cgi-bin/conv_vsftpdlog.sh /var/log/xferlog > /var/log/conv_xferlog /usr/share/awstats/wwwroot/cgi-bin/awstats.pl -config=vsftpd -update > /dev/null /usr/share/awstats/wwwroot/cgi-bin/awstats.pl -config=vsftpd -output -staticlinks > /var/www/html/vsftpd.html [root@Fedora ~]# chmod 755 awstats_vsftpd.sh <= スクリプトファイルに実行権限を付加 [root@Fedora ~]# crontab -e <= cronの編集 00 00 * * * /root/awstats_vsftpd.sh <= 追加 |