software programas para opciones marketing herramientas gratuitas gratis data big analisis python perl parsing

python - programas - ¿Cuál es la mejor herramienta para analizar los archivos de registro?



programas de big data (9)

Uso grep para analizar mis registros de aplicaciones comerciales, pero está limitado en el sentido de que necesito rastrear visualmente a través de la salida para ver qué sucedió, etc.

Me pregunto si Perl es una mejor opción? ¿Algún buen recurso para aprender el registro y el análisis de cadenas con Perl?

También creo que Python sería bueno para esto. Perl vs Python vs ''grep en linux''?


Al final, realmente depende de cuánta semántica quiera identificar, si sus registros se ajustan a patrones comunes y qué quiere hacer con los datos analizados.

Si puede usar expresiones regulares para encontrar lo que necesita, tiene muchas opciones. Perl es un idioma popular y tiene instalaciones de RE nativas muy convenientes. Personalmente me siento mucho más cómodo con Python y encuentro que la pequeña molestia agregada para hacer RE no es significativa.

Si desea hacer algo más inteligente que la coincidencia de RE, o desea tener mucha lógica, puede sentirse más cómodo con Python o incluso con Java / C ++ / etc. Por ejemplo, es fácil leer línea por línea en Python y luego aplicar varias funciones de predicado y reacciones a las coincidencias, lo cual es excelente si tiene un conjunto de reglas que le gustaría aplicar.


Aprender un lenguaje de programación le permitirá llevar sus habilidades de análisis de registros a otro nivel.

Cualquier lenguaje dinámico o de "scripting" como Perl, Ruby o Python hará el trabajo. Lo que debe usar realmente depende de factores externos. Entre las cosas que debes considerar:

  • ¿El trabajo ya utiliza un lenguaje adecuado?
  • ¿Conoces a alguien que pueda ser tu mentor en un idioma adecuado?
  • Pruebe cada idioma un poco y vea qué idioma le queda mejor.

Personalmente, para la tarea anterior usaría Perl. YMMV.

Varias razones para gustar Perl:

Potentes de una sola línea: si necesita hacer un trabajo realmente rápido y puntual, Perl ofrece algunos atajos realmente buenos. Ver perlrun -n para un ejemplo

Lenguaje de paradigma múltiple: Perl es compatible con metodologías de programación imperativas, funcionales y orientadas a objetos.

Sigils: los caracteres de puntuación iniciales en variables como $foo o @bar . Son un poco como la notación húngara sin ser tan molestos.

Moose: un nuevo e increíble sistema OOP que proporciona nuevas y poderosas técnicas de OO para la composición y reutilización del código.

Estricturas: el use strict pragma use strict detecta muchos errores que otros lenguajes dinámicos ignoran en el momento de la compilación. Lo extraño terriblemente cuando uso Python o PHP.

Autodisciplina: Perl te da la libertad de escribir y hacer lo que quieras, cuando quieras. Esto significa que tienes que aprender a escribir código limpio o te dolerá. Afortunadamente, hay herramientas para ayudar a un principiante. Perl::Critic hace un análisis de código similar a una pelusa para las mejores prácticas.


Considero que esta list invaluable cuando se trata de cualquier trabajo que requiera uno para analizar con python.

No usaría perl para analizar registros grandes / complejos, solo por la legibilidad (la velocidad en perl no es válida para mí (trabajos grandes), pero ese es probablemente mi código de perl (debo mejorar)).

Sin embargo, si grep satisface perfectamente sus necesidades por ahora, realmente no hay razón para atascarse al escribir un analizador completo. La solución más simple suele ser la mejor, y grep es una buena herramienta.


Hay un programa de Perl llamado Log_Analysis que hace mucho análisis y preprocesamiento para usted.


Otra posible interpretación de su pregunta es "¿Hay alguna herramienta que facilite la supervisión del registro?", Y para responder le sugiero que eche un vistazo a Splunk o quizás a Log4view .


Todos los lenguajes de scripting son buenos candidatos: Perl, Python, Ruby, PHP y AWK están bien para esto. Usar cualquiera de estos idiomas es mejor que mirar los registros a partir de un tamaño (pequeño).

Usar Ruby Slippers to Work es un ejemplo de cómo hacerlo en Ruby, escrito en el estilo inimitable de Why. Aquí hay un ejemplo básico en Perl . Le sugiero que elija uno de estos idiomas y comience a descifrar.


Una gran ventaja que Perl tiene sobre Python es que cuando se analiza el texto es la capacidad de usar expresiones regulares directamente como parte de la sintaxis del idioma. Por ejemplo:

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

Perl también asigna grupos de captura directamente a $ 1, $ 2, etc., por lo que es muy fácil trabajar con ellos. Dependiendo del formato y la estructura de los archivos de registro que intenta analizar, esto podría resultar bastante útil (o, si se puede analizar como un archivo de ancho fijo o utilizando técnicas más simples, no es muy útil).

En realidad, todo es simplemente azúcar sintáctica, y otros lenguajes también te permiten usar expresiones regulares y capturar grupos (de hecho, el artículo vinculado muestra cómo hacerlo en Python). Solo tienes que escribir un poco más de código y pasar objetos para hacerlo.


en linux, puede usar solo el shell (bash, ksh, etc.) para analizar los archivos de registro si no son demasiado grandes en tamaño. Las otras herramientas a las que hay que ir son generalmente grep y awk. Sin embargo, para mayor potencia de programación, se suele utilizar awk. Si tiene archivos grandes para analizar, intente awk.

Por supuesto, también se puede usar Perl o Python o prácticamente cualquier otro idioma con capacidades de lectura de archivos y manipulación de cadenas.


intente Nagios Log Monitoring

La razón por la que esta herramienta es la mejor para su propósito es la siguiente:

No requiere instalación de paquetes foráneos. Lo que significa que no es necesario instalar ninguna dependencia de Perl ni ningún paquete tonto que pueda ponerlo nervioso.

Hay poca o ninguna curva de aprendizaje. No necesitas aprender ningún lenguaje de programación para usarlo. Todo lo que necesita hacer es saber exactamente lo que quiere hacer con los registros que tiene en mente y leer el pdf que viene con la herramienta.

Si el registro que desea analizar está en formato syslog, puede usar un comando como este:

./NagiosLogMonitor 10.20.40.50:5444 logrobot autofig /opt/jboss/server.log 60m ''INFO'' ''.'' 1 2 -show

Incluso si su registro no está en un formato reconocido, aún puede ser monitoreado eficientemente con el siguiente comando:

./NagiosLogMonitor 10.20.40.50:5444 logrobot autonda /opt/jboss/server.log 60m ''INFO'' ''.'' 1 2 jbosslogs - yshow

Para analizar un registro para cadenas específicas, reemplace la cadena ''INFO'' con los patrones que desea observar en el registro. Si desea buscar varios patrones, especifíquelos así: ''INFO | ERROR | fatal''.

Si la eficiencia y la simplicidad (y las instalaciones seguras) son importantes para usted, esta herramienta de Nagios es el camino a seguir.