Manual de Implementación de Baseline y Delta para Gestión Proactiva de Métricas (opCharts )

Manual de Implementación de Baseline y Delta para Gestión Proactiva de Métricas (opCharts )

¿Qué es un baseline?

Un baseline (línea base) es una representación estadística del comportamiento típico o esperado de una métrica a lo largo del tiempo. Se utiliza para establecer patrones normales y detectar anomalías cuando los valores reales se desvían significativamente del comportamiento histórico. Funciona como referencia para detectar anomalías o desviaciones significativas, permitiendo una gestión proactiva de infraestructuras.

Los baselines ayudan a identificar problemas de rendimiento, picos de tráfico, o comportamientos fuera de lo común mediante la comparación con datos históricos. Este comportamiento se calcula a partir de datos históricos recolectados durante un período determinado.

 

Funcionamiento

  • Los baselines se generan analizando datos históricos de una métrica específica (por ejemplo, uso de CPU, memoria, tráfico de red, etc.) durante un período definido.

  • Se utiliza un modelo estadístico para calcular el rango esperado de valores (promedio, desviación estándar, etc.).

  • Una vez configurado, el sistema compara los valores actuales con el baseline para detectar anomalías o desviaciones significativas.

Objetivo

El objetivo principal de un baseline es:

  • Detectar comportamientos anómalos o inusuales en tiempo real.

  • Facilitar la identificación de problemas antes de que impacten en el rendimiento del sistema.

  • Proporcionar una base para ajustar umbrales dinámicos y generar alertas proactivas.

Beneficios

  • Detección temprana de problemas : Identifica desviaciones antes de que se conviertan en incidentes críticos.

  • Reducción de falsos positivos : Los umbrales dinámicos adaptan las alertas al comportamiento normal del sistema.

  • Optimización de recursos : Permite enfocarse en problemas reales en lugar de ruido operativo.

  • Mejora en la planificación : Proporciona información valiosa sobre tendencias y patrones históricos.

Ventajas

  • Flexibilidad para configurar diferentes períodos de análisis.

  • Personalización de umbrales según las necesidades del entorno.

  • Capacidad para aplicar reglas a nodos específicos, grupos de nodos o tecnologías específicas.

 

2. Delta: Concepto y Funcionamiento

¿Qué es Delta?

Delta es un tipo de baseline que mide el cambio absoluto o relativo en una métrica en comparación con su valor anterior. Es útil para detectar cambios abruptos o inesperados en el comportamiento de una métrica.

Funcionamiento

  • El sistema calcula la diferencia entre el valor actual y el valor previo de la métrica.

  • Si la diferencia supera un umbral definido, se genera un evento o alerta.

Cuándo Usar Delta

  • Cambios rápidos : Ideal para métricas que pueden cambiar rápidamente, como errores de red (ifInErrors, ifOutDiscards), tasas de paquetes descartados, o cambios en el número de conexiones TCP.

  • Sistemas volátiles : Adecuado para sistemas donde las métricas fluctúan constantemente y no tienen un patrón estable.

  • Detección de picos : Útil para detectar picos repentinos en métricas como el uso de CPU o memoria.

 

Cómo se Calcula:

  1. Promedio Histórico (Baseline):
    Se calcula el promedio de la métrica durante el período definido (hours/weeks).
    Ejemplo: Si hours: 192 (8 días), se usa el promedio de CPU de los últimos 8 días a la misma hora.

  2. Valor Actual:
    Se obtiene el promedio de la métrica en la ventana temporal definida por threshold_period (ej: últimos 15 minutos).

  3. Delta (%):

    Delta=(Valor Actual−BaselineBaseline)×100Delta=(BaselineValor Actual−Baseline​)×100

    Si el resultado supera los umbrales configurados en levels, se genera una alerta.

