La administración de logs engloba todos los procesos relacionados con el manejo de los datos de logs e incluye la generación, la agregación, el almacenamiento, el análisis, el archivo y la eliminación de los logs. Un sistema de administración de logs debe registrar todo lo que pasa en una aplicación, una red o un servidor, se trate de un error, una solicitud HTTP o cualquier otra cosa. Luego, esos datos de logs se pueden utilizar para la resolución de problemas y el análisis. Las aplicaciones modernas tienen millones o incluso miles de millones de eventos provenientes de distintos servicios todos los días, lo que puede complicar la administración y, peor aún, la obtención de información práctica de los incidentes. Por ese motivo, la administración de logs es una parte esencial de DevOps, la observabilidad y las prácticas de TI.

¿Qué es un log?

Un log es un registro fechado y generado por computadora de un evento o acción distinto y específico. Casi todo en los sistemas de software modernos puede producir datos de logs y la mejor práctica es asegurarte de que tú también lo hagas. Algunos datos que normalmente se incluyen en los logs son, por ejemplo, las llamadas a funciones, los errores, las solicitudes HTTP y las transacciones de bases de datos, aunque puede haber muchos otros. Los logs proporcionan descripciones detalladas de las acciones a medida que ocurren.

¿Por qué son importantes los logs?

Los logs son un registro de todo lo que ocurre en la aplicación, la red o el servidor. Proporcionan una base para el monitoreo de aplicaciones, el rastreo de errores y los informes de errores, lo que los convierte en una parte esencial de la observabilidad. Nada de eso sería posible sin los datos de logs.

Hay cuatro tipos de datos de telemetría que se utilizan en la observabilidad y el monitoreo. Puedes usar el acrónimo MELT para acordarte.

  • Las métricas se basan en los datos de logs agregados y proporcionan información sobre el rendimiento de tu aplicación. Las herramientas como New Relic generan algunas métricas automáticamente, pero puedes personalizar otras métricas según tus necesidades.
  • Los eventos describen cosas que ocurren en una aplicación. Constan de varias líneas de datos de logs Los eventos ocupan más espacio de almacenamiento que los logs, por lo que no suelen guardarse en almacenamiento por tanto tiempo como los logs.
  • Los logs son mucho más detallados que los eventos y describen cada paso que ocurre en una aplicación.
  • Las trazas utilizan spans para conectar los eventos, lo que permite hacer seguimiento de la causa raíz de un problema y solucionarlo.
Caso de estudio
Historia de cliente de New Relic: Virtuo
Entérate de cómo los clientes de New Relic usaron logs para resolver incidentes en tiempo récord
Caso de estudio de Virtuo Caso de estudio de Virtuo

Los cuatro tipos de datos de telemetría tienen los logs en común. Sin los logs, no habría MELT y no podrías observar lo que está ocurriendo en tu aplicación. En lugar de poder monitorear proactivamente tus datos en busca de problemas, te enterarías de los problemas a través de los usuarios finales y tendrías que ser reactivo en lugar de proactivo a la hora de resolver los problemas. Pero esto ni siquiera sería lo peor: una vez que te enteres de que hay un problema, sería muy difícil solucionarlo sin los logs porque no tendrías ningún registro de los errores en tu aplicación. ¿Y cuál sería, entonces, el resultado final? Usuarios descontentos, ingenieros estresados, clientes frustrados y, muy probablemente, un producto que no tiene éxito.

Los logs también proporcionan otra ventaja importante: suelen ser muy pequeños. Por ese motivo, son mucho más fáciles de transmitir y almacenar que muchos otros tipos de datos, como los eventos.

Con New Relic, puedes ver todos tus logs en un solo lugar.

¿Por qué es importante la administración de logs?

No basta con simplemente configurar una aplicación para que emita datos de logs. Probablemente hayas oído hablar del siguiente ejercicio mental filosófico: “Si un árbol se cae en el bosque y no hay nadie cerca para escucharlo, ¿hace ruido?”. En el caso de los datos de logs, si se generan datos pero no se recopilan y almacenan correctamente, esa información se pierde. Los datos de logs se tienen que enviar a algún lugar, preferiblemente a una ubicación centralizada donde se puedan analizar y recuperar debidamente y cuando sea necesario, en contexto con los datos de otros servicios. 

Sin embargo, la recopilación de datos centralizada es solo un paso del proceso de administración de logs. La administración de logs implica encargarse de todas las partes del ciclo de vida de los logs, desde el momento en que se emiten hasta que se archivan o eliminan.

Muchas aplicaciones modernas incluyen microservicios, sistemas distribuidos y servicios basados en la nube, y cada parte del sistema emite sus propios datos de logs. Por ejemplo, digamos que necesitas saber qué solicitudes HTTP tienen el tiempo de respuesta promedio más largo en tu aplicación. Si tu aplicación es distribuida, varios de los servicios podrían estar haciendo solicitudes HTTP y solo podrás compararlos si los datos de logs están disponibles en un solo lugar. Para eso es útil contar con una buena administración de logs.

Una buena administración de logs te permite:

  • Reducir el cambio de contexto: si almacenas tus datos en un solo lugar, ya no será necesario cambiar de herramientas y contextos. Si tus datos de logs están almacenados en distintos lugares, es probable que tengas que buscar en varias ubicaciones y herramientas para poder resolver un problema.
  • Detectar y corregir los problemas más rápido: una solución de administración de logs te permite recuperar, analizar y visualizar enseguida los datos de logs en contexto, para poder identificar y eliminar los problemas rápidamente antes de que afecten a los usuarios.
  • Busca inmediatamente en los logs los datos que necesitas: una buena solución de logs ofrece toda la funcionalidad de búsqueda necesaria para analizar los logs y obtener los datos que necesitas con rapidez.
  • Visualizar todos tus datos en un solo lugar: con los datos de logs centralizados, puedes utilizar MELT para crear visualizaciones y dashboards personalizados que te den información general de alto nivel sobre el rendimiento de tu aplicación.

Entonces, ¿qué funciones necesitas para asegurarte de tener todas estas ventajas? Veamos.

¿Qué funciones debe incluir tu solución de administración de logs?

Podrás aprovechar al máximo tus herramientas de administración de logs si incluyen las siguientes funciones. 

  • Instrumentación flexible y completa: para poder recopilar todos tus datos de logs en un solo lugar, tu aplicación tiene que estar instrumentada. La instrumentación es el proceso de instalar agentes que hagan seguimiento de los datos que fluyen por tu aplicación. Piensa en una aplicación que tenga varios servicios en la nube, además de las API de Java, Rails y .NET, y que utilice principalmente React y JavaScript en el front-end. Cada uno de estos servicios tiene que estar instrumentado, y tu herramienta de administración de logs debe tener agentes disponibles para la mayor cantidad posible de servicios y lenguajes de programación diferentes, de modo que puedas disfrutar de una cobertura completa de todos tus servicios. Aunque siempre puedes optar por no instrumentar parte de tu aplicación (por ejemplo, los datos confidenciales), los servicios que no estén instrumentados dejarán huecos en tus datos de logs.
  • Compatibilidad con el reenvío de logs: si no se puede instrumentar un servicio, tendrás que reenviar tus logs. Tu herramienta de administración de logs debería poder encargarse del reenvío de logs. 
  • Capacidades avanzadas de consulta: si se produce un error, tienes que poder acceder a tus logs inmediatamente. Por eso es importante que tu solución de administración de logs sea capaz de consultar los datos de manera rápida y eficiente. Por ejemplo, New Relic utiliza NRQL (New Relic Query Language), que ofrece una amplia gama de consultas flexibles para que los usuarios puedan obtener los datos que necesitan.
  • Almacenamiento de datos seguro: la seguridad de los datos de logs confidenciales es un aspecto fundamental, sobre todo para las aplicaciones que necesitan un alto nivel de cumplimiento, como el exigido por HIPAA (una norma para la protección de los registros médicos y de salud).