Wie analysiere ich mehrere gz-Protokolldateien für Awstats?

21

Ich bin ziemlich neu in awstats und habe Awstats auf meinem Apache-Webserver konfiguriert, um Nginx-Zugriffsprotokolle zu analysieren (Nginx-Webserver ist für meine Django-App). Ich kann die Statistiken entnehmen, LogFile=/var/log/nginx/access.logaber wie analysiere ich mehrere Protokolle im GZIP-Format. Zum Beispiel access.log.1.gz ... access.log.40.gz. Ich muss viele Protokolle analysieren.

Rakesh
quelle

Antworten:

28

Was Sie hier wahrscheinlich tun möchten, ist, alle diese Protokolldateien einmal zu analysieren und von da an nur noch die aktuellen Protokolldateien zu analysieren.

Am einfachsten ist es, alle diese Dateien in eine einzelne Datei zu entpacken, awstats einmal darüber laufen zu lassen und von da an awstats auf Ihre access.log-Datei zu richten.

awstats hat normalerweise ein Skript namens logresolvemerge.pl, das die komprimierten Dateien lesen kann und sie entsprechend zusammenführt, damit awstats eine Analyse durchführen kann.

Führen Sie aus, um alle vorhandenen zusammenzuführen

perl /usr/share/awstats/tools/logresolvemerge.pl /var/log/nginx/access.log* > /tmp/nginx.tmplog

Dies wird wahrscheinlich eine Weile dauern.

Sie können awstats dann einmal über diese Datei ausführen lassen (LogFile entsprechend einstellen).

Von da an sollten Sie awstats über die neueste Protokolldatei ausführen lassen - genau das macht Ihre aktuelle Konfiguration.

Abhängig davon, wie oft Sie awstats gegen rotierende Nginx-Protokolldateien ausführen, möchten Sie möglicherweise, dass diese sowohl die aktuelle als auch die vorherige Protokolldatei lesen. (Wenn Sie z. B. Nginx-Protokolldateien jeden Tag um 12 drehen, aber awstats jeden Tag um 1 ausführen, enthält die Protokolldatei bei jeder Ausführung von awstats nur das, was seit der letzten Drehung geschrieben wurde.) Sie können logresolvemerge.pl in Ihrem LogFile-Befehl folgendermaßen verwenden:

LogFile="/usr/share/awstats/tools/logresolvemerge.pl /var/log/nginx/access.log /var/log/nginx/access.log.1.gz |"

Dies weist awstats an, den Befehl logresolvemerge.pl mit den beiden Protokolldateien als Parameter auszuführen, und awstats liest die Ausgabe dieses Skripts ein (das ist, was die Pipe | tut).

Daniel Lawson
quelle
Ich wusste nicht, dass das awstats-Skript Pipes in der Konfigurationsdatei verarbeiten kann. Schön + 1.
d -_- b
Einverstanden - logresolvemerge.pldie Weiterleitung der Ausgabe an awstats ist eine großartige Lösung.
Jez
Informationen zu
brauliobo
7

Alternativ können Sie einen Echtzeit-Protokollanalysator wie GoAccess verwenden. Es ist sehr schnell und Sie müssen kein Protokoll entpacken.apache & nginx

http://goaccess.prosoftcorp.com/

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

ODER

zcat access.log.*.gz | goaccess -a -s -b
Sanders12
quelle