Ejemplo de Cálculo:

  • Baseline (Promedio Histórico): 40% CPU.

  • Valor Actual (15 min): 70% CPU.

  • Delta: (70−40)/40×100=75%(70−40)/40×100=75%.

  • Umbrales Configurados:

    "levels": { "Warning": 20, "Minor": 50, "Major": 75 }

    Resultado: Alerta "Major" (Delta ≥ 75%).

 

Static: Concepto y Funcionamiento

¿Qué es Static?

Static es un tipo de baseline que establece un valor fijo o estático como referencia para comparar el comportamiento actual de una métrica. No depende de cambios históricos ni de variaciones en el tiempo.

Funcionamiento

  • Se define un valor estático como umbral de referencia.

  • El sistema compara el valor actual con este umbral estático.

  • Si el valor actual supera el umbral, se genera un evento o alerta.

Cuándo Usar Static

  • Métricas estables : Ideal para métricas que tienen un comportamiento predecible y estable, como el uso de almacenamiento (hrStorageUtil) o el número de procesos en ejecución.

  • Umbrales críticos : Adecuado para métricas donde se necesita un control estricto, como el uso de CPU por encima del 90%.

  • Entornos simples : Útil en entornos donde no es necesario un análisis histórico complejo.

 

Cómo se Calcula:

  1. Media y Desviación Estándar:
    Se calculan a partir del histórico definido (hours/weeks).

  2. Umbral Static:

    Umbral=Media+(Multiplicador×σ)Umbral=Media+(Multiplicador×σ)

    Si el valor actual supera este umbral, se genera una alerta.

Ejemplo de Cálculo:

  • Media Histórica: 50% CPU.

  • Desviación Estándar (σ): 10%.

  • Multiplicador: 3 → Umbral = 50 + (3×10) = 80%.

  • Valor Actual: 85% → Alerta (supera 80%).

Comparativa: Delta vs Static

 

Característica

Delta

Static

Base de Cálculo

% de cambio relativo al histórico. Diferencias entre valores

Valor absoluto (media + σ).

Alertas

Por desviación porcentual.

Por superar un límite fijo.

Flexibilidad

Adaptativo a patrones temporales.

Fijo, no varía con el tiempo.

Mejor Para

Anomalías relativas (ej: picos).

Límites críticos (ej: capacidad).

Configuración Clave

levels (%).

multiplier (múltiplos de σ).

Métricas ideales

Contadores

Estados / porcentajes

Uso común

Tráfico, errores, paquetes

CPU, RAM, temperatura

Comportamiento esperado

Aumenta con el tiempo

Se mantiene en un rango

Volatilidad 

Alta

Baja

 

Configuración de Baselines

Pasos Generales

  1. Definir la métrica : Especificar qué métrica se desea monitorear (por ejemplo, cpuUtil, memUsageUtil, inputUtil, etc.).

  2. Establecer el período histórico : Definir cuántos días de datos históricos se utilizarán para calcular el baseline.

  3. Configurar umbrales : Ajustar los niveles de advertencia, crítica, etc., para generar eventos.

  4. Aplicar a nodos o grupos : Decidir si el baseline se aplicará a todos los nodos, un grupo específico o modelos tecnológicos particulares.

  5. Activar el baseline : Habilitar la regla en el archivo de configuración.

Visualización de Baselines

Los baselines se visualizan en los gráficos de opCharts como una banda de color:

  • Línea base: línea central basada en el promedio histórico.

  • Bandas de confianza: áreas superior e inferior que representan la variabilidad (± margen estándar).

Estas bandas permiten observar cuándo los datos actuales exceden el comportamiento esperado, lo que puede indicar un posible incidente o anomalía.

Buenas Prácticas

  • Usar delta solo en métricas acumulativas: No aplicarlo a porcentajes o valores absolutos.

  • Revisar la periodicidad de los datos: Los baselines requieren datos consistentes para ser fiables.

  • Permitir tiempo de entrenamiento: Los baselines se ajustan a partir del historial. Al principio pueden ser inexactos.

  • Validar comportamiento real vs línea base: Usar eventos o tickets históricos como referencia.

Configuración óptima de reglas de Baseline

Parámetros clave:

  • metric: Métrica a monitorear (ej. cpuUtil).

  • nodeModel: Modelos de nodos aplicables.

  • hours: Cantidad de horas de histórico a analizar.

  • weeks: Cantidad de semanas para refinar el análisis.

  • baseline: Tipo de baseline (delta o static).

  • levels: Umbrales por severidad (Warning, Minor, Major, Critical, Fatal).

  • threshold_exceeds: Cantidad de desviaciones permitidas antes de generar evento.

  • multiplier: Multiplicador de desviación estándar para ajustar sensibilidad.

  • indexed: Si la métrica es por interfaz u otra instancia.

  • threshold_period: Periodo para calcular promedio (ej. "-15 minutes").

 

Estructura del Archivo Baseline.json

"Nombre_Regla": { "active": "true", // Activa/desactiva la regla "metric": "cpuUtil", // Métrica a monitorizar "nodeModel": "CiscoRouter", // Regex para filtrar modelos "type": "interface", // Sección del modelo NMIS "hours": 192, // Histórico en horas (ej: 8 días = 192h) "weeks": 2, // Histórico en semanas "baseline": "delta", // Tipo de baseline "threshold_period": "-15 minutes", // Ventana de promedio actual "multiplier": 4, // Sensibilidad (múltiplo de σ) "levels": { // Umbrales de severidad (% Delta) "Warning": 20, "Minor": 40, "Major": 60, "Critical": 80, "Fatal": 100 }, "threshold_exceeds": 10 // Mínimo valor absoluto para alertar }

Ejemplos de Configuración

 

Ejemplo 1: Delta para CPU (8 Días)

"CPU_Delta": { "active": "true", "metric": "cpuUtil", "nodeModel": ".*", "type": "system", "hours": 192, "baseline": "delta", "threshold_period": "-15 minutes", "levels": { "Warning": 30, // +30% vs histórico "Minor": 50, // +50% "Major": 70, // +70% "Critical": 100 // +100% } }

Interpretación:

  • Si el CPU está 80% vs un histórico de 50% → Delta 60% → Alerta "Minor".

  • Personalización:

    • Ajustar levels según tolerancia a incrementos.

    • Reducir hours para baseline más reactivo (ej: 24 horas).

 

Ejemplo 2: Static para Memoria (2 Días)

"Mem_Static": { "active": "true", "metric": "memUsageUtil", "nodeModel": "LinuxServer", "type": "memory", "hours": 48, "multiplier": 3, // 3σ sobre la media "threshold_exceeds": 70 // Alerta si >70% absoluto }

Interpretación:

  • Media histórica: 40%, σ: 5% → Umbral = 40 + (3×5) = 55%.

  • Si memoria alcanza 60% → Supera 55% → Alerta.

  • Personalización:

    • Usar threshold_exceeds para ignorar valores bajos (ej: <70% no alerta).

 

Ejemplo 3: Static para Disco (Todos los Nodos)

"Disk_Static": { "active": "true", "metric": "hrStorageUtil", "nodeModel": ".*", "type": "Host_Storage", "weeks": 4, // 4 semanas de histórico "multiplier": 4, // 4σ "threshold_exceeds": 90 // Alerta si >90% }

Uso:

  • Ideal para garantizar que ningún disco supere el 90%, incluso si el baseline está bajo.

 

Ejemplo 4: Delta para Red (Grupos Específicos)

"Red_Delta": { "active": "true", "metric": "inputUtil|outputUtil", "nodeModel": "Switch-Core|Router-Backbone", "type": "interface", "baseline": "delta", "hours": 72, // 3 días "levels": { "Warning": 20, // +20% en tráfico "Critical": 100 // Doble del histórico } }

Escenario:

  • Tráfico normal: 200 Mbps.

  • Tráfico actual: 450 Mbps → Delta 125% → Alerta "Critical".

 

Interpretación Detallada de Eventos de Baseline

 

Evento 1: Proactive Baseline Response Delta (Warning)

Fecha: 2025-04-08T19:54:13
Host: omk-core4
Detalles Clave:

details: below baseline: base=31.28 value=27.50 change=-12.08%

¿Por qué se generó?

  • Tipo de Baseline: Delta (porcentaje de cambio respecto al histórico).

  • Condición de Alerta: El valor actual de la métrica (27.50) cayó un 12.08% por debajo del baseline (31.28), superando el umbral configurado para el nivel "Warning".

¿Qué se detectó?

  • Métrica Afectada: Respuesta del sistema (ej: tiempo de respuesta de un servicio).

  • Anomalía: Una disminución inesperada en el rendimiento.

    • Escenario Posible:

      • Un servicio crítico está respondiendo más rápido de lo normal, lo que podría indicar una reducción inusual de carga (ej: caída de tráfico, fallo en un componente).

      • Ejemplo: Si el baseline es 31.28 ms (tiempo promedio histórico), y el valor actual es 27.50 ms, la reducción del 12% podría reflejar una desconexión de usuarios o un error en la medición.

      • Base: 31.28 — Este es el valor promedio histórico esperado (línea base) para una métrica determinada (ej. % de uso de CPU, IO o similar).

      • Valor Actual: 27.50 — El valor reciente medido está por debajo de lo que se espera.

      • Cambio: -12.08% — Una disminución del 12.08% respecto al promedio.

Configuración Implícita:

  • Niveles de Alerta (Ejemplo):

    "levels": { "Warning": -10%, "Minor": -20%, "Major": -30% }

    El cambio del -12.08% superó el umbral "Warning" (-10%), pero no alcanzó "Minor" (-20%).

Acciones Recomendadas:

  1. Verificar si la reducción está asociada a un mantenimiento planificado.

  2. Investigar posibles caídas de tráfico o servicios no operativos.

  3. Revisar logs del sistema en el período previo al evento.

 

Evento 2: Proactive Baseline Host_Storage hrStorageUtil (Warning)

Fecha: 2025-04-08T19:54:10
Host: demo
Detalles Clave:

details: below baseline: value=89.70 metricBandwidth=90.07 - 93.13 mean=91.60 stddev=0.38 meanDelta=-1.90 stddevMultiplier=-4.96

¿Por qué se generó?

  • Tipo de Baseline: Static (umbrales basados en desviación estándar).

  • Condición de Alerta:

    • El valor actual (89.70) está fuera del rango esperado (90.07 - 93.13).

    • La desviación respecto a la media (91.60) es de -1.90 (equivalente a -4.96σ), muy por debajo del límite inferior configurado.

¿Qué se detectó?

  • Métrica Afectada: Utilización de almacenamiento (hrStorageUtil).

  • Anomalía: Una caída drástica en el uso del almacenamiento.

    • Escenario Posible:

      • Eliminación masiva de archivos.

      • Fallo en un sistema de replicación o backup.

      • Error en la métrica (ej: partición no montada).

Configuración Implícita:

  • Cálculo del Umbral (Ejemplo):

    • Media histórica: 91.60.

    • Desviación estándar (σ): 0.38.

    • Umbral inferior: Media - (Multiplicador × σ)91.60 - (4 × 0.38) = 90.07.

    • El valor actual (89.70) está 1.90 unidades por debajo de la media, equivalente a -4.96σ (fuera de un rango de 4σ es extremadamente improbable en una distribución normal).

Acciones Recomendadas:

  1. Verificar integridad del sistema de archivos.

  2. Revisar logs de aplicaciones que gestionan almacenamiento.

  3. Confirmar si la reducción fue intencional (ej: limpieza programada).

 

Evento 3: Proactive Baseline Host_Health hrSystemNumUsers (Fatal)

Fecha: 2025-04-08T19:49:10
Host: fulla
Detalles Clave:

details: below baseline: base=0.91 value=0.35 change=-61.54%

¿Por qué se generó?

  • Tipo de Baseline: Delta (cambio porcentual).

  • Condición de Alerta:

    • El número de usuarios activos (0.35) cayó un 61.54% respecto al baseline (0.91), superando el umbral configurado para "Fatal".

¿Qué se detectó?

  • Métrica Afectada: Número de usuarios conectados (hrSystemNumUsers).

  • Anomalía: Una pérdida masiva de usuarios.

    • Escenario Posible:

      • Caída total del sistema de autenticación.

      • Interrupción de red que impide conexiones.

      • Fallo crítico en la aplicación (ej: servicio reiniciado).

Configuración Implícita:

  • Niveles de Alerta (Ejemplo):

     

    "levels": { "Warning": -20%, "Minor": -40%, "Major": -60%, "Fatal": -70% }

    El cambio del -61.54% superó el umbral "Major" (-60%) pero no alcanzó "Fatal" (-70%). Sin embargo, el evento se marcó como "Fatal" debido a la gravedad percibida.

  • Métrica Evaluada: hrSystemNumUsers — Número de usuarios conectados al sistema.

  • Base: 0.91 — Normalmente hay al menos 1 usuario conectado.

  • Valor Actual: 0.35 — Prácticamente nadie conectado.

  • Cambio: -61.54% — Caída drástica.

 

Acciones Recomendadas:

  1. Investigar estado del servicio de autenticación (ej: LDAP, Active Directory).

  2. Revisar conectividad de red y logs de firewalls.

  3. Validar disponibilidad de la aplicación principal.

Patrones Comunes y Soluciones

Tipo de Evento

Causas Típicas

Acciones Inmediatas

Tipo de Evento

Causas Típicas

Acciones Inmediatas

Below Baseline (Delta)

  • Mantenimiento no comunicado.

  1. Validar calendario de cambios.

 

  • Fallo en métricas (ej: sensor inactivo).

  1. Verificar fuentes de datos.

Below Baseline (Static)

  • Eliminación de datos/recursos.

  1. Revisar políticas de retención.

 

  • Error en replicación/backup.

  1. Auditoría de integridad de datos.

Caída Brusca de Usuarios

  • Ataque DDoS o bloqueo de IPs.

  1. Analizar tráfico de red.

 

  • Actualización fallida.

  1. Rollback de cambios recientes.

Cómo Ajustar la Configuración para Evitar Falsos Positivos

  1. Para Delta:

    • Aumentar el porcentaje de umbral (ej: cambiar "Warning" de -10% a -15%).

    • Usar períodos históricos más largos (weeks en lugar de hours).

  2. Para Static:

    • Aumentar el multiplier (ej: de a ).

    • Ignorar valores absolutos bajos con threshold_exceeds (ej: threshold_exceeds: 50 para solo alertar si el valor supera 50).

 

Anexos

configuracion de baseline: "inputUtil": { "event": "Proactive Interface Input Utilisation (Delta)", "item": "inputUtil", "active": "true", "metric": "inputUtil", "type": "interface", "nodeModel": ".", "indexed": "true", "baseline": "delta", "hours": 192, "levels": { "Warning": 40, "Minor": 60, "Major": 70, "Critical": 80, "Fatal": 90 }, "threshold_period": "-15 minutes", "threshold_exceeds": 10, "multiplier": 4 }, "outputUtil": { "event": "Proactive Interface Output Utilisation (Delta)", "item": "outputUtil", "active": "true", "metric": "outputUtil", "type": "interface", "nodeModel": ".", "indexed": "true", "baseline": "delta", "hours": 192, "levels": { "Warning": 40, "Minor": 60, "Major": 70, "Critical": 80, "Fatal": 90 }, "threshold_period": "-15 minutes", "threshold_exceeds": 10, "multiplier": 4 },

 

Ejemplo 1:

NMIS 08-Apr-2025 17:49:56
Nodo: GOB_EDOMEX_DG_RECAUDACION_ATLACOMULCO_IDE_RT01
Evento: Proactive Interface Input Utilisation (Delta)
Severidad: Fatal
Interfaz: GigabitEthernet0/1.868
Detalle: above baseline: base=6.47 value=15.27 change=136.01%

 

🔍 Interpretación:

  • Métrica: inputUtil (utilización de entrada de interfaz).

  • Método: delta baseline, compara el valor actual contra el promedio histórico.

  • Base histórica (promedio): 6.47%

  • Valor actual: 15.27%

  • Cambio: Aumentó 136% respecto al promedio → desviación importante.

  • Nivel de alerta: Fatal (porque el cambio superó el umbral para "Fatal", configurado en 90%).

Ejemplo 2:

NMIS 08-Apr-2025 17:52:48
Nodo: INE_JD32_MEX_IDE_RT01
Evento: Proactive Interface Discards Output Packets
Severidad: Warning
Interfaz: GigabitEthernet0/0/0
Detalle: Value=0.03101 Threshold=0.02

 

🔍 Interpretación:

  • Métrica: Descarta de paquetes de salida.

  • Método: threshold estático (no usa baseline).

  • Valor actual: 0.03101

  • Umbral estático configurado: 0.02

  • Resultado: El valor superó el umbral → se genera alerta Warning.


¿Qué configurar para hacer más sensible el alertamiento?

Si deseas detectar anomalías más pequeñas o más rápido, puedes:

🔧 OPCIONES para hacer el alertamiento más sensible:

Opción

Parámetro

Ejemplo

Opción

Parámetro

Ejemplo

🔽 Bajar umbrales

"levels"

Fatal: 90 → 70, Warning: 40 → 20

🔽 Disminuir threshold_exceeds

Cantidad de veces antes de alertar

10 → 3 → más rápida detección

🔽 Disminuir multiplier

Reduce la tolerancia de desviación

4 → 2 → se activa con menos variación

🔽 Reducir threshold_period

Menor ventana de espera

-15 minutes → -5 minutes


¿Qué configurar para hacer más tolerante el alertamiento?

Si solo quieres alertar en casos muy críticos, puedes:

🔧 OPCIONES para hacer el alertamiento menos sensible:

Opción

Parámetro

Ejemplo

Resultado

Opción

Parámetro

Ejemplo

Resultado

🔼 Subir los umbrales de levels

"Fatal": 90 → 110

Se necesita más desviación para alertar

 

🔼 Aumentar threshold_exceeds

10 → 20

Requiere más repeticiones para dispararse

 

🔼 Aumentar multiplier

4 → 6

Se permite más tolerancia antes de alertar

 


Recomendaciones para ajustar sensibilidad según necesidad

Escenario

Recomendación

Escenario

Recomendación

Ambiente productivo con mucho tráfico, necesitas alertas tempranas

Más sensible: reducir threshold_exceeds a 3–5, bajar niveles

Ambientes con picos normales o tráfico variable

Menos sensible: subir multiplier a 5 o 6, subir niveles de alerta

Solo se desean alertas críticas reales

threshold_exceeds = 20, Fatal > 120%, multiplier = 6


Resumen de parámetros clave

Parámetro

Descripción

Parámetro

Descripción

levels

Define los umbrales por severidad (porcentaje de cambio sobre baseline)

threshold_exceeds

Número de veces que se debe cumplir la condición antes de alertar

multiplier

Cuánto debe alejarse del baseline para ser considerado una desviación

threshold_period

Cuánto tiempo atrás mirar para decidir si generar alerta

baseline

Puede ser delta o static