Ir al contenido principal

Búsqueda de cadenas en archivos de texto.

Cuando los incidentes surgen en las aplicaciones que generan demasiados logs, es necesario el filtrado por horas y eventos. Hay muchas formas de llegar a un mismo cometido, básicamente, depende de la habilidad de cada persona, además de su experiencia, y el conocimiento de los mensajes de alertas.

En lo personal, siempre he buscado hacer las busquedas de más de una forma, porque para cada caso, y conforme se avance en las necesidades, una resultará más flexible que la otra.

La primer fase de un filtrado es intuir, buscar los mensajes comunes y palabras que acompañan los problemas de forma genérica, por ejemplo, si se trata de un servidor de aplicaciones sería prudente buscar palabras como : SEVERE, Exception, ERROR, Timeout, 'Could not'. Si se tratase de un web server, la búsqueda es más simple, ya que podemos filtrar por los estatados de http.

A continuación, expongo dos comandos que sirven para la búsqueda de un patrón dentro de cada archivo que coincida con el criterio dado.

Primer sentencia

find / -name "*" | xargs grep 'cadena'

/ -> Parte de raíz. Este parámetro debe reducirle en lo posible, es decir, hacer las búsquedas desde donde estamos seguros puede estar, así hacemos eficiente, y rápida la búsqueda.

"*" -> Significa que busque en todos los archivos. Igualmente podemos cerrarlo, ya sea por la extensión o el nombre concreto dentro de los cuales vamos a buscar.

xargs -> Permite ejecutar otros comandos, con la salida del domando anterior, de forma individual, es decir, por archivo.

Este comando lo utilizo cuando es muy abierta la búsqueda, podría estar en muchos logs el mensaje que busco, ya que hay interacción entre componentes, por ejemplo.


Segunda sentencia


grep --text 'cadena' /ruta/igual-?/logs/* 


Lo uso mucho cuando estoy buscando mensajes en instancias de un cluster de servidor de aplicaciones, por lo normal, los nombres y rutas son casi idénticos, varían una o dos letras. Una variación del comando anterior puede ser:

grep --color=always -i 'cadena' ruta?/logs/file.log


--color= always -> resalta la cadena buscada con un color diferente al demás texto, es únicamente para hacer notar la coincidencia. Útil cuando la cadena aparece en líneas de texto muy grandes y complicadas de discernir. 

-i -> Significa que no importa si la cadena que buscamos esté con mayúsculas o minúsculas, lo tomará igualmente.

ruta? -> el signo '?' es una expresión que significa 'cualquier carácter', es decir, si deseamos buscar en las siguientes rutas, igualmente funcionaría.

ruta1/logs/file.log
rutaa/logs/file.log
ruta3/logs/file.log


Con esto cierro el post, espero les resulte útil a todos aquellos que comienzan con el mundo del buceo en logs.







Comentarios

Entradas populares de este blog

Ángulo de Corte

El armar un gallo de pulgada es una de las cosas más sujeta a mitos y medias verdades. Este es uno de los muchos temas que los galleros enuncian con una seguridad a prueba de balas.  Hasta el momento no he leído un solo escrito o esquema con detalle científico que tenga conclusiones claras y precisas de lo que sucede en un combate ni la ergonomía que mejor se adapta, todo proviene de un sistema de creencias que, muy en lo personal, me cuesta creer. El ángulo de corte se refiere a la posición de la punta de la navaja con respecto al codo de la pata. Dependiendo del amarrado es que la sitúa en un rango de los 5° a los 9°. De lo que no dudo es que no hay una manera precisa de emitir teorema alguno sobre este rubro. La formula del corte está dada por la sujeción de la navaja, la forma de la navaja, la altura de la botana, la posición de disparo del gallo, así como la calidad y aprendizaje del mismo durante el desarrollo de la pelea. Son muchas las variables, sin emba...

Análisis de conexiones TIME_WAIT

El tema de las conexiones mal utilizadas es un dolor de cabeza para muchos administradores de servidores de aplicaciones. Es común que las aplicaciones que mantenemos en nuestro resguardo sufran degradación, e incluso fallos, por el "simple" hecho de no cerrar las conexiones o tardar demasiado en hacerlo (vía sistema operativo). Como sabemos, una conexión pasa por varios estados, mismos que salen de la intención de este escrito. Las conexiones establecidas (ESTABLISHED) son demasiado costosas cuando abren y cierran, debido a eso, se han creado manejadores de conexiones (pooles) que mantienen abiertas las conexiones para reutilizarlas dependiendo la demanda. Es por eso, que en medida de lo posible, hay que utilizar un manejador de conexiones, ya sea a base de datos o algún broker. Entrando de lleno al tema, las conexiones en estado TIME_WAIT son un problema por el consumo de memoria, ocupando cada una 64k de memoria no paginable, es decir,  todo el tiempo se mantiene...

Los tres enamorados miedosos

Finally we have finished to scan some stories about myths and legends that our ancesters transferred to children. These explain in some cases the world inception like " Creación del mundo " and many others stories that use animals to mirror they reality and your historical context. For download the pdf click in below link. download