J'ai un tas de fichiers journaux Apache que j'aimerais analyser. Je recherche un outil qui ne nécessite pas beaucoup de configuration; quelque chose que je peux exécuter un journal via la ligne de commande, sans déconner sur nos serveurs Web en direct.
Des recommandations?
apache-2.2
log-files
analytics
mmattax
la source
la source
Réponses:
Bien que les outils ci-dessus soient tous cool, je pense que je sais ce que l'interrogateur demandait. Cela me fait souvent mal de ne pas pouvoir extraire les informations d'un journal d'accès de la manière que je peux avec d'autres fichiers.
C'est à cause du format de journal d'accès stupide:
127.0.0.1 - - [16/Aug/2014:20:47:29 +0100] "GET /manual/elisp/index.html HTTP/1.1" 200 37230 "http://testlocalhost/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0"
Pourquoi ont-ils utilisé [] pour la date et "" pour d'autres choses? pensaient-ils que nous ne saurions pas qu'une date était dans le champ 4? C'est incroyablement frustrant.
Le meilleur outil en ce moment est gawk:
gawk 'BEGIN { FPAT="([^ ]+)|(\"[^\"]+\")|(\\[[^\\]]+\\])" } { print $5 }'
sur les données ci-dessus, cela vous donnerait:
En d'autres termes, le FPAT vous donne la possibilité d'extraire les champs de l'apache-log comme s'il s'agissait de champs réels au lieu de simplement des entités séparées par des espaces. C'est toujours ce que je veux. Je peux ensuite analyser cela un peu plus avec un pipeline.
Le fonctionnement du FSPAT est défini ici: http://www.gnu.org/software/gawk/manual/html_node/Splitting-By-Content.html
Vous pouvez donc configurer un alias pour créer un gawk capable d'analyser les journaux apache:
alias apacheawk="gawk -vFPAT='([^ ]+)|(\"[^\"]+\")|(\\\\[[^\\\\]]+\\\\])' " apacheawk '$6 ~ /200/ { print $5 } | sort | uniq
fait ceci pour moi:
et bien sûr presque tout le reste est désormais possible.
Prendre plaisir!
la source
awk '($9 == 200) {print $6,$7,$8}'
afficher la même chose que dans votre exemple. Pas besoin d'y utiliser FPAT (même si cette méthode peut être utile dans d'autres cas)wtop est cool. Il existe également d'autres utilitaires. Souvent, je vais analyser les journaux en utilisant bash, sed et awk.
la source
apachetop est assez cool; il imprime des statistiques en direct. Vous l'exécutez avec
Pour l'installer dans Debian / Ubuntu:
ou depuis la source: https://github.com/JeremyJones/Apachetop
la source
Quel type de sortie souhaitez-vous?
Si vous cherchez juste à compter les choses, alors grep quelque chose logfile.txt | wc -l fonctionne très bien. Si vous voulez de jolis graphiques ... pas tant que ça.
la source
si vous avez un poste de travail Windows que vous pouvez utiliser, alors logparser est l'outil de choix!
la source
analogique fonctionne bien hors de la boîte et ne nécessite pas beaucoup de configuration. logwrangler est un package qui fonctionne avec l'analogique pour générer une sortie plus agréable et nécessite également peu de configuration.
la source
Au lieu d'utiliser un outil de ligne de commande, je suggérerais d'essayer Apache Logs Viewer. C'est un outil gratuit qui peut surveiller et analyser le fichier journal Apache. Il peut générer des graphiques et des rapports assez cool à la volée.
Plus d'informations sur http://www.apacheviewer.com
la source