Skip to main content

Parsear logs

Muchas veces los logs son inmensos y no hay forma de ver nada en ellos, por lo que usando determinadas herramientas podemos localizar lo que buscamos en los mismos

grep

GREP te permite ejecutar patrones de búsqueda en archivos. La sintaxis es muy sencilla

grep '<texto-buscado>' <archivo/archivos>

Ten en cuenta que las comillas simples o dobles son imperativas alrededor del texto si es más de una palabra.

Puedes usar el comodín (*) para seleccionar todos los archivos en un directorio.

Ejemplo:

grep 'etaboada' maillog
Aug 13 07:30:53 vserver01016 XXXXXXX to=<etaboada@ateinco.net>
Aug 13 07:31:14 vserver01016 XXXXXXX to=<etaboada@ateinco.net>
Aug 13 08:54:11 vserver01016 xxxx-sendmail[11611]: S11611: from=<xxxxx> to=<etaboada@ateinco.net>
Aug 13 08:54:32 vserver01016 postfix/smtp[11622]: 505C0F217A9: to=<etaboada@ateinco.net> delay=21, delays=0.05/0.01/0.11/21, dsn=2.0.0, status=sent (250 OK id=1oMl2B-0003V5-2x)
Aug 13 09:00:01 vserver01016 xxxx-sendmail[12317]: S12317: from=<xxxxx@ateinco.net> to=<etaboada@ateinco.net>
Aug 13 09:00:22 vserver01016 postfix/smtp[12328]: 4C3A2F217A9: to=<etaboada@ateinco.net>, delay=21, delays=0.07/0.02/0.17/20, dsn=2.0.0, status=sent (250 OK id=1oMl7q-0003of-22)

Zgrep

Funciona igual que grep, pero con la diferencia que permite buscar en archivos comprimidos

modificadores de grep

-n (--line-number) 

enumera los números de línea, es decir imprime las coincidencias de un texto junto con los números de línea

grep 'etaboada' maillog -n
1492:Aug 13 07:30:53 vserver01016 XXXXXXX to=<etaboada@ateinco.net>
1514:Aug 13 07:31:14 vserver01016 XXXXXXX to=<etaboada@ateinco.net>
3646:Aug 13 08:54:11 vserver01016 xxxx-sendmail[11611]: S11611: from=<xxxxx> to=<etaboada@ateinco.net>
3654:Aug 13 08:54:32 vserver01016 postfix/smtp[11622]: 505C0F217A9: to=<etaboada@ateinco.net> delay=21, delays=0.05/0.01/0.11/21, dsn=2.0.0, status=sent (250 OK id=1oMl2B-0003V5-2x)
3804:Aug 13 09:00:01 vserver01016 xxxx-sendmail[12317]: S12317: from=<xxxxx@ateinco.net> to=<etaboada@ateinco.net>
3815:Aug 13 09:00:22 vserver01016 postfix/smtp[12328]: 4C3A2F217A9: to=<etaboada@ateinco.net>, delay=21, delays=0.07/0.02/0.17/20, dsn=2.0.0, status=sent (250 OK id=1oMl7q-0003of-22)
-c (--count)

imprime el número de líneas de coincidencias

root@vserver:/var/log# grep 'etaboada' maillog -c
7
-i (--ignore-case)

Utilizado para la ignorar la distinción entre mayúsculas y minúsculas

l (--files-with-matches)

imprimir nombres de archivos que coincidan con un patrón

-o (--only-matching)

imprimir solo el patrón coincidente

-A (--after-context) y -B (--before-context) 

Imprimir las líneas después y antes (respectivamente) del patrón coincidente

-R (--dereference-recursive)

Búsqueda recursiva.

Por defecto, grep no busca en directorios. Si tú intentas hacerlo, obtendrás un error ("Es un directorio"). Con la opción  -R, se realiza la búsqueda de archivos entre directorios y subdirectorios 

^pattern Inicio de línea

Este patrón significa que grep solo coincide con cadenas cuyas líneas empiecen con la cadena especificada en pattern

pattern$ fin de la línea

Este patrón significa que grep solo coincide con cadenas cuyas líneas finalizan con la cadena especificada en pattern