Contenido del curso

Agente de Infraestructura

Cómo convertir logs no estructurados con Grok

Resumen

Convertir logs no estructurados en datos estructurados con New Relic te permite extraer pares clave-valor desde texto plano y consultarlos como si siempre hubieran tenido formato JSON. Si trabajas con observabilidad o analizas registros de servidores, esta técnica te ahorra horas de trabajo manual y te abre la puerta a dashboards y alertas más precisas.

La clave está en usar reglas de parsing con patrones Grok, una sintaxis que reconoce estructuras dentro de cadenas de texto y las transforma en campos consultables. Vamos paso a paso.

¿Qué son los logs no estructurados y por qué cuesta analizarlos?

Muchos sistemas envían registros como texto plano, sin pares clave-valor evidentes. Imagina una línea con IP, fecha, método HTTP y código de respuesta, todo concatenado. Para una persona es legible, pero para hacer queries necesitas separar cada pieza.

Los logs estructurados, en cambio, ya vienen como JSON con campos claros. Eso facilita filtrar, agrupar y graficar.

¿Qué es un log no estructurado? Es un mensaje de registro en texto plano sin pares clave-valor definidos. Para consultarlo necesitas aplicar reglas de parsing que extraigan sus partes.

¿Cómo enviar logs de prueba a New Relic desde un script?

En la carpeta de logs del curso encontrarás una demo llamada logging-unstructured-log-demo.py. Antes de ejecutarla, abre el archivo y reemplaza la línea seis con tu clave de licencia personal de New Relic [01:05].

Después, corre el script con envío continuo cada 15 segundos:

bash node logging-unstructured-log-demo.py --continuous --interval 15

Déjalo correr alrededor de un minuto para tener volumen suficiente de datos. Con eso ya puedes ir a la interfaz de Logs en New Relic.

¿Cómo filtrar los logs no estructurados en la UI?

En la barra de búsqueda usa el par clave-valor source con comparación exacta a space-rover-log-parsing-demo [02:15]. Vas a ver registros con timestamp, source y un campo message con el texto crudo.

Para enfocarte en logs de servidor web tipo Apache, agrega un filtro message contains "http/1.1" [02:55]. Esos son los que te interesan para el ejercicio.

¿Cómo crear una regla de parsing con Grok en New Relic?

New Relic usa Grok, un motor de patrones para extraer valores desde texto. No tiene relación con Grok de X; aquí Grok funciona como un sistema de matching que recorre la cadena y crea pares clave-valor a partir de cada segmento reconocido.

Desde la interfaz de Logs, ve a la sección de Parsing y crea una nueva regla [03:50]. Configúrala así:

  • Nombre: registros de servidor web estilo Apache.
  • Campo a analizar: message.
  • Filtro NRQL con source = 'space-rover-log-parsing-demo' y message LIKE '%http/1.1%'.
  • Selecciona un log de muestra que coincida con la consulta.

¿Cómo se construye un patrón Grok paso a paso?

Grok recorre el mensaje y le asigna un nombre a cada parte que extrae. Por ejemplo, la primera sección de un log de Apache es una dirección IP: con la cláusula correspondiente la nombras client_ip y aparece como campo en la UI [04:40].

Las partes que no te sirven, como guiones intermedios, simplemente no las extraes. Lo demás se mapea así:

  • timestamp para la marca de tiempo.
  • http_method para GET, POST, etc.
  • request_uri para la ruta solicitada.
  • http_version para la versión del protocolo.
  • response_code para el status.
  • referer para el origen de la petición.

Al previsualizar la regla, ves abajo los pares clave-valor que Grok extrajo. Si todo coincide con lo esperado, guarda y habilita la regla.

¿Qué es Grok en logs? Es un lenguaje de patrones que detecta estructuras dentro de texto plano y las convierte en campos nombrados. Cada identificador Grok representa un tipo de dato como IP, fecha o número.

¿Cómo verificar que la regla de parsing funciona?

Vuelve a la vista de All Logs con el mismo filtro y abre cualquier registro coincidente. El campo message original sigue intacto, pero ahora ves nuevos campos extraídos: client_ip, http_method, response_code y los demás [06:30].

Prueba una consulta concreta: filtra por http_method = 'POST'. Solo te devolverá los logs estilo Apache que sean POST, perfectamente estructurados.

¿Para qué sirve una regla de parsing? Para transformar texto plano repetitivo en campos consultables. Una vez activa, se aplica automáticamente a todo log que coincida con su filtro.

¿Cómo practicar parsing con otros formatos de log?

El mismo script de demo incluye varios formatos adicionales: algunos tan simples como timestamp más mensaje, y otros más complejos. Empieza por los básicos y escala en dificultad.

En la sección de recursos del curso tienes una guía de patrones Grok con los identificadores disponibles y ejemplos de configuración. Si te trabas, la documentación de New Relic sobre log parsing y los foros oficiales son tu mejor aliado.

¿Qué formato de log te está costando más estructurar? Cuéntalo en los comentarios y compartamos patrones Grok que funcionen.