Geekflare recibe el apoyo de nuestra audiencia. Podemos ganar comisiones de afiliación de los enlaces de compra en este sitio.
En Desarrollo Última actualización: 14 de septiembre de 2023
Compartir en:
Escáner de seguridad de aplicaciones web Invicti - la única solución que ofrece verificación automática de vulnerabilidades con Proof-Based Scanning™.

La diferencia entre productos mediocres y grandes productos es la tala de árboles. Aprende por qué es así y cómo unirlo todo.

Al igual que la seguridad, el registro es otro componente clave de las aplicaciones web (o de las aplicaciones en general) que se deja de lado debido a viejos hábitos y a la incapacidad de ver el futuro. Lo que muchos ven como resmas inútiles de cinta digital son poderosas herramientas para mirar dentro de sus aplicaciones, corregir errores, mejorar las áreas débiles y deleitar a los clientes.

Antes de pasar al registro centralizado, veamos por qué es tan importante.

Dos tipos (niveles) de registro

Los ordenadores son sistemas deterministas, excepto cuando no lo son.

Como desarrollador profesionalMe he encontrado con muchos casos en los que el comportamiento observado de la aplicación desconcertaba a todo el mundo durante días y días, pero la clave siempre estaba en los registros. Cada pieza de software que ejecutamos produce (o al menos debería generar) registros, que nos dicen lo que estaba pasando cuando se produjo la situación problemática.

Ahora bien, la tala, tal y como yo la veo, es de dos tipos: autogenerado registros y generado por el programador troncos. Por favor, ten en cuenta que esto no es ninguna diferenciación de libro de texto, y citarme en esta terminología te traerá problemas 😉.

La imagen de arriba muestra lo que puede denominarse un registro autogenerado.

En este caso concreto, se trata de un sistema WordPress que registra una condición inesperada (un Aviso) al ejecutar algún código PHP. Los registros de este tipo se generan todo el tiempo sin descanso - por herramientas de base de datos como MySQL, servidores web como Apache, lenguajes de programación y entornos, dispositivos móviles e incluso sistemas operativos.

Rara vez contienen mucho valor, y los programadores ni siquiera se molestan en mirarlos, excepto cuando algo va mal. En esos momentos, indagan a fondo en los registros, tratando de entender qué ha fallado.

Pero los registros generados automáticamente sólo pueden ayudar hasta cierto punto. Si varias personas tienen acceso de administrador a un sitio, por ejemplo, y una de ellas borra una información esencial, es imposible detectar al culpable con el uso de registros autogenerados. Desde el punto de vista de los sistemas vinculados como la aplicación, se trataba de un día más de trabajo: alguien tenía la autoridad necesaria para ejecutar una tarea y el sistema la llevó a cabo.

Lo que se necesita aquí es una capa adicional de registro explícito y extenso que cree senderos para el lado humano de las cosas. Es lo que yo llamo registros generados por el programadory constituyen la columna vertebral de industrias sensibles como la banca. He aquí un ejemplo de lo que podría ser un esquema de registro de este tipo:

Fuente: joomlatools.com

El registro es poder

Así que, teniendo en cuenta estos dos tipos de registros en un sistema, he aquí cómo puede aprovecharlos y aumentar su impacto.

Adelantarse al cliente

"Satisfacer al cliente" ha llegado a ser conocido como un truco de marketing inútil, pero gracias al registro, puede hacerse muy real. Conozco productos digitales que vigilan sus registros como un halcón y, en cuanto un cliente rompe algo en la página, pueden llamarle y ofrecerle ayuda.

Piénsalo: a los pocos segundos de recibir un feo errorRecibes una llamada de la empresa que te dice: "Hola, tengo entendido que estabas intentando añadir este artículo al carrito, pero se moría. ¿Te parece bien que lo añada esta vez y complete el pedido por ti?".

¿Un cliente encantado? Por supuesto.

Moral y productividad del equipo

Como he dicho antes, cuando los errores permanecen sin seguimiento durante mucho tiempo, los desarrolladores de tu equipo se frustran y pierden cada vez más tiempo persiguiéndose el rabo. Y esto es lo que ocurre con depuración - requiere una mente fresca y curiosa desde el principio. Si se te pasa por la cabeza una idea de WTF, todo el proceso se va al garete.

¿Y qué dificulta la depuración? En mi experiencia, la falta de logging, o la falta de conocimiento del logging. Para empezar, puede que no te des cuenta de que tu base de datos favorita es también otra pieza de software que genera logs, o que no estés registrando extensivamente en tu aplicación (ver registros generados por el programador más arriba).

Recuerdo especialmente un caso en el que la aplicación dejaba de responder y nadie sabía por qué. Unos días más tarde, el culpable era el límite de E/S del disco alcanzado debido a un tráfico excesivo. Como nadie se molestó en mirar ahí, nadie pudo averiguar por qué.

Registros de auditoría

¿Y si dentro de dos años su cliente le dice que todos esos pedidos no los hizo él, sino otra persona? hacker?

¿Qué argumento tendría para aceptar o rechazar su solicitud? Si dispone de un registro exhaustivo (dirección IP, fecha y hora, tarjeta de crédito, etc.), podrá analizarlo todo y tomar una decisión. Buena o mala, al menos tendrá alguna base objetiva, en lugar de parecerse a un tiro en la oscuridad.

Fuente: signature-reads.com

Lo mismo ocurre si se encuentra bajo algún prisma normativo o si debe someterse a una auditoría de terceros en el marco de un nuevo proyecto importante. No disponer de un sistema de registro sólido le dejará en mal lugar.

Mejorar los sistemas existentes

¿Cómo mejorar el sistema actual?

¿Hay que limitarse a aumentar la RAM y los subprocesos de la CPU? ¿Y si tu aplicación es lenta a pesar de disponer de recursos suficientes? ¿Dónde está el cuello de botella? En la mayoría de los casos, la respuesta está en el registro.

Por ejemplo, los principales sistemas de bases de datos disponen de una función para registrar consultas lentas.

Fuente: speedawarenessmonth.com

Si visitas el registro de consultas lentas con regularidad, sabrás qué operaciones son las que llevan más tiempo y, por tanto, descubrirás pequeñas pero importantes áreas que necesitan trabajo. A menudo, un pequeño cambio como éste funciona mejor que duplicar la capacidad del hardware.

No se puede contar de cuántas maneras le ayuda un buen sistema de registro. Quizá el mejor argumento sea que se trata de una actividad automatizada que, una vez configurada, no necesita ningún tipo de supervisión, y que algún día te salvará de la ruina.

Una vez aclarado esto, veamos algunos de los increíbles recopiladores de registros de código abierto (herramientas de registro unificadas) que existen. En caso de que te lo estés preguntando, cubrimos las herramientas comerciales de registro basadas en la nube en un entrada anterior.

Graylog

Graylog es uno de los principales nombres del sector en lo que se refiere a capacidades de registro y visualización de nivel industrial. También es único porque analiza los registros recopilados en busca de vulnerabilidades de seguridad y te avisa al instante.

Aunque Graylog es un sistema de registro centralizado, tiene la flexibilidad que necesitas, ya que te permite personalizar alertas, paneles y mucho más.

Graylog es de código abierto, pero existe un plan para empresas si tus necesidades son complejas.

Con clientes como SAP, Cisco y LinkedIn en su lista, Graylog es una herramienta en la que puedes confiar con los ojos cerrados.

Logstash

Si eres fan o usuario de la pila Elastic, Logstash (la pila ELK ya existe, por si no lo sabías). Al igual que otras herramientas de registro de esta lista, Logstash es totalmente de código abierto, lo que le permite la libertad de implementar y utilizar como desee.

Pero no se deje engañar: Logstash es una nave nodriza con capacidades que superan con creces a cualquier humilde herramienta de registro. Es capaz de recopilar grandes cantidades de datos de múltiples plataformas, te permite definir y ejecutar tus propias canalizaciones de datos, dar sentido a los volcados de registro no estructurados y mucho más.

Por supuesto, la única limitación es que sólo funciona con la suite de productos Elastic, pero si estás empezando y quieres escalar pronto, Logstash es el camino a seguir.

Fluentd

Entre las herramientas de registro centralizadas que funcionan como capa intermedia para la ingestión de datos, Flutend es el primero entre iguales. Con una excelente biblioteca de plugins, Fluentd es capaz de capturar datos de prácticamente cualquier sistema de producción, amasarlos en la estructura deseada, construir un pipeline personalizado y alimentar su plataforma de análisis favorita, ya sea MongoDB o Elasticsearch.

Fluentd está construido sobre Ruby, es totalmente código abiertoy es muy popular por su flexibilidad y modularidad.

Con grandes empresas como Microsoft, Atlassian y Twilio utilizando la plataforma, Fluentd no tiene nada que demostrar 🙂 .

Canal

Si su reto son los conjuntos de datos muy, muy grandes, y con el tiempo quiere introducir todo en algo como Hadoop, Canal es una de las mejores opciones. Es un proyecto de código abierto "puro", en el sentido de que lo mantiene nuestra querida Fundación Apache, lo que significa que no existe un plan para empresas.

Esto puede ser o no lo que buscas exactamente 🙂 .

Fuente: beyondcoder.com

Escrito en Java (que sigue asombrándome cuando se trata de tecnología innovadora), el código fuente de Flume es totalmente abra. Flume es lo mejor para ti si buscas una plataforma de ingestión de datos distribuida y tolerante a fallos para cosas pesadas.

Octopussy

Le doy cero sobre diez a la denominación del producto, pero Octopussy puede ser una buena opción si sus necesidades son sencillas y se pregunta de qué va todo el alboroto relacionado con las canalizaciones, la ingestión, la agregación, etc.

En mi opinión, Octopussy cubre las necesidades de la mayoría de los productos que existen (las estadísticas estimadas son inútiles, pero si tuviera que adivinar, diría que cubre 80% de los casos de uso en el mundo real).

Octopussy no tiene una gran interfaz de usuario en absoluto, pero lo compensa en cuanto a velocidad y ausencia de bloat. El código fuente está disponible en GitHubComo era de esperar, creo que merece la pena echarle un vistazo.

Rsyslog

Rsyslog es sinónimo de un sistema rapidísimo de procesamiento de registros.

Es una utilidad para sistemas operativos tipo Unix. En términos técnicos, es un enrutador de mensajes con entradas y salidas cargables dinámicamente y altamente configurable.

Puede tomar datos de múltiples fuentes, transformarlos y enviarlos a varios destinos. Con Rsyslog, puede enviar 1 millón de mensajes por segundo a través de destinos locales.

fuentes rsyslog

Rsyslog también proporciona un Agente de Windows que trabaja en estrecha colaboración con el agente Rsyslog Linux. Se utiliza para la integración entre los dos entornos. Este agente de windows se utiliza para reenviar los registros de eventos de windows y configurar el servicio de monitorización de archivos.

A continuación se indican otras funciones que ofrece Rsyslog:

  • Configuraciones flexibles
  • Capacidad multihilo
  • Protección contra la manipulación de archivos de registro mediante firmas de registro y cifrado.
  • Compatible con plataformas de Big Data
  • Ofrece funciones de filtrado basadas en el contenido

Grafana Loki

Inspirado por Prometeo, Grafana Loki es una solución de agregación de registros multiusuario.

La solución Loki es rentable, solo indexa metadatos y se puede conectar a un sistema popular como Kubernetes, Prometheus, Linux, SQL, etc. Puede consultar este guía de iniciación para instalarlo y ver por ti mismo cómo funciona.

Logwatch

Estoy seguro de que hay algunos entre nosotros que no quieren toda la ceremonia asociada a un sistema de registro "unificado" y "centralizado". Su negocio proviene de servidores individuales, y están buscando algo rápido y eficiente para ver sus archivos de registro. Pues bien, salude a Logwatch.

Una vez instalado, LogWatch puede escanear los registros de tu sistema y crear un informe del tipo que desees. Sin embargo, es un software algo anticuado (léase "fiable") y está escrito en Perl. Así que necesitarás Perl 5.6+ en tu servidor para ejecutarlo. No tengo capturas de pantalla para compartir, ya que es puramente una línea de comandos, proceso demonio.

Si eres un adicto a la CLI y te gusta la forma de hacer las cosas de la vieja escuela, ¡te encantará Logwatch!

Syslog-ng

En Syslog-ng se desarrolló como una forma de procesar archivos de datos Syslog (un protocolo cliente-servidor establecido para el registro de sistemas) en tiempo real. Con el tiempo, sin embargo, ha llegado a soportar otros formatos de datos: no estructurados, SQL y NoSQL. El funcionamiento del protocolo Syslog se resume en la siguiente ilustración.

syslog-ng es una herramienta de clasificación y recopilación de registros fiable y de nivel de producción que se escribió en C y ha sido un nombre establecido en la industria durante mucho tiempo. La mejor parte es su extensibilidad, lo que le permite escribir plugins en C, Python, Java, Lua o Perl.

lnav

Abreviatura de (Log Navigator), lnav es una herramienta puramente terminal que funciona en una sola máquina, un solo directorio. Es para aquellos que tienen su registro unificado en un solo directorio o quieren filtrar y mostrar registros en tiempo real de una sola fuente.

Si pensabas que lnav no era más que un glorificado tailf |grep te equivocarías. Hay varias características que harán que te enamores de él: vista de series temporales, impresión bonita (para JSON y otros formatos), fuentes de registro codificadas por colores, potentes filtros, capacidad de entender varios protocolos de registro y mucho más.

A veces, lo que se busca es una capa de registro temporal, sin complicaciones ni configuraciones, y lnav encaja a la perfección.

Conclusión

¡Y ahí lo tienes!

Ha sido una lista difícil de confeccionar, la verdad, porque el registro no es tan popular como, por ejemplo, la gestión de contenidos, y parece que tres o cuatro herramientas han acaparado toda la atención. Aun así, las necesidades de cada uno son diferentes y he intentado cubrirlas ampliamente.

Desde sencillas herramientas de línea de comandos sin necesidad de configuración hasta auténticos monstruos de los datos, ¡todo está aquí!

A continuación, explore algunos de los mejores software de elaboración de perfiles para optimizar la aplicación.

  • Ankush
    Autor
Gracias a nuestros patrocinadores
Más lecturas sobre desarrollo
Potencia tu negocio
Algunas de las herramientas y servicios que le ayudarán a hacer crecer su negocio.
  • Invicti utiliza el Proof-Based Scanning™ para verificar automáticamente las vulnerabilidades identificadas y generar resultados procesables en tan solo unas horas.
    Pruebe Invicti
  • Web scraping, proxy residencial, gestor de proxy, desbloqueador web, rastreador de motores de búsqueda, y todo lo que necesita para recopilar datos web.
    Pruebe Brightdata
  • Monday.com es un sistema operativo de trabajo todo en uno que te ayuda a gestionar proyectos, tareas, trabajo, ventas, CRM, operaciones, flujos de trabajo y mucho más.
    Prueba el lunes
  • Intruder es un escáner de vulnerabilidades en línea que encuentra puntos débiles de ciberseguridad en su infraestructura, para evitar costosas violaciones de datos.
    Prueba Intruder