私はawstatsにかなり慣れており、nginxアクセスログを分析するために私のApacheウェブサーバーでAwstatsを構成しました(nginxウェブサーバーは私のDjangoアプリ用です)、LogFile=/var/log/nginx/access.log
から統計を取ることができますが、どうすればよいですか? gzip形式の複数のログ(access.log.1.gz ... access.log.40.gzなど)を分析していますが、分析するログがたくさんあります。
ここでおそらく実行したいのは、これらすべてのログファイルを一度分析し、それ以降、現在のログファイルのみを分析し続けることです。
最も簡単なことは、これらすべてのファイルを1つのファイルに解凍し、awstatsを1回実行してから、それ以降、access.logファイルでawstatsをポイントすることです。
awstatsには通常、圧縮ファイルを読み取ることができるlogresolvemerge.plと呼ばれるスクリプトがあり、awstatsが分析を行うためにそれらを適切にマージします。
既存のものをすべてマージするには、次を実行します。
Perl /usr/share/awstats/tools/logresolvemerge.pl /var/log/nginx/access.log* > /tmp/nginx.tmplog
これにはおそらく時間がかかります。
次に、このファイルに対してawstatsを1回実行します(LogFileを適切に設定します)。
それ以降は、最新のログファイルに対してawstatsを実行する必要があります。これが現在の構成で行っていることです。
Awstatsを実行する頻度とnginxログファイルをローテーションする頻度に応じて、現在のログファイルと以前のログファイルの両方を読み取らせることができます。 (たとえば、nginxログファイルを毎日12にローテーションするが、awstatsを毎日1に実行する場合、awstatsを実行するたびに、ログファイルには最後のローテーション以降に書き込まれたもののみが含まれます)。次のように、LogFileコマンド内でlogresolvemerge.plを使用できます。
LogFile="/usr/share/awstats/tools/logresolvemerge.pl /var/log/nginx/access.log /var/log/nginx/access.log.1.gz |"
これは、パラメーターとして2つのログファイルを使用してlogresolvemerge.plコマンドを実行するようにawstatsに指示し、awstatsはそのスクリプトの出力を読み取ります(これがパイプの機能です)。
または、GoAccessなどのリアルタイムログアナライザーを使用することもできます。これは本当に高速で、ログを解凍する必要はありません。 Apache & nginx
http://goaccess.prosoftcorp.com/
zcat -f access.log* | goaccess -a -s -b
OR
zcat access.log.*.gz | goaccess -a -s -b