Comment analyser plusieurs fichiers journaux gz pour Awstats?

21

Je suis assez nouveau sur awstats et j'ai configuré Awstats sur mon serveur web apache pour analyser les journaux d'accès nginx (le serveur web nginx est pour mon application django), je peux prendre les statistiques de LogFile=/var/log/nginx/access.logmais comment puis-je analyser plusieurs journaux au format gzip. Tels que access.log.1.gz ... access.log.40.gz. J'ai beaucoup de journaux à analyser.

Rakesh
la source

Réponses:

29

Ce que vous voulez probablement faire ici, c'est analyser tous ces fichiers journaux une fois, puis continuer à analyser uniquement les fichiers journaux actuels.

La chose la plus simple à faire est de décompresser tous ces fichiers dans un seul fichier, puis d'exécuter awstats dessus, puis de pointer awstats vers votre fichier access.log à partir de là.

awstats a normalement un script appelé logresolvemerge.pl, qui peut lire les fichiers compressés et les fusionnera de manière appropriée pour qu' awstats fasse une analyse.

Pour fusionner tous vos fichiers existants, exécutez

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

Cela prendra probablement un certain temps.

Vous pouvez ensuite faire exécuter awstats une fois sur ce fichier (définissez LogFile de manière appropriée).

À partir de là, vous devriez avoir awstats exécuté sur le fichier journal le plus récent - ce que fait votre configuration actuelle.

Selon la fréquence à laquelle vous exécutez awstats par rapport à la rotation des fichiers journaux nginx, vous souhaiterez peut-être qu'il lise à la fois le fichier journal actuel et le précédent. (par exemple, si vous faites tourner les fichiers journaux nginx tous les jours à 12 heures, mais que awstats s'exécute tous les jours à 1 heure, chaque fois qu'awstats s'exécute, le fichier journal ne contiendra que ce qui a été écrit depuis la dernière rotation). Vous pouvez utiliser logresolvemerge.pl dans votre commande LogFile comme ceci:

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

Cela indique à awstats d'exécuter la commande logresolvemerge.pl avec les deux fichiers journaux en tant que paramètres, et awstats lira la sortie de ce script (c'est ce que fait le tube |)

Daniel Lawson
la source
Je ne savais pas que le script awstats pouvait gérer les tuyaux dans le fichier de configuration. Nice + 1.
d -_- b
D'accord - la logresolvemerge.plsortie de tuyauterie vers awstats est une excellente solution.
Jez
sur la tuyauterie, voir stackoverflow.com/questions/13832701/…
brauliobo
7

Vous pouvez également utiliser un analyseur de journaux en temps réel, tel que GoAccess. C'est très rapide et vous n'avez pas besoin de décompresser un journal.apache & nginx

http://goaccess.prosoftcorp.com/

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

OU

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