Monitoreo y alertas de rendimiento de red Meraki
Meraki Network Monitor
Monitorea automáticamente la latencia y la tasa de pérdida de paquetes en redes Cisco Meraki, y envía alertas a través de Teams cuando el rendimiento supera los umbrales establecidos, utilizando Redis para evitar notificaciones duplicadas.
Descripción general del flujo de trabajo
Este flujo de trabajo en n8n es un sistema de monitoreo y alertas para redes Cisco Meraki, diseñado para supervisar automáticamente métricas de rendimiento de red (latencia y tasa de pérdida de paquetes) y enviar notificaciones de alerta cuando se detecten problemas. El flujo obtiene, mediante la API de Meraki, información sobre organizaciones, redes y estadísticas de enlaces ascendentes (uplinks), calcula métricas promedio de rendimiento, filtra los sitios con problemas y envía alertas a través de Microsoft Teams, utilizando además una base de datos Redis para evitar alertas duplicadas.
Estructura del flujo de trabajo
1. Nodos desencadenantes
Nombres de los nodos:
When clicking "Execute Workflow"(desencadenante manual)Schedule Trigger(desencadenante programado)
Descripción funcional: Este flujo admite dos formas de activación:
- Ejecución manual: al hacer clic en el botón "Ejecutar flujo de trabajo"
- Ejecución programada: se ejecuta automáticamente según un horario predefinido (para monitoreo continuo)
2. Fase de recolección de datos
2.1 Obtener información de organizaciones Meraki
Nombre del nodo: Get Meraki Organizations
Descripción funcional:
- Realiza una solicitud HTTP a la API de Meraki (
https://api.meraki.com/api/v1/organizations) - Utiliza autenticación por encabezado (header), requiriendo una clave API de Meraki
- Obtiene una lista de todas las organizaciones a las que la cuenta tiene acceso
Detalles técnicos:
- Tipo de solicitud: GET
- Método de autenticación: Autenticación por encabezado HTTP
- Encabezados requeridos:
Authorization: para autenticaciónAccept: application/json: especifica que los datos devueltos deben estar en formato JSON
2.2 Procesar datos de organizaciones
Nombre del nodo: Get Org Name & ID
Descripción funcional:
- Usa un nodo Set para extraer y renombrar campos clave
- Extrae de los datos originales:
CompanyName: nombre de la organizaciónOrgID: ID de la organización
2.3 Obtener IDs de redes
Nombre del nodo: Get Network IDs
Descripción funcional:
- Para cada ID de organización, llama a la API para obtener todas sus redes
- Utiliza una URL dinámica:
https://api.meraki.com/api/v1/organizations/{{ $json.OrgID }}/networks - Proporciona una lista de redes para su posterior monitoreo
2.4 Procesar variables de red
Nombre del nodo: Sets Network Variables
Descripción funcional:
- Extrae y formatea información de red
- Incluye campos clave como nombre de red, ID de red y URL de red
2.5 Obtener estadísticas de enlace ascendente
Nombre del nodo: Get Uplink Loss and Latency
Descripción funcional:
- Obtiene estadísticas de rendimiento del enlace ascendente de los dispositivos de red
- Incluye:
- Porcentaje de pérdida de paquetes (Loss Percent)
- Latencia en milisegundos (Latency Ms)
- Datos de series temporales (los últimos 5 puntos temporales)
3. Fase de procesamiento y análisis de datos
3.1 Combinación de datos
Nombre del nodo: Combine latency to its respective Network
Descripción funcional:
- Usa un nodo Merge para combinar información de red con estadísticas de rendimiento
- Campo de coincidencia:
NetworkIDynetworkId - Modo de combinación: enrichInput1 (enriquece los datos de la entrada 1)
3.2 Reestructuración de datos
Nombre del nodo: Makes Latency and Loss Filterable
Descripción funcional:
- Reorganiza la estructura de los datos para facilitar el filtrado y análisis de latencia y pérdida
- Extrae 5 puntos de datos de series temporales:
TS0-LossaTS4-Loss: tasas de pérdida en 5 momentos distintosTS0-LatencyaTS4-Latency: latencias en 5 momentos distintos
- Conserva metadatos como nombre de red, número de serie y URL
3.3 Cálculo de promedios
Nombre del nodo: Average Latency & Loss over 5m
Descripción funcional:
- Usa código JavaScript para calcular promedios de los últimos 5 puntos temporales
- Calcula dos métricas clave:
AverageLoss: pérdida promedio de paquetesAverageLatency: latencia promedio (en milisegundos)
- Estos promedios permiten identificar problemas de rendimiento con mayor precisión
Lógica del código:
// Calcula la pérdida total y la latencia total en los 5 puntos temporales
// Divide entre 5 para obtener los promedios
// Añade los resultados al elemento de datos
3.4 Filtrado de sitios problemáticos
Nombre del nodo: Filters Problematic sites
Descripción funcional:
- Usa código JavaScript para filtrar sitios que superen umbrales predefinidos
- Criterios de umbral:
- Latencia promedio > 300 ms
- O pérdida promedio > 2%
- Solo los sitios que cumplan al menos una condición pasan al siguiente paso
Lógica de filtrado:
// Si AverageLatency > 300 o AverageLoss > 2
// entonces el sitio se marca como problemático
4. Fase de deduplicación de alertas y notificación
4.1 Verificación de existencia de alerta
Nombre del nodo: Check if Alert Exists
Descripción funcional:
- Consulta la base de datos Redis para verificar si ya se ha enviado una alerta para esa red
- Usa el nombre de red como clave
- Si la clave existe, significa que ya se ha enviado una alerta (dentro del período TTL)
4.2 Creación de respuesta
Nombre del nodo: Create Response
Descripción funcional:
- Procesa con JavaScript el resultado de la consulta a Redis
- Convierte el resultado en un valor booleano o identificador utilizable
- Determina si es necesario enviar una nueva alerta
4.3 Fusión para deduplicación
Nombre del nodo: Merge
Descripción funcional:
- Combina los sitios problemáticos con los datos de alertas ya existentes
- Campo de coincidencia:
NetworkName - Modo de combinación: conserva todos los elementos no coincidentes
- Lógica clave: si coincide el nombre de red, significa que ya existe una alerta y no se reenvía; solo continúan los elementos no coincidentes (nuevos problemas)
4.4 Envío de mensaje a Teams
Nombre del nodo: Message Techs
Descripción funcional:
- Envía una alerta mediante un webhook de Microsoft Teams
- El contenido del mensaje incluye:
- Nombre de la red
- Datos de latencia y pérdida promedio
- URL de la red (como hipervínculo para acceder directamente al sitio con problemas)
- Notifica al equipo técnico de que un sitio ha superado los umbrales de rendimiento
4.5 Registro de alerta
Nombre del nodo: Log the Alert
Descripción funcional:
- Registra la alerta en la base de datos Redis
- Establece un TTL (tiempo de vida) de 3 horas
- Lógica anti-repetición: si el problema en el mismo sitio persiste más allá de las 3 horas, se enviará nuevamente la alerta
5. Nodos de notas explicativas
El flujo incluye varios nodos Sticky Note (notas adhesivas) con instrucciones detalladas:
- Sticky Note3: explica cómo configurar la autenticación de la API de Meraki
- Sticky Note4: describe la lógica de combinación de datos y cálculo estadístico
- Sticky Note5: detalla el mecanismo de deduplicación de alertas y el flujo de notificación
- Sticky Note6: sugiere otros casos de uso (por ejemplo, integración con herramientas PSA para crear tickets)
Diagrama del flujo de trabajo
[Desencadenante] → [Obtener organizaciones] → [Procesar datos de organizaciones] → [Obtener IDs de red] → [Procesar datos de red]
↓ ↓
[Obtener datos de enlace ascendente] ----------------------------------------------------→ [Combinar datos]
↓
[Reestructurar datos de latencia/pérdida]
↓
[Calcular promedio de 5 minutos]
↓
[Filtrar sitios problemáticos]
↓
[Verificar existencia de alerta] ← → [Fusión para deduplicación]
↓ ↓
[Crear respuesta] --------------------→ [Enviar mensaje a Teams]
↓
[Registrar alerta]
Aspectos técnicos clave
1. Autenticación API
- Se debe generar una clave API en el Meraki Dashboard
- Documentación de referencia: https://documentation.meraki.com/General_Administration/Other_Topics/Cisco_Meraki_Dashboard_API
- Se utiliza autenticación por encabezado HTTP
2. Umbrales de rendimiento
- Umbral de latencia: 300 milisegundos
- Umbral de pérdida: 2%
- Estos umbrales pueden ajustarse según necesidades específicas
3. Mecanismo anti-repetición de alertas
- Almacena alertas enviadas en Redis
- TTL establecido en 3 horas
- No se reenvían alertas para el mismo sitio dentro del período TTL
4. Métodos de procesamiento de datos
- Recopila datos de los últimos 5 puntos temporales
- Calcula promedios para reducir el impacto de fluctuaciones momentáneas
- Usa nodos de código JavaScript para procesamiento y filtrado complejos de datos
Casos de uso
- Monitoreo de rendimiento de red: supervisión continua de latencia y pérdida en redes Meraki
- Alertas proactivas: notificación automática al equipo técnico ante degradación del rendimiento
- Resolución de fallos: proporciona enlaces directos a la URL de la red para localizar rápidamente el problema
- Gestión de alertas: evita el bombardeo de alertas, enviando solo una vez por sitio en un lapso de 3 horas
Sugerencias de ampliación
Según lo indicado en Sticky Note6, se pueden realizar las siguientes ampliaciones:
- Integración con sistemas PSA: reemplazar el nodo de mensaje de Teams por un nodo de herramienta PSA (como ConnectWise Manage) para crear tickets automáticamente en lugar de solo enviar mensajes
- Notificación multicanal: además de Teams, añadir canales como correo electrónico, Slack, etc.
- Umbrales personalizados: definir diferentes umbrales de rendimiento para distintas redes
- Almacenamiento histórico: guardar los datos de monitoreo en una base de datos para análisis a largo plazo y predicción de tendencias
Resumen
Este es un flujo de trabajo completo de automatización para monitoreo de redes, que aprovecha plenamente las siguientes capacidades de n8n:
- Integración mediante solicitudes HTTP con APIs externas
- Transformación y procesamiento de datos (nodos Set y Code)
- Combinación de datos (nodo Merge)
- Filtrado condicional y evaluación lógica
- Notificaciones externas (webhook de Teams)
- Persistencia de datos (Redis)
Mediante el monitoreo automatizado y alertas inteligentes, mejora significativamente la eficiencia operativa de redes y reduce considerablemente la carga de trabajo manual.