Introducción a Zabbix 7.0 LTS: Arquitectura y Componentes del Ecosistema

Zabbix 7.0 LTS es una plataforma de monitoreo y observabilidad de infraestructura de código abierto y nivel empresarial, diseñada para recopilar, procesar y analizar métricas de rendimiento, disponibilidad y capacidad en tiempo real en entornos híbridos y multi-cloud. Mediante una arquitectura distribuida y desacoplada compuesta por un motor central en C/C++, una interfaz web en PHP, agentes nativos en Go/C y nodos proxy intermedios, Zabbix extrae telemetría mediante protocolos pasivos y activos (SNMP, IPMI, JMX, HTTP, agentes locales y scripts personalizados) para centralizar la gestión de eventos, automatizar la detección de problemas mediante reglas de disparadores (triggers) y predecir fallas operacionales, garantizando la continuidad del negocio y el cumplimiento de los Acuerdos de Nivel de Servicio (SLA).

Evolución y Estado Actual: Zabbix 7.0 LTS y su Paradigma de Observabilidad

La versión 7.0 LTS de Zabbix marca un hito en la madurez de la plataforma, consolidando su transición desde un sistema de monitoreo de estado tradicional hacia una solución integral de observabilidad distribuida. En las arquitecturas de TI modernas, caracterizadas por microservicios, contenedores Kubernetes y recursos efímeros en la nube, el monitoreo pasivo estático resulta insuficiente.

Novedades Clave en las Versiones Recientes de Zabbix

Las iteraciones recientes de la plataforma introducen capacidades diseñadas para responder a la densidad de datos y la velocidad de los entornos de TI actuales:

  • Navegación Sintética y Monitoreo Web Avanzado: Integración del motor Chromium headless para ejecutar pruebas sintéticas de experiencia de usuario (End-to-End) emulando interacciones complejas en aplicaciones web.
  • Detección de Anomalías y Análisis Predictivo: Algoritmos de aprendizaje automático e integración de funciones avanzadas como trendvalue() y modelos de regresión para anticipar el agotamiento de recursos antes de que ocurra un incidente.
  • Alta Disponibilidad (HA) Nativa e Híbrida: Módulos de clustering nativos tanto para Zabbix Server como para Zabbix Proxy, eliminando puntos únicos de falla (SPOF) sin necesidad de software de terceros como Pacemaker o Corosync.
  • Conectividad Asíncrona en Proxies: Rediseño del motor del proxy para soportar streaming de datos en tiempo real mediante subprocesos multihilo y concurrencia optimizada.

Visión General de la Arquitectura Distribuida de Zabbix

Zabbix no es un bloque monolítico; es un ecosistema modular donde cada componente cumple una función delimitada dentro del ciclo de vida de la telemetría: recolección, preprocesamiento, evaluación, almacenamiento, visualización y acción.

El Ciclo de Vida del Dato en Zabbix

El flujo de trabajo dentro de la arquitectura de Zabbix sigue un camino secuencial estricto diseñado para garantizar el menor impacto posible en el rendimiento del sistema inspeccionado:

  1. Origen y Extracción: Las métricas son generadas en el objetivo (host) y recolectadas por un agente, un protocolo sin agente (SNMP/HTTP) o un proxy.
  2. Transporte y Encriptación: Los datos viajan cifrados mediante TLS (con certificados X.509 o claves PSK) hacia el servidor o proxy.
  3. Preprocesamiento: El motor de preprocesamiento transforma la métrica cruda (normalización JSONPath, expresiones regulares, agregación o ejecución de JavaScript).
  4. Evaluación de Triggers: Se compara el valor procesado contra las expresiones lógicas del sistema para verificar si existe una anomalía o un problema.
  5. Persistencia: El dato se escribe en la base de datos central en la tabla de datos históricos (history).
  6. Acción y Notificación: Si se genera un evento de problema, el motor de acciones notifica a las plataformas de operaciones (PagerDuty, Slack, Webhooks, correo) o ejecuta comandos de autorremediación.

Zabbix Server: El Motor Core de Procesamiento

El Zabbix Server es el demonio central escrito en C/C++ que actúa como el núcleo neurálgico del ecosistema. Su función principal es recibir o solicitar datos, calcular las condiciones lógicas de las métricas y coordinar la ejecución de alertas y tareas de mantenimiento.

Procesos Internos y Subservicios del Server

Para gestionar miles de métricas por segundo (NVPS – New Values Per Second), el Zabbix Server divide su carga de trabajo en múltiples hilos de ejecución especializados:

  • Pollers (Pasivos y Activos): Subprocesos encargados de solicitar métricas a los agentes, dispositivos SNMP o endpoints HTTP a intervalos regulares.
  • Trapper Process: Hilos a la escucha en el puerto TCP 10051 que reciben datos entrantes enviados de forma activa por los Zabbix Agents, Zabbix Proxies o mediante la utilidad zabbix_sender.
  • Preprocessing Workers: Trabajos en paralelo dedicados a la transformación de datos antes de consultar el estado de los disparadores o escribir en la base de datos.
  • History Syncer: El proceso crítico encargado de vaciar la memoria caché de historia (History Cache) hacia el almacenamiento persistente de la base de datos en bloques optimizados.
  • Escalator y Action Manager: Módulos responsables de gestionar la lógica de escalación de alertas y la ejecución de comandos de remediación remota.

Gestión de Memoria Caché

El rendimiento de Zabbix Server depende directamente de su arquitectura de caché en RAM. Configurar adecuadamente estos parámetros en el archivo zabbix_server.conf evita operaciones I/O innecesarias en el disco:

  • ConfigurationCacheSize: Almacena la copia local de los hosts, ítems, triggers y plantillas para evitar consultas continuas a la base de datos durante el monitoreo.
  • HistoryCacheSize: Buffer RAM donde se depositan temporalmente las métricas recolectadas antes de ser escritas en disco por los History Syncers.
  • ValueCacheSize: Memoria caché de acceso ultra-rápido utilizada por el evaluador de expresiones de triggers para calcular funciones históricas (ejemplo: avg(), min(), max()).

Zabbix Web Frontend: La Interfaz de Gestión y Operación

El Frontend Web de Zabbix es una aplicación desarrollada en PHP que proporciona la interfaz visual para la administración del sistema, la configuración de entidades y la visualización de la telemetría en tiempo real.

Funcionalidades Principales de la Interfaz

  • Dashboards Personalizables: Paneles interactivos basados en widgets dinámicos (mapas de calor, gráficos de problemas, estado de servicios, métricas de miel y mapas topológicos).
  • Gestión de Control de Acceso Basado en Roles (RBAC): Permite definir permisos granulares a nivel de grupos de hosts, vistas de lectura, ejecución de acciones y administración del sistema.
  • Soporte para Single Sign-On (SSO): Integración nativa con proveedores de identidad empresariales mediante SAML 2.0, OpenID Connect (OIDC) y LDAP/Active Directory.
  • Consola de Geolocalización y Mapas: Representación gráfica de la topología de red y estados de infraestructura vinculados a coordenadas geográficas (GIS).

Comunicación mediante Zabbix API

Todo lo que se puede realizar a través de la interfaz web se puede automatizar mediante la Zabbix API. Basada en la especificación JSON-RPC 2.0, la API permite:

  • Aprovisionamiento automático de hosts (Infrastructure as Code) mediante herramientas como Ansible, Terraform o scripts personalizados.
  • Exportación de métricas y estados de eventos hacia plataformas externas de BI (Grafana, PowerBI) o herramientas ITSM (ServiceNow, Jira Service Management).
  • Integración de procesos CI/CD para activar o desactivar modos de mantenimiento durante despliegues de software.

La Base de Datos (Database Storage): El Repositorio Persistente

La base de datos es el único componente persistente del ecosistema Zabbix. Almacena la configuración estructural de la plataforma, los datos históricos de cada métrica (history) y las agregaciones estadísticas calculadas por hora (trends).

Motores de Base de Datos Soportados

Zabbix admite diversos motores de almacenamiento relacional, cada uno con características particulares para diferentes escalas de monitoreo:

Motor de Base de DatosMódulo de Extensión RecomendadoEscenario de Uso Ideal
PostgreSQLTimescaleDBEntornos Enterprise de gran escala (alta tasa de NVPS, optimización automática de series temporales).
MySQL / MariaDBPartitioning nativo (InnoDB)Despliegues medianos a grandes con particionamiento de tablas por fecha.
Oracle DatabaseN/AInfraestructuras corporativas estandarizadas sobre ecosistemas Oracle.
SQLite3N/AExclusivo para Zabbix Proxy en entornos livianos o remotos. No recomendado para Zabbix Server.

Estrategias de Mantenimiento: Housekeeper vs. Table Partitioning

Con el tiempo, las tablas de datos históricos pueden crecer exponencialmente, afectando el rendimiento del disco. Zabbix ofrece dos mecanismos para gestionar la retención de datos:

  • Proceso Housekeeper: Un hilo interno de Zabbix que ejecuta sentencias DELETE periódicas en la base de datos para borrar registros antiguos. Es adecuado para entornos pequeños, pero genera una carga I/O crítica en bases de datos con millones de registros.
  • Particionamiento de Tablas (Table Partitioning / TimescaleDB Hypertables): Estrategia recomendada para entornos de producción. La base de datos crea tablas físicas separadas por día o semana. La eliminación de datos antiguos se realiza mediante comandos DDL (DROP TABLE), lo cual es instantáneo y no consume recursos de I/O ni fragmenta los índices.

Zabbix Agent y Zabbix Agent 2: Colectores Locales de Telemetría

Los agentes son demonios diseñados para instalarse en los sistemas operativos huésped (Linux, Windows, macOS, Solaris, BSD) con el fin de extraer métricas locales de CPU, memoria, discos, procesos, red y aplicaciones.

Diferencias entre Zabbix Agent (C) y Zabbix Agent 2 (Go)

A partir de la evolución de la plataforma, Zabbix ofrece dos implementaciones de su agente nativo:

CaracterísticaZabbix Agent (Clásico)Zabbix Agent 2 (Moderno)
Lenguaje de ProgramaciónCGo (Golang)
Arquitectura de EjecuciónMultiproceso (un proceso por verificación)Multihilo / Goroutines (concurrencia nativa)
Sistema de PluginsEstático / Scripts externosDinámico y Extensible (Plugins nativos y externos en Go)
Conexiones PersistentesNo (crea y cierra conexiones TCP por ítem)Sí (mantiene pools de conexiones hacia servicios monitoreados)
Monitoreo Complejo (DBMS, K8s)Requiere scripts bash/python externosIntegrado mediante plugins nativos (Docker, Memcached, MySQL, etc.)

Modos de Operación: Agente Pasivo vs. Agente Activo

La recolección de datos mediante el agente puede configurarse en dos modalidades totalmente distintas:

Modo Pasivo (Passive Check)

El Zabbix Server o Proxy inicia la conexión TCP en el puerto 10050 del agente, solicita una métrica específica (ejemplo: system.cpu.load) y espera la respuesta. Es un esquema estilo polling donde el servidor tiene el control del intervalo de solicitud.

Modo Activo (Active Check)

El Agente Zabbix inicia la conexión TCP hacia el puerto 10051 del Zabbix Server o Proxy. Al arrancar, el agente solicita la lista de ítems que le corresponde medir, procesa las métricas localmente según el intervalo definido y envía los paquetes de datos formateados en JSON hacia el servidor de forma proactiva. Este modo reduce dramáticamente la carga del servidor y facilita el monitoreo de equipos detrás de firewalls o NAT.

Zabbix Proxy: Monitoreo Distribuido y Alta Escalabilidad

El Zabbix Proxy es un proceso independiente escrito en C que recopila datos de rendimiento y disponibilidad en representación del Zabbix Server. Funciona como un búfer o concentrador intermedio que amortigua la telemetría antes de enviarla al núcleo central.

Casos de Uso Principales del Proxy

  • Monitoreo de Sedes Remotas y Nubes Híbridas: Permite monitorear redes privadas, sucursales o VPCs en AWS/Azure sin necesidad de abrir múltiples puertos en el firewall; solo se requiere un puerto abierto entre el Proxy y el Server.
  • Offloading de Carga (Balanceo de Procesamiento): Asume la ejecución de comprobaciones sin agente (SNMP pings, consultas IPMI, peticiones HTTP y scripts) liberando los procesos Pollers del Zabbix Server central.
  • Tolerancia a Fallas de Conectividad (Network Buffering): El Proxy cuenta con una base de datos local (SQLite3, MySQL o PostgreSQL). Si el enlace de red entre el Proxy y el Zabbix Server se interrumpe, el Proxy continúa recolectando datos y los almacena localmente. Una vez restablecida la conexión, retransmite toda la acumulación histórica sin pérdida de datos.

Modos de Despliegue del Proxy: Activo vs. Pasivo

  • Proxy Activo (Recomendado): El Proxy se conecta periódicamente al Zabbix Server (puerto 10051) para descargar los datos de configuración y envía las métricas recolectadas de forma proactiva. Es la opción ideal para operar detrás de routers con NAT.
  • Proxy Pasivo: El Zabbix Server se conecta al Proxy (puerto 10051) para solicitar los datos acumulados. Requiere que el servidor tenga acceso directo IP/DNS hacia el Proxy.

Configuración y Conexión de Componentes en un Entorno Real

Para ilustrar el funcionamiento de una arquitectura Zabbix, a continuación se detallan las directrices técnicas esenciales para vincular los componentes dentro de una red de producción.

Requisitos de Puertos y Flujo de Red

Garantizar la conectividad requiere la apertura de los siguientes puertos estándar en los cortafuegos perimetrales y locales:

OrigenDestinoPuerto / ProtocoloDescripción del Tráfico
Zabbix Server / ProxyZabbix Agent10050 TCPComprobaciones Pasivas del Agente.
Zabbix Agent / ProxyZabbix Server / Proxy10051 TCPComprobaciones Activas, Traps y datos de Proxies.
Navegador Web del AdministradorFrontend Web80 / 443 TCPAcceso a la interfaz gráfica HTTP/HTTPS.
Zabbix Server / FrontendDatabase Storage5432 (Postgres) / 3306 (MySQL)Consultas SQL y persistencia de métricas.

Pasos de Configuración para Vincular un Zabbix Agent 2 a Zabbix Server

Siga esta secuencia para establecer una comunicación segura entre un servidor de aplicaciones monitoreado y el motor central:

  1. Edición del archivo de configuración del agente: Abra el archivo /etc/zabbix/zabbix_agent2.conf en el host de destino.
  2. Definición del Servidor para Comprobaciones Pasivas: Configure el parámetro Server=<IP_DEL_ZABBIX_SERVER_O_PROXY> para autorizar qué IPs pueden solicitar datos.
  3. Definición del Servidor para Comprobaciones Activas: Configure el parámetro ServerActive=<IP_DEL_ZABBIX_SERVER_O_PROXY>:10051 para especificar a dónde debe enviar las métricas activas.
  4. Identificación del Host (Hostname): Establezca el parámetro Hostname=servidor-web-prod-01. Este valor debe coincidir exactamente con el campo Host name registrado en el Frontend de Zabbix.
  5. Reinicio del Servicio: Reinicie el servicio del agente mediante el comando systemctl restart zabbix-agent2 y habilite su inicio automático con systemctl enable zabbix-agent2.
  6. Registro en el Frontend: Acceda a la interfaz web, navegue a Data collection -> Hosts -> Create host, ingrese el nombre del host, asígnele una plantilla estándar (ej. Linux by Zabbix agent) y configure su interfaz IP.

Resumen de Buenas Prácticas para Entornos Enterprise

Diseñar un entorno de monitoreo altamente disponible y eficiente exige aplicar las siguientes recomendaciones de arquitectura:

  • Despliegue siempre Zabbix Agent 2 en nuevos entornos Linux/Windows para aprovechar la concurrencia nativa en Go y reducir el uso de conexiones TCP.
  • Utilice Zabbix Proxies en modo activo para segmentar redes y evitar que el Zabbix Server realice sondeos directamente sobre redes remotas.
  • Implemente Partitioning de base de datos o TimescaleDB desde el primer día para prevenir la degradación de rendimiento causada por el proceso Housekeeper.
  • Asegure el 100% de las conexiones mediante Cifrado TLS/PSK en el paso de datos entre agentes, proxies y servidores.

🔥Tendencia🔥


Notas interesantes


Lo más reciente