Quel est le meilleur outil pour analyser les fichiers journaux? [fermé]

j'utilise grep pour analyser mes journaux d'applications de trading, mais c'est limité dans le sens où j'ai besoin de parcourir visuellement la sortie pour voir ce qui s'est passé etc.

je me demande si Perl est une meilleure option? Toutes les bonnes ressources pour apprendre le journal et le traitement de chaîne avec Perl?

je crois aussi que Python serait bon pour ça. Perl vs Python vs 'grep on linux'?

15
demandé sur brian d foy 2010-01-03 11:45:45

9 réponses

à la fin, cela dépend vraiment de la sémantique que vous voulez identifier, si vos logs correspondent à des modèles communs, et ce que vous voulez faire avec les données analysées.

Si vous pouvez utiliser des expressions régulières pour trouver ce dont vous avez besoin, vous avez des tonnes d'options. Perl est une langue populaire et dispose D'installations linguistiques natives très commodes. Personnellement, je me sens beaucoup plus à l'aise avec Python et je trouve que le peu de tracas ajouté pour faire de la REs n'est pas significatif.

Si vous voulez faites quelque chose de plus intelligent que re matching, ou voulez avoir beaucoup de logique, vous pouvez être plus à l'aise avec Python ou même avec Java/C++/etc. Par exemple, il est facile de lire ligne par ligne en Python, puis d'appliquer diverses fonctions de prédicat et réactions aux correspondances, ce qui est génial si vous avez un jeu de règles que vous aimeriez appliquer.

9
répondu Uri 2010-01-03 08:58:48

tous les langages de script sont de bons candidats: Perl, Python, Ruby, PHP, et AWK sont tous bons pour cela. Utiliser l'un de ces langages est mieux que regarder les logs à partir d'une (petite) taille.

porter des pantoufles de rubis pour travailler est un exemple de faire cela dans Ruby, écrit dans Why's inimitable style. Voici un exemple de base en Perl. Je vous suggère de choisir une de ces langues et de commencer à cracker.

4
répondu Yuval F 2010-01-03 09:01:56

Un grand avantage de Perl par rapport à Python est que lors de l'analyse de texte, il est possible d'utiliser expressions régulières directement dans la syntaxe de la langue. Par exemple:

if ($line =~ m/^Regex/) {
    ... code goes here
}

Perl assigne aussi groupes de capture directement à 1$, 2$, etc, ce qui rend très simple de travailler avec. En fonction du format et de la structure des fichiers journaux que vous tentez d'analyser, cela pourrait s'avérer très utile (ou, si vous pouvez l'analyser comme un fichier de largeur fixe ou en utilisant plus simple techniques, pas très utile du tout).

ce n'est que du sucre syntaxique, vraiment, et d'autres langues vous permettent également d'utiliser des expressions régulières et de capturer des groupes (en effet, l'article lié montre comment le faire en Python). Vous avez juste à écrire un peu plus de code et de passer autour des objets pour le faire.

2
répondu Adam Luchjenbroers 2010-01-03 09:47:38

il y a un programme Perl appelé Log_Analysis

2
répondu Carl Smotricz 2010-01-03 10:30:39

apprendre un langage de programmation vous permettra de saisir les capacités d'analyse à un autre niveau.

tout langage dynamique ou "scripting" comme Perl, Ruby ou Python fera l'affaire. Ce que vous devriez utiliser dépend vraiment de facteurs externes. Parmi les choses que vous devriez considérer:

  • est-ce que le travail utilise déjà un language (langue)?
  • connaissez-vous quelqu'un qui peut vous encadrer dans une langue appropriée?
  • essayez un peu chaque langue et voyez la langue qui vous convient le mieux.

personnellement, pour la tâche ci-dessus, J'utiliserais Perl. YMMV.

plusieurs raisons d'aimer Perl:

puissants monoblocs-si vous avez besoin de faire un travail vraiment rapide et ponctuel, Perl vous offre de très bons raccourcis. Voir perlrun-n par exemple,

