Awstatsの複数のgzログファイルを分析する方法


21

私はawstatsにかなり慣れており、nginxアクセスログを分析するためにApache WebサーバーでAwstatsを設定しています(nginx Webサーバーは私のdjangoアプリ用です)、私は統計を取得できLogFile=/var/log/nginx/access.logますが、gzip形式の複数のログをどのように分析しますか?access.log.1.gz ... access.log.40.gzなど。分析するログがたくさんあります。

回答:


29

ここでおそらくやりたいことは、これらすべてのログファイルを一度分析し、それ以降は現在のログファイルのみを分析し続けることです。

最も簡単なことは、これらのファイルをすべて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 |"

これは、awstatsに2つのログファイルをパラメーターとしてlogresolvemerge.plコマンドを実行するように指示し、awstatsはそのスクリプトの出力を読み取ります(パイプが行うことです)


awstatsスクリプトが構成ファイル内のパイプを処理できることを知りませんでした。Nice + 1。
D -_- B

合意- logresolvemerge.pl出力をawstatsにパイプすることは素晴らしい解決策です。
ジェズ


7

または、GoAccessなどのリアルタイムログアナライザーを使用できます。とても高速で、ログを解凍する必要はありません。apache & nginx

http://goaccess.prosoftcorp.com/

zcat -f access.log* | goaccess -a -s -b

または

zcat access.log.*.gz | goaccess -a -s -b
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.