9 mejores prácticas de logging basadas en la experiencia

Logging o no Logging ya no es la cuestión, sino cómo y qué registrar se ha convertido en el área de enfoque para las operaciones de TI que buscan mejorar constantemente el rendimiento de la aplicación. Hemos recopilado algunas prácticas recomendadas que le ayudarán a «hacer logging de manera más inteligente» y a ahorrarle tiempo y recursos invaluables al rastrear un problema.

# 1 CONOZCA SUS AUDIENCIAS

Cuando se trata de registros, lo primero que hay que entender es que los registros de su aplicación tienen dos audiencias muy diferentes: humanos y máquinas.

Las máquinas son buenas para procesar grandes cantidades de datos estructurados de forma rápida y automática.

Los humanos, por otro lado, no son tan buenos para procesar grandes cantidades de datos, y nos lleva tiempo leer los registros. Por otro lado, los humanos manejan bien los datos no estructurados.

Para aprovechar al máximo sus registros, debe hacer que sus registros sean legibles para humanos y estructurados para máquinas.

# 2 TENER UNA ESTRUCTURA CONSISTENTE EN TODOS LOS REGISTROS

Un requisito previo para un buen logging es tener una estructura estándar de su archivo de registro, que sea coherente en todos los archivos de registro.

Cada línea de registro debe representar un evento único y contener al menos la marca de tiempo, el nombre de host, el servicio y el nombre del registrador.Los valores adicionales pueden ser el hilo o la identificación del proceso, la identificación del evento, la sesión y la identificación del usuario.

Otros valores importantes pueden estar relacionados con el entorno, como: ID de instancia, nombre de implementación, versión de la aplicación o cualquier otro par clave-valor relacionado con el evento.

Use una marca de tiempo de alta precisión (en resolución de milisegundos, si no mejor) y asegúrese de que su formato de marca de tiempo incluya datos de zona horaria. A menos que tenga una razón excepcionalmente buena, use ISO 8601.

Finalmente, si te sientes como un verdadero profesional, agrega una identificación única a cada línea de registro. Una línea de registro generalmente tendrá una parte fija y otra variable, lo que hace que sea difícil filtrar patrones específicos dentro o fuera (aunque a todos nos encantan las expresiones regulares). Aquí es donde la identificación única se vuelve útil.

Al registrar errores, agregue una ID de error. Esto será muy útil para buscar en sus sistemas de gestión del conocimiento (que por supuesto tiene).

Estos son importantes para rastrear o correlacionar problemas en diferentes componentes y en toda su arquitectura.

# 3 ENTENDER LA METRICA

Un concepto central en el registro es la métrica.

Una métrica es un valor específico de una propiedad en un tiempo específico, generalmente medido a intervalos regulares.

Los tipos de indicadores comunes son:

Medidor: mide la tasa de eventos (por ejemplo, la tasa de visitantes a su sitio web)
Temporizador: mide el tiempo que lleva algún procedimiento (por ejemplo, el tiempo de respuesta del servidor web)
Contador: aumenta y disminuye un valor entero (por ejemplo, número de usuarios registrados)
Indicador: mide un valor arbitrario (por ejemplo, CPU)
Cada métrica describe un estado de alguna propiedad del sistema.

Lo bueno de las métricas es tener muchas y poder correlacionar diferentes métricas juntas. Por ejemplo, si descubrimos que cada vez que los usuarios de nuestras aplicaciones utilizan el método «Obtener foto de gato» y el «Tiempo invertido en la página web» aumenta, podemos inferir que nuestros usuarios prefieren fotos de gato a otras fotos.

Le recomendamos que rastree y registre métricas, o alternativamente almacene métricas por separado de sus registros.

# 4 NOTIFICACIÓN DE ALERTAS Y MANEJO DE EXCEPCIONES

Si algo sucede dentro de su código, y ya sabe con certeza lo que sucedió y tal vez lo que debe hacerse, no loguee información y active una alarma para ese registro específico, ya que es complejo y propenso a errores. En su lugar, active únicamente la alerta directamente desde el código.

Además, al registrar una excepción, aunque el seguimiento de la pila es útil, es difícil de leer. Utilice bibliotecas como Apache ExceptionUtils para resumir el seguimiento de la pila y facilitar su consumo.

# 5 USE NIVELES DE GRAVEDAD DE REGISTRO

Diferentes eventos tienen diferentes implicaciones de gravedad. Esto es importante porque le permite diferenciar eventos graves e importantes de eventos irregulares o incluso regulares.

No descarte los problemas de menor gravedad, pueden usarse como puntos de datos cuando intente crear una línea base para el comportamiento de la aplicación.

Sus archivos de registro deben contener principalmente mensajes de depuración, información y advertencia, y muy pocos mensajes de error.

# 6 SIEMPRE PROPORCIONE CONTEXTO

Los desarrolladores escriben registros en línea con el código. Esto significa que al escribir los registros en el código, los desarrolladores basan el registro en el contexto del código. Desafortunadamente, la persona que lee el registro no tiene ese contexto y, a veces, ni siquiera tiene acceso al código fuente.

Por ejemplo, comparemos las siguientes dos líneas de registro:

«La base de datos no responde»
“Error al obtener las preferencias de los usuarios para la identificación de usuario = 1. La base de datos de configuración no responde. Volverá a intentarlo en 5 minutos «.
Al leer la segunda línea de registro, entendemos fácilmente qué intentaba hacer la aplicación, qué componente falló y si hay algún tipo de solución para este problema.

Cada línea de registro debe contener suficiente información para que sea fácil entender exactamente qué estaba pasando y cuál era el estado de la aplicación durante ese tiempo.

# 7 ELIJA UN BUEN FRAMEWORK DE REGISTRO Y USE SUS CARACTERÍSTICAS AVANZADAS

Abstenerse de intentar rodar su propio framework de registro. Hay muchas bibliotecas de registro excelentes para cada lenguaje de programación. Bueno, tal vez a excepción de TrumpScript.

Los framework de registro le permiten configurar diferentes apéndices, cada uno con sus formatos de salida y su patrón de registro personalizado.

Otras características estándar incluyen agregar automáticamente el nombre del logger y una marca de tiempo, soporte para múltiples niveles de gravedad y filtrado por estos niveles.

Los framework de registro también tienen las siguientes características avanzadas que debería usar:

Configure diferentes umbrales de nivel de registro para diferentes componentes en su código
Use un apéndice con pérdida que elimine los eventos de nivel inferior si las colas se llenan
Utilice un apéndice de resumen de registros que registrará: «el siguiente mensaje se repite X veces: [mensaje]» en lugar de repetirlo X veces
Coloque un umbral en el nivel de registro y configúrelo para que también muestre N líneas de registro de nivel inferior cuando se produzca el registro de mayor gravedad

# 8 ESCRIBIR REGISTROS ESTRUCTURADOS (A VECES)

Hacer que sus logger escriban registros estructurados puede generar algún impacto en el rendimiento, pero si puede tomarlo, vale la pena. Más adelante, será mucho más fácil cargar sus registros en herramientas de análisis o procesarlas con intermediarios de loggers.

# 9 REGISTRE MUCHO Y LUEGO REGISTRE MÁS

A menudo descuidamos escribir registros importantes o incluso no registrar intencionalmente para mantener sus registros compactos. La mayoría de las veces, perderá más tiempo como resultado de no tener la respuesta en sus registros, entonces habría gastado tiempo en escribir registros. La calidad de sus registros es parte de la calidad de su código.

Utilice soluciones de registro centralizadas, sistemas automáticos de procesamiento de registros y aplique las técnicas descritas anteriormente para mantener los registros útiles, solo siga registrando.

 

Fuente9-logging-best-practices-based-on-hands-on-experience

Big data y smart cities, ¿qué ventajas nos traerán?

El big data y las smart cities son dos aspectos que ya empiezan a confluir en nuestros días. La población mundial se concentra cada vez más en grandes ciudades y esto supone incrementar los esfuerzos para optimizar los recursos disponibles. Y aquí las nuevas tecnologías de la comunicación (TIC) cobran un papel muy relevante. Desde gestionar eficientemente el tráfico rodado, hasta regular los flujos de información y opinión ciudadana, las TIC hacen que las ciudades sean más habitables, más seguras y confortables. Pero, ¿hasta dónde se puede llegar?

Leer más «Big data y smart cities, ¿qué ventajas nos traerán?»

Que depara la red de Blockchain en el futuro

Hablamos de Blockchain en el futuro porque la tecnología Blockchain es una tecnología que ha llegado para cambiar nuestra forma de ver el mundo digital. Llamada así por ser una “cadena de bloques” es la tecnología o sistema de codificación de información que está tras la moneda virtual, sustentando su estructura.

Leer más «Que depara la red de Blockchain en el futuro»

Llega la triple cámara trasera en los smartphone

Conseguir buenas fotografías para guardar nuestros recuerdos y también para compartirlas en redes sociales es una de las principales preferencias a la hora de usar y valorar nuestro teléfono móvil. Pero ¿sabías que está a punto de llegar la triple cámara trasera en el smartphone? Hasta ahora, lo común era encontrarnos con una o, como máximo, dos cámaras traseras en nuestros móviles, pero las principales compañías no paran de evolucionar en este sentido y para 2019 se prevén cambios muy interesantes.

Leer más «Llega la triple cámara trasera en los smartphone»

El cementerio de Google: todos los productos de la compañía que ya no funcionan

¿Te acuerdas de cuando Google + iba a convertirse en la red social más utilizada? Seguro que añoras también Google Reader, iGoogle o Picassa. Ahora puedes recordar todas ellas y por qué han desaparecido gracias a el cementerio de Google, un sitio web que honra la memoria de esas aplicaciones que todos utilizamos alguna vez que han pasado a mejor vida.

Leer más «El cementerio de Google: todos los productos de la compañía que ya no funcionan»