Monitoreo, da tu primer paso (una idea cool para tu fin de semana)
Fecha de publicación: 2025-06-09
Empezar con herramientas de monitoreo puede sonar intimidante: pushear métricas con OpenTelemetry hacia Datadog, Splunk, Prometheus u otros puede parecer más un esfuerzo de infraestructura que de desarrollo. Pero la realidad es otra:
El monitoreo es tu salvación. Si alguna vez pasaste horas sin entender por qué tu sistema fallaba misteriosamente, o si has dicho "en mi local sí funciona", sabes de lo que hablo. No tener observabilidad es volar a ciegas.
🎯 ¿Qué te propongo hoy?
Hoy vamos a crear un monitoreo primitivo de logs. No es OpenTelemetry aún, pero sí es tu primer paso. Un script en Python que lee logs estructurados y te muestra distribuciones, comparaciones de severidad, histogramas e incluso un treemap.
🧪 ¿Qué puedes hacer con esto?
- Visualizar qué tipos de errores predominan en tus servicios.
- Comparar errores vs warnings en un vistazo.
- Ver en qué categorías se concentran los problemas.
- Y lo más importante: detectar patrones.
💡 El script base
Este es el script completo que vamos a ejecutar. Está dividido en funciones para mostrar diferentes visualizaciones. ¡Puedes adaptarlo fácilmente a tus propios logs!
# (Fragmento) Mostrar histograma de errores
fig = px.histogram(df, x='Mensaje', color_discrete_sequence=['#ff6b6b'])
fig.update_layout(title="Histograma de Frecuencias de Errores", xaxis_title="Mensaje de Error", yaxis_title="Frecuencia")
fig.show()
La clave está en que los mensajes estén clasificados por severidad (`ERROR`, `WARNING`) y agrupados en categorías como "Conexión", "Archivo", etc. Puedes ampliar esto fácilmente detectando palabras clave en logs reales, por ejemplo:
if 'NullPointerException' in log_line:
error_logs['Java'].append(log_line)
if 'timeout' in log_line.lower():
error_logs['Conexión'].append(log_line)
if 'disk full' in log_line.lower():
error_logs.setdefault('Sistema de Archivos', []).append(log_line)
if 'config not found' in log_line.lower():
warning_logs.setdefault('Configuración', []).append(log_line)
🌐 ¿Y OpenTelemetry?
OpenTelemetry es un estándar abierto para generar, recolectar y exportar métricas, trazas y logs. Permite integrar tus aplicaciones con herramientas como Jaeger, Zipkin, Prometheus o Datadog.
La buena noticia es que muchas librerías modernas ya ofrecen integración con OpenTelemetry, y si comienzas a estructurar bien tus logs, ya tienes media batalla ganada.
Este ejemplo de script es solo un comienzo, pero puede inspirarte a llevar tus proyectos hacia una mayor observabilidad.
Ahí podrás encontrar el código completo, más ejemplos y visualizaciones adicionales generadas a partir de logs reales. Es una base sobre la que puedes construir herramientas personalizadas para entender mejor lo que ocurre dentro de tus servicios.
A continuación, te dejo algunos ejemplos de visualizaciones que el analyzer puede generar:
- 📊 Distribución de errores por categoría
- 📈 Comparación entre errores y warnings
- 🗺️ Treemap de categorías por severidad
- Agrega soporte para logs en tiempo real usando
watchdog
o tail -f
. - Identifica y clasifica patrones de error más complejos con expresiones regulares.
- Empieza a enviar métricas con
opentelemetry-sdk
en tus microservicios. - Configura dashboards con Prometheus + Grafana o Datadog si estás en cloud.
Monitorear no es opcional. Si te importa la calidad de lo que entregas, este pequeño script puede ser el inicio de algo grande.
En resumen, este pequeño ejercicio no solo te acerca al mundo del monitoreo, sino que también te invita a adoptar una mentalidad de observabilidad desde etapas tempranas del desarrollo. No se trata únicamente de recolectar métricas y logs por cumplir, sino de entender que cada bit de información es una oportunidad para mejorar la estabilidad, el rendimiento y la experiencia de usuario de tus sistemas.
Así como aprendiste a hacer tests unitarios o a configurar CI/CD, aprender a monitorear y visualizar tus datos de forma efectiva es una habilidad esencial en cualquier stack moderno. Con herramientas simples como `pandas`, `plotly` y un poco de lógica, puedes tener una visión panorámica de tus errores más comunes y abrirte paso hacia soluciones más robustas como OpenTelemetry.
No necesitas tener un clúster de Kubernetes ni integraciones complejas para empezar a observar. Solo necesitas curiosidad, una estructura mínima y la decisión de dejar de trabajar a ciegas.
Recuerda: no puedes arreglar lo que no puedes ver.