8. Qué se pierde si se cae uno de los eslabones - buffering y disponibilidad

Introducción operativa

En Zabbix, la cadena de monitoreo tiene múltiples eslabones: agente, proxy, server, base de datos, red.

Si alguno falla, el operador debe saber exactamente qué se pierde, qué se conserva, y cómo se verifica.

La disponibilidad del monitoreo no es binaria. Puede haber:

  • Fallo parcial (se pierden ciertos ítems o hosts)

  • Fallo total (sin visibilidad ni recolección)

  • Caídas invisibles (aparente normalidad, sin datos confiables)

Este bloque enseña cómo rastrear las consecuencias de una falla, qué partes del sistema tienen buffering, y qué síntomas permiten detectar pérdidas reales.


🧠 Principio técnico clave

Solo los componentes con almacenamiento temporal (buffering) pueden mitigar una caída.

| Componente    | ¿Tiene buffering?     | ¿Cuánto puede almacenar?                     |

| ------------- | --------------------- | -------------------------------------------- |

| Zabbix Agent  | ❌ No                  | Ninguno                                      |

| Zabbix Proxy  | ✅ Sí (SQLite o MySQL) | Días, según configuración y disco disponible |

| Zabbix Server | ❌ No                  | Si se cae, no hay procesamiento              |

| Base de datos | ✅ Sí (por naturaleza) | Persistencia completa, si recibe los datos   |


Fallo del agente

Escenario:

  • El proceso zabbix_agentd se detiene en el host app01.

  • No se recolecta CPU, RAM, disco, procesos, logs.

🧨 Qué se pierde:

  • Todos los ítems del host configurados como Zabbix agent, agent (active) o log.

  • No hay buffering local → datos se pierden permanentemente.

  • No se disparan triggers dependientes de esos datos.

Cómo se detecta:

  • Gráficas vacías o con huecos.

  • nodata(600s) devuelve true.

  • last value de ítems muestra “No data”.

  • El trigger de "Agente sin respuesta" puede activarse si está definido:


nodata(/app01/system.cpu.util[,user],300)=1

Fallo del proxy

Escenario:

  • El proxy proxy-norte-01 pierde conexión con el Zabbix Server por 6 horas.

  • Sigue monitoreando hosts locales, pero no puede reenviar.

🧨 Qué se pierde:

  • Si el proxy tiene espacio suficiente, nada.

  • Si el disco o buffer local se llena, se pierden los datos más antiguos del lapso.

Cómo se detecta:

  • Gap de 6h en gráficas al revisar por hora.

  • Eventos generados con delay.

  • Tiempo de procesamiento de datos más alto (spike en escalator).

  • Logs del proxy muestran:


cannot send data to server: no route to host

queue is full, dropping oldest values

✅ Qué se conserva:

  • Triggers locales (si están habilitados en proxy)

  • Datos almacenados en disco (proxy_history.db, MySQL)

    La base del proxy actúa como amortiguador temporal. Su tamaño define cuánto puede resistir.


Fallo del Zabbix Server

Escenario:

  • El proceso zabbix_server se detiene por error en base de datos.

  • Sigue funcionando el frontend (por Apache/Nginx), pero no se procesan datos.

🧨 Qué se pierde:

  • Si el Server está inactivo, no se evalúan triggers, no se generan eventos, no se ejecutan acciones.

  • Los datos pueden seguir llegando desde agentes activos o proxies, pero quedan en espera.

  • Si la pausa es larga y no hay proxy → datos se pierden.

Cómo se detecta:

  • No aparecen nuevos eventos ni problemas.

  • Los ítems parecen estar actualizados, pero los triggers no se activan.

  • Acciones (correos, Telegram) no se ejecutan.

  • Log del Server muestra:


history syncers delayed

cannot connect to database

✅ Qué se conserva:

  • Datos que lleguen desde proxies siguen almacenándose ahí

  • Base de datos no se pierde si no hay corrupción


Fallo de la base de datos

Escenario:

  • PostgreSQL se cae o queda en estado “read-only”.

  • El server sigue ejecutando procesos, pero no puede guardar datos.

🧨 Qué se pierde:

  • Todo lo que ocurre mientras la DB está inactiva.

  • No se guarda: valores, eventos, triggers, acknowledgment, configuraciones.

Cómo se detecta:

  • En GUI: errores de SQL (PG::ConnectionBad)

  • En log del server:


cannot insert history data: connection lost

database is not accepting writes

✅ Qué se conserva:

  • Datos ya existentes siguen disponibles

  • Proxies siguen recolectando (si existen)


🧩 Tabla resumen de impacto por componente

| Componente caído  | ¿Se pierden datos?    | ¿Se pierden eventos? | ¿Se ejecutan acciones? | ¿Se pueden recuperar datos?           |

| ----------------- | --------------------- | -------------------- | ---------------------- | ------------------------------------- |

| Agente        | ✅ Sí                  | ✅ Sí                 | ✅ Sí                   | ❌ No, no hay buffer local             |

| Proxy         | ❌ No (si hay espacio) | ⚠️ Parcial (delay)   | ⚠️ Parcial             | ✅ Sí, si reenvía después              |

| Server        | ⚠️ Parcial            | ✅ Sí                 | ✅ Sí                   | ⚠️ Parcial, depende si proxy almacenó |

| Base de datos | ✅ Sí                  | ✅ Sí                 | ✅ Sí                   | ❌ No si no hubo backup ni proxy       |


🧪 Técnicas de verificación de pérdida

  1. Función nodata()

   * Detecta si un ítem no ha recibido datos en X segundos

   ```zabbix

   nodata(/servidorX/vfs.fs.size[/,free],600)=1

   ```

  1. Huecos en gráficas

   * Verifica si hay saltos temporales (no interpolados)

   * Útil en ítems de tipo Zabbix agent, SNMP, ping

  1. Líneas de tiempo

   * GUI → Monitoring → Problems → History

   * Ver si hay pausas largas sin eventos ni resoluciones

  1. Logs del proxy/server

   * Identifican si hay queue acumulada o pérdida de conexión

  1. Estado de proxy en GUI

   * Administration → Proxies → Última actualización

   * Si pasa de 1-2 minutos, está desconectado


🧠 Reflexión operativa

*Cada componente de Zabbix tiene un nivel de resiliencia diferente.

El operador que sabe lo que se pierde (y lo que no), puede evaluar si un incidente es grave, leve o invisible.*


✅ Resultado esperado

  • El operador puede detectar si se perdieron datos, eventos o acciones

  • Reconoce cuál fue el componente fallido y su impacto

  • Sabe cómo usar nodata(), gráficas y logs para verificar la integridad del monitoreo

  • Desarrolla pensamiento forense: no solo ver qué pasó, sino qué no se vio