アクセスログ解析(Awstats)
Awstats は視覚的に綺麗で、見やすいログ解析ツールだ。
日別・時間別・アクセス先など様々な統計情報を把握することが出来る。
Yumでインストールする場合、EPELリポジトリを追加しておく。
■awstatsをインストール
[root@server1 ~]# yum install awstats 読み込んだプラグイン:fastestmirror, langpacks, priorities Loading mirror speeds from cached hostfile * base: ftp.riken.jp * centosplus: ftp.riken.jp * epel: mirror.nus.edu.sg * extras: ftp.riken.jp * updates: mirrors.163.com 53 packages excluded due to repository priority protections 依存性の解決をしています --> トランザクションの確認を実行しています。 ---> パッケージ awstats.noarch 0:7.3-2.el7 を インストール --> 依存性の処理をしています: perl-Geo-IP のパッケージ: awstats-7.3-2.el7.noarch --> トランザクションの確y認を実行しています。 ---> パッケージ perl-Geo-IP.x86_64 0:1.43-3.el7 を インストール --> 依存性解決を終了しました。 依存性を解決しました ==================================================================================================== Package アーキテクチャー バージョン リポジトリー 容量 ==================================================================================================== インストール中: awstats noarch 7.3-2.el7 epel 2.3 M 依存性関連でのインストールをします: perl-Geo-IP x86_64 1.43-3.el7 epel 87 k トランザクションの要約 ==================================================================================================== インストール 1 パッケージ (+1 個の依存関係のパッケージ) 総ダウンロード容量: 2.4 M インストール容量: 6.8 M Is this ok [y/d/N]: y Downloading packages: (1/2): awstats-7.3-2.el7.noarch.rpm | 2.3 MB 00:00:01 (2/2): perl-Geo-IP-1.43-3.el7.x86_64.rpm | 87 kB 00:00:01 ---------------------------------------------------------------------------------------------------- 合計 1.3 MB/s | 2.4 MB 00:00:01 Running transaction check Running transaction test Transaction test succeeded Running transaction インストール中 : perl-Geo-IP-1.43-3.el7.x86_64 1/2 インストール中 : awstats-7.3-2.el7.noarch 2/2 検証中 : perl-Geo-IP-1.43-3.el7.x86_64 1/2 検証中 : awstats-7.3-2.el7.noarch 2/2 インストール: awstats.noarch 0:7.3-2.el7 依存性関連をインストールしました: perl-Geo-IP.x86_64 0:1.43-3.el7 完了しました!
※今までは別々にインストールする必要があったperl-Geo-IPも一緒にインストールされる
■Awstatsの設定ファイルの編集
不要な設定ファイルを削除しておく [root@server1 ~]# rm -f /etc/awstats/awstats.localhost.localdomain.conf [root@server1 ~]# rm -f /etc/awstats/awstats.server1.yokensaka.com.conf 設定ファイルのコピー [root@server1 ~]# cp /etc/awstats/awstats.model.conf /etc/awstats/awstats.yokensaka.com.conf 設定ファイルの編集 [root@server2 ~]# vi /etc/awstats/awstats.yokensaka.com.conf 独自ドメイン名に変更 SiteDomain="localhost.localdomain" ↓ SiteDomain="yokensaka.com" アクセス元から内部(例:192.168.1.X)を除外する HostAliases="localhost 127.0.0.1" ↓ HostAliases="localhost 127.0.0.1 REGEX[^192\.168\.1\.]" アクセス元の名前解決を行う(アクセス元をIPアドレスではなくホスト名で表示する) DNSLookup=2 ↓ DNSLookup=1 コメント解除(該当する部分にマウスを当てるとヘルプが表示される) #LoadPlugin="tooltips" ↓ LoadPlugin="tooltips" コメント解除(アクセス元国情報を詳細に取得) #LoadPlugin="geoipfree" ↓ LoadPlugin="geoipfree"
■AWStatsデータベース作成
AWStatsデータベース初期作成スクリプト作成
[root@server1 ~]# vi awstatsinit.sh #!/bin/sh logfile=`grep ^LogFile /etc/awstats/awstats.$1.conf|sed -e 's/LogFile="\([^ ]*\)"/\1/p' -e d` for log in `ls $logfile*|sort -r` do `rpm -ql awstats|grep "awstats\.pl"` \ -config=$1 -update -logfile=$log done
AWStatsデータベース初期作成スクリプト実行
[root@server1 ~]# sh awstatsinit.sh yokensaka.com Create/Update database for config "/etc/awstats/awstats.yokensaka.com.conf" by AWStats version 7.3 (build 20140126) From data in log file "/var/log/httpd/access_log-20140928"... Phase 1 : First bypass old records, searching new record... Direct access to last remembered record has fallen on another record. So searching new records from beginning of log file... Jumped lines in file: 0 Parsed lines in file: 491882 Found 474 dropped records, Found 0 comments, Found 0 blank records, Found 2824 corrupted records, Found 488584 old records, Found 0 new qualified records. Create/Update database for config "/etc/awstats/awstats.yokensaka.com.conf" by AWStats version 7.3 (build 20140126) From data in log file "/var/log/httpd/access_log-20140921"... Phase 1 : First bypass old records, searching new record... Direct access to last remembered record has fallen on another record. So searching new records from beginning of log file... Jumped lines in file: 0 Parsed lines in file: 497671 Found 706 dropped records, Found 0 comments, Found 0 blank records, Found 2766 corrupted records, Found 494199 old records, Found 0 new qualified records. Create/Update database for config "/etc/awstats/awstats.yokensaka.com.conf" by AWStats version 7.3 (build 20140126) From data in log file "/var/log/httpd/access_log"... Phase 1 : First bypass old records, searching new record... Direct access to last remembered record is out of file. So searching it from beginning of log file... Phase 2 : Now process new records (Flush history on disk after 20000 hosts)... Jumped lines in file: 0 Parsed lines in file: 112559 Found 94 dropped records, Found 0 comments, Found 0 blank records, Found 546 corrupted records, Found 111373 old records, Found 546 new qualified records. AWStatsデータベース初期作成スクリプト削除 [root@server1 ~]# rm -f awstatsinit.sh
■Apacheログローテーション設定ファイル編集
Apacheログファイル切替え時、AWStatsのデータベースに取り込んでから切替えを行うようにする
[root@server1 ~]# vi /etc/logrotate.d/httpd /var/log/httpd/*log { missingok notifempty sharedscripts ----追加(ここから)---- prerotate `rpm -ql awstats|grep "awstats_updateall\.pl"` now -confdir="/etc/awstats" \ -awstatsprog="`rpm -ql awstats|grep "awstats\.pl"`" >/dev/null endscript ----追加(ここまで)---- delaycompress postrotate /bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true endscript }
■Apache設定
Apache用AWStats設定ファイル編集
[root@server1 ~]# vi /etc/httpd/conf.d/awstats.conf <Directory "/usr/share/awstats/wwwroot"> Options None AllowOverride None <IfModule mod_authz_core.c> # Apache 2.4 Require local Require ip 192.168.1.0/24 → 内部ネットワークを追加 </IfModule> <IfModule !mod_authz_core.c> # Apache 2.2 Order allow,deny Allow from 127.0.0.1 Allow from ::1 </IfModule> </Directory>
設定反映(httpdを再起動)
[root@server1 ~]# systemctl reload httpd
これで、/etc/cron.hourly/awstats が一時間毎に実行される。セットアップして1時間たってから、 http://サーバーアドレス/awstats/awstats.pl にアクセスすれば、解析結果が見れるようになる。
Error: Couldn’t open config file・・・というエラーが出る場合は
http://サーバーアドレス/awstats/awstats.pl?config=ドメイン名