Arquitectura, PostgreSQL y Nginx
Introducción e Infraestructura de Monitoreo con Zabbix 7.0 LTS
Zabbix 7.0 LTS es una solución de monitoreo de infraestructura distribuida de grado empresarial diseñada para la recolección, procesamiento y visualización en tiempo real de métricas provenientes de servidores, dispositivos de red, máquinas virtuales y aplicaciones en la nube. La instalación del stack completo de Zabbix Server en el sistema operativo Debian 12 (Bookworm) se realiza mediante la integración del motor de base de datos relacional PostgreSQL 15, el servidor web Nginx y el procesador PHP-FPM, garantizando un rendimiento optimizado frente a un elevado volumen de valores procesados por segundo (NVPS). Este despliegue proporciona visualización centralizada, un motor de alertas reactivo basado en disparadores sintácticos y capacidad de alta disponibilidad para entornos de producción con requerimientos críticos.
Requisitos Previos y Dimensionamiento de la Infraestructura
Antes de iniciar la instalación de los paquetes componentes del servidor de monitoreo, es fundamental dimensionar el hardware y verificar la configuración de red para evitar cuellos de botella en la capa de entrada/salida de disco (I/O) y en la memoria RAM asignada a las cachés del proceso principal.
Requisitos del Sistema Operativo y Hardware
Para una infraestructura base orientada a monitorear hasta 1,000 dispositivos con un rendimiento promedio de 1,500 métricas por segundo, se requieren las siguientes especificaciones mínimas:
- Sistema Operativo: Debian 12 (Bookworm) limpio (instalación minimal de 64 bits).
- Unidad Central de Procesamiento (CPU): 4 núcleos dedicados a 2.4 GHz o superior.
- Memoria RAM: 8 GB (mínimo 4 GB dedicados a la instancia de PostgreSQL y 2 GB a la caché de Zabbix).
- Almacenamiento: SSD NVMe de 100 GB con capacidad de IOPS elevadas para soportar inserciones masivas en las tablas de historial y tendencias.
- Privilegios de Usuario: Acceso a la cuenta
rooto usuario con privilegios elevados mediantesudo.
Matriz de Puertos de Red y Reglas de Firewall
Asegúrese de abrir los siguientes puertos en el firewall del sistema (NFTables o UFW) para permitir la comunicación bidireccional entre el servidor central, los agentes remotos y los administradores:
| Puerto | Protocolo | Origen / Destino | Función |
|---|---|---|---|
10051 | TCP | Agentes/Proxies → Server | Puerto pasivo/activo de comunicación del Zabbix Server. |
10050 | TCP | Server → Agente Zabbix | Puerto de escucha del Zabbix Agent / Agent 2 (monitoreo pasivo). |
80 / 443 | TCP | Cliente → Server Web | Acceso a la interfaz gráfica de usuario (GUI Frontend) vía HTTP/HTTPS. |
161 / 162 | UDP | Dispositivos → Server | Recolección de métricas mediante SNMP / SNMP Traps. |
Despliegue del Stack Zabbix 7.0 LTS en Debian 12 (Bookworm)
El siguiente procedimiento describe de manera secuencial la instalación de los repositorios oficiales, la configuración del motor PostgreSQL, la compilación de la base de datos de Zabbix y el despliegue del frontend web Nginx con PHP-FPM.
Paso 1. Configuración de Repositorios Oficiales de Zabbix
- Abra una terminal de comandos e inicie sesión como usuario con privilegios de superusuario.
- Descargue e instale el paquete de configuración del repositorio oficial de Zabbix versión 7.0 LTS para Debian 12:
wget https://repo.zabbix.com/zabbix/7.0/debian/pool/main/z/zabbix-release/zabbix-release_7.0-1+debian12_all.deb sudo dpkg -i zabbix-release_7.0-1+debian12_all.deb - Actualice los índices de los repositorios de paquetes del sistema operativo:
sudo apt update
Paso 2. Instalación del Servidor Zabbix, Interfaz Web y Agente
- Ejecute el comando de instalación para descargar Zabbix Server (con soporte PostgreSQL), la interfaz web, scripts SQL de inicialización, el servidor Nginx, la pila de PHP requerida y el Agente 2 de Zabbix:
sudo apt install -y zabbix-server-pgnd zabbix-frontend-php zabbix-sql-scripts zabbix-nginx-conf zabbix-agent2 postgresql postgresql-contrib
Paso 3. Instalación y Configuración del SGBD PostgreSQL
- Verifique que el servicio de PostgreSQL esté en ejecución y habilitado para iniciar en el arranque del sistema:
sudo systemctl enable --now postgresql - Acceda al interprete de comandos de PostgreSQL mediante el usuario del sistema
postgres:sudo -u postgres psql - Cree el usuario de base de datos
zabbixasignando una contraseña segura. Reemplace'TuPasswordSegura123!'por la clave real de producción:CREATE USER zabbix WITH PASSWORD 'TuPasswordSegura123!'; - Cree la base de datos nombrada
zabbixasignando como propietario al usuariozabbixy estableciendo la codificación en UTF-8:CREATE DATABASE zabbix OWNER zabbix ENCODING 'UTF8' LC_COLLATE 'C' LC_CTYPE 'C'; - Salga de la consola interactiva de PostgreSQL:
\q
Paso 4. Creación e Inicialización de la Base de Datos de Zabbix
- Importe el esquema inicial de tablas y los datos primarios en la base de datos
zabbixrecién creada. Este proceso solicitará la contraseña configurada en el paso anterior:zcat /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix - Deshabilite la opción de inicio de sesión sin contraseña en PostgreSQL o modifique el archivo de control de acceso si requiere autenticación explícita por socket local. Por defecto, el socket de PostgreSQL autenticará correctamente mediante la contraseña definida en el archivo de configuración del servidor.
Paso 5. Configuración del Archivo zabbix_server.conf
- Abra el archivo de configuración principal del servicio de Zabbix Server con un editor de texto:
sudo nano /etc/zabbix/zabbix_server.conf - Busque la directiva
DBPassword, elimine el símbolo de comentario (#) e ingrese la contraseña configurada en PostgreSQL:DBHost=localhost DBName=zabbix DBUser=zabbix DBPassword=TuPasswordSegura123! - Guarde los cambios presionando
Ctrl + O, confirme conEntery salga del editor conCtrl + X.
Paso 6. Configuración del Servidor Web Nginx y PHP-FPM
- Edite el archivo de configuración de Nginx proporcionado por el paquete de Zabbix:
sudo nano /etc/zabbix/nginx.conf - Descomente las directivas de puerto y nombre de servidor. Modifique las líneas para definir el puerto de escucha y la dirección IP o FQDN de su servidor:
listen 80; server_name monitoreo.tudominio.com; - Guarde el archivo y cierre el editor de texto.
- Ajuste los parámetros de tiempo de ejecución y zonas horarias en el archivo de configuración de PHP-FPM para Zabbix:
sudo nano /etc/zabbix/php-fpm.conf - Verifique que la variable de zona horaria esté ajustada a la ubicación correspondiente a su infraestructura (por ejemplo,
America/Mexico_CityoAmerica/Bogota):php_value[date.timezone] = America/Mexico_City
Paso 7. Inicios y Habilitación de Servicios del Sistema
- Reinicie y habilite los demonios de Zabbix Server, Zabbix Agent 2, Nginx y PHP-FPM para garantizar que inicien automáticamente durante el arranque del sistema operativo:
sudo systemctl restart zabbix-server zabbix-agent2 nginx php8.2-fpm sudo systemctl enable zabbix-server zabbix-agent2 nginx php8.2-fpm - Verifique el estado operativo del servicio principal de Zabbix Server para corroborar que no existan errores de conexión con PostgreSQL:
sudo systemctl status zabbix-server
Asistente de Configuración Web de Zabbix (Web GUI Setup)
Una vez iniciados los servicios de backend, debe completarse la instalación mediante la interfaz gráfica web accedida a través del navegador.
Paso 8. Ejecución del Wizard de Zabbix Frontend
- Abra un navegador web e ingrese la dirección IP o FQDN configurado en el servidor Nginx (por ejemplo,
http://192.168.1.100ohttp://monitoreo.tudominio.com). - Pantalla de bienvenida: Verifique que el idioma esté configurado en Español y haga clic en «Paso siguiente» (Next step).
- Comprobación de requisitos previos: Confirme que todos los parámetros de PHP (memory_limit, post_max_size, upload_max_filesize, max_execution_time, max_input_time) muestren el estado
OKen color verde. Haga clic en «Paso siguiente». - Configuración de la conexión a la base de datos:
- Tipo de base de datos: PostgreSQL
- Host de la base de datos:
localhost - Puerto de la base de datos:
0(utilizará el puerto predeterminado 5432) - Nombre de la base de datos:
zabbix - Usuario:
zabbix - Contraseña:
TuPasswordSegura123!
- Configuración del servidor de Zabbix: Asigne un nombre descriptivo al nodo en la casilla Zabbix server name (por ejemplo,
Zabbix-PROD-Debian12) y configure la zona horaria predeterminada de la interfaz. - Resumen del pre-instalador: Revise todos los parámetros de configuración y presione «Paso siguiente». El sistema generará automáticamente el archivo de configuración
/etc/zabbix/web/zabbix.conf.php. - Finalización: Haga clic en «Finalizar». Se desplegará la pantalla de autenticación.
- Credenciales predeterminadas de acceso:
- Usuario:
Admin - Contraseña:
zabbix
- Usuario:
RECOMENDACIÓN CRÍTICA DE SEGURIDAD: Inmediatamente después de iniciar sesión por primera vez, diríjase al menú User Settings → Profile o a la sección Administration → Users y cambie la contraseña del usuario
Adminpara prevenir accesos no autorizados a la infraestructura de monitoreo.
Optimización del Rendimiento y Parámetros del Kernel Linux
En entornos de alto rendimiento con procesamiento masivo de datos, las configuraciones predeterminadas del sistema operativo Debian 12 y de los búferes internos de Zabbix resultan insuficientes. Aplique los siguientes ajustes de kernel y tuning del archivo zabbix_server.conf.
Configuración de Parámetros sysctl para Memoria Compartida y Enlaces
- Cree un archivo de configuración personalizado para sysctl en la ruta del sistema:
sudo nano /etc/sysctl.d/99-zabbix-performance.conf - Agregue las siguientes líneas para incrementar los límites de memoria compartida, el tamaño de la cola de backlog de red y el rango de puertos efímeros:
# Incrementar límites de memoria compartida para cachés masivas kernel.shmmax = 2147483648 kernel.shmall = 524288 # Optimización de la pila TCP/IP para conexiones masivas de agentes net.core.somaxconn = 4096 net.ipv4.tcp_max_syn_backlog = 4096 net.ipv4.ip_local_port_range = 1024 65535 # Reducir el uso agresivo de memoria SWAP vm.swappiness = 10 - Aplique las nuevas reglas de sysctl sin necesidad de reiniciar el servidor:
sudo sysctl --system
Ajustes de Caché en Zabbix Server
- Edite el archivo
/etc/zabbix/zabbix_server.conf:sudo nano /etc/zabbix/zabbix_server.conf - Modifique y des-comente las siguientes directivas para adecuar los valores de memoria en función de la disponibilidad de RAM del servidor:
# Tamaño de memoria compartida para almacenar datos de configuración (Muestras, Hosts, Ítems) CacheSize=512M # Tamaños para almacenamiento en memoria de métricas de historial y tendencias antes de escribir en PostgreSQL HistoryCacheSize=128M HistoryIndexCacheSize=64M TrendCacheSize=64M ValueCacheSize=256M # Incremento de procesos recolectores de datos (Pollers) StartPollers=20 StartPollersUnreachable=10 StartTrappers=10 StartPingers=10 StartHTTPPollers=10 - Reinicie el proceso del servidor Zabbix para aplicar las asignaciones de memoria compartida:
sudo systemctl restart zabbix-server
Monitoreo Inicial: Instalación y Configuración de Zabbix Agent 2 en Debian
El Zabbix Agent 2 es una reescritura moderna del agente clásico desarrollada en lenguaje Go. Permite la recolección paralela de métricas mediante plugins modulares, reduciendo el consumo de recursos en el sistema cliente y eliminando el overhead de múltiples subprocesos creados por conexión.
Paso 1. Instalación del paquete zabbix-agent2
- En el servidor cliente corriendo Debian (o en el propio Zabbix Server para auto-monitoreo), instale el paquete oficial:
sudo apt update sudo apt install -y zabbix-agent2
Paso 2. Ajuste del archivo de configuración zabbix_agent2.conf
- Abra el archivo de configuración del Agente 2:
sudo nano /etc/zabbix/zabbix_agent2.conf - Ajuste las directivas de comunicación apuntando hacia la IP o FQDN del Zabbix Server principal:
# Servidor autorizado para consultas pasivas (pollers del Server) Server=127.0.0.1, 192.168.1.100 # Servidor autorizado para recibir métricas activas ServerActive=192.168.1.100 # Nombre único del host que coincide exactamente con el Hostname en la interfaz web de Zabbix Hostname=Zabbix-PROD-Debian12 - Guarde los cambios y cierre el editor de texto.
- Reinicie y habilite el servicio del Agente 2:
sudo systemctl restart zabbix-agent2 sudo systemctl enable zabbix-agent2
Paso 3. Verificación de Conectividad con zabbix_get
- Desde el servidor central donde se encuentra Zabbix Server, instale la herramienta CLI de diagnóstico
zabbix-get:sudo apt install -y zabbix-get - Ejecute una consulta pasiva directa hacia el agente instalado para solicitar el tiempo de actividad del sistema (
system.uptime):zabbix_get -s 127.0.0.1 -k system.uptime - Si la configuración es correcta y el puerto TCP 10050 no está bloqueado por el firewall, la consola devolverá un número entero positivo correspondiente a los segundos de operación ininterrumpida del host.
Conclusiones y Mantenimiento de la Infraestructura Base
El despliegue de Zabbix 7.0 LTS en Debian 12 utilizando la combinación de PostgreSQL, Nginx y PHP-FPM constituye una base sólida, altamente estable y escalable para la supervisión de infraestructuras tecnológicas. La implementación del Zabbix Agent 2 garantiza una captura eficiente de métricas del sistema operativo, mientras que la optimización de los parámetros de memoria compartida previene la pérdida de datos ante picos de tráfico.
Para mantener la integridad operativa del sistema a largo plazo, se recomienda establecer tareas programadas para el mantenimiento de PostgreSQL (vacuum diario en tablas de historial), implementar políticas de particionamiento de base de datos para la retención eficiente de datos antiguos y habilitar cifrado TLS en las comunicaciones entre el servidor central y los agentes remotos mediante certificados PSK o PKI.