Multi-paradigm language - Perl supporte les méthodologies de programmation impérative, fonctionnelle et orientée objet.

Sigils - ceux qui dirigent les caractères de ponctuation sur des variables comme $foo ou @bar. Ils sont un peu comme la notation hongroise sans être si ennuyeux.

Moose-un nouveau système OOP incroyable qui fournit de nouvelles techniques oo puissantes pour la composition de code et la réutilisation.

Sténoses -use strict le pragma saisit de nombreuses erreurs que d'autres langages dynamiques effacent au moment de la compilation. Ça me manque terriblement quand J'utilise Python ou PHP.

l'autodiscipline - Perl vous donne la liberté d'écrire et de faire ce que vous voulez, quand vous voulez. Cela signifie que vous devez apprendre à écrire du code propre ou vous allez souffrir. Heureusement, il existe des outils pour aider un débutant. Perl::Critic peluches-comme l'analyse de code pour les meilleures pratiques.

2
répondu daotoad 2010-01-03 19:07:53

je trouve ce liste inestimable pour traiter avec n'importe quel travail qui nécessite de traiter avec python.

Je n'utiliserais pas perl pour analyser des journaux volumineux / complexes-juste pour la lisibilité (la vitesse sur perl me manque (gros travaux) - mais c'est probablement mon code perl (je dois l'améliorer)).

cependant si grep répond parfaitement à vos besoins pour l'instant - il n'y a vraiment aucune raison de s'enliser dans l'écriture d'un analyseur complet. Solution la plus simple est généralement la meilleure, et grep est un bel outil.

1
répondu torger 2010-01-03 09:08:02

une autre interprétation possible de votre question Est "y a-t-il des outils qui facilitent la surveillance des journaux?"et pour y répondre, je vous suggère d'avoir un coup d'oeil à Splunk ou peut-être Log4view.

1
répondu ehnmark 2010-01-03 10:52:18

sur linux,vous pouvez utiliser juste le shell(bash, ksh etc) pour analyser les fichiers journaux s'ils ne sont pas trop gros en taille. Les autres outils sont généralement grep et awk. Cependant, pour plus de puissance de programmation, awk est généralement utilisé. Si vous avez de gros fichiers à analyser, essayez awk.

bien sûr, Perl ou Python ou pratiquement toutes les autres langues avec des capacités de lecture de fichiers et de manipulation de chaînes peuvent aussi être utilisées.

1
répondu ghostdog74 2010-01-03 14:35:29

Nagios De La Surveillance Du Journal

La raison de cet outil est le meilleur pour votre but est ceci:

il ne nécessite aucune installation de paquets étrangers. Ce qui signifie qu'il n'est pas nécessaire d'installer des dépendances perl ou des paquets idiots qui peuvent vous rendre nerveux.

Il y a peu ou pas de courbe d'apprentissage. Vous n'avez pas besoin d'apprendre des langages de programmation à utiliser. Tout ce que vous devez faire est de savoir exactement ce que vous voulez faire avec les journaux à l'esprit, et lire le pdf qui vient avec l'outil.

Si le journal que vous voulez analyser est dans un format syslog, vous pouvez utiliser une commande comme ceci:

./ NagiosLogMonitor 10.20.40.50: 5444 logrobot autofig/opt/jboss / server.journal de 60m 'INFO' '.'1 2 -afficher

Même si votre journal n'est pas dans un format reconnu, il peut toujours être contrôlée efficacement avec la commande suivante:

./ NagiosLogMonitor 10.20.40.50: 5444 logrobot autonda/opt/jboss / server.journal de 60m 'INFO' '.'1 2 jbosslogs-ndshow

pour analyser un log pour des chaînes spécifiques, remplacez la chaîne 'INFO' par les modèles que vous voulez surveiller dans le log. Si vous voulez rechercher plusieurs patterns, spécifiez-les comme ceci 'INFO|ERROR|fatal'.

si l'efficacité et la simplicité (et l'installation sûre) sont importantes pour vous, cet outil Nagios est la solution.

-2
répondu Nagios Monitoring 2015-12-13 13:57:00