Instalación de Zabbix Server en un VPS: Monitorización y Alertas Completas
TL;DR
En esta guía detallada, configuraremos paso a paso Zabbix Server versión 7.0 LTS en el sistema operativo Ubuntu Server 24.04 LTS, utilizando PostgreSQL 16, Nginx y PHP 8.3. Aprenderá a instalar todos los componentes necesarios, configurarlos para un funcionamiento óptimo, garantizar la seguridad y configurar la monitorización básica para obtener un sistema potente y flexible para rastrear el estado de sus servidores y aplicaciones.
- Instalaremos Zabbix Server 7.0 LTS en Ubuntu Server 24.04 LTS.
- Configuraremos la base de datos PostgreSQL 16 para almacenar los datos de Zabbix.
- Desplegaremos la interfaz web de Zabbix utilizando Nginx y PHP 8.3.
- Garantizaremos la seguridad básica del servidor con UFW y Fail2ban.
- Configuraremos copias de seguridad automáticas de los datos clave de Zabbix.
- Analizaremos problemas típicos y cómo solucionarlos.
Qué configuramos y por qué
Instalaremos Zabbix Server, un sistema de monitorización potente, versátil y completamente gratuito de código abierto. Zabbix permite recopilar datos sobre el rendimiento y la disponibilidad de prácticamente cualquier dispositivo de red, servidor, máquina virtual, servicio en la nube y aplicación. Puede monitorizar miles de métricas diferentes, como la carga de CPU, el uso de memoria, el espacio en disco, el tráfico de red, el estado de los procesos, los registros de aplicaciones y mucho más.
Al final, el lector obtendrá un sistema de monitorización completamente funcional, capaz de recopilar datos, visualizarlos en paneles, analizar tendencias y, lo más importante, generar alertas cuando los parámetros excedan los límites establecidos. Esto permitirá reaccionar rápidamente a los problemas antes de que afecten a los usuarios finales y mantener un alto nivel de disponibilidad de sus servicios.
Existen diferentes enfoques para la monitorización. Se pueden utilizar soluciones gestionadas en la nube (por ejemplo, AWS CloudWatch, Google Cloud Monitoring, Datadog), que ofrecen comodidad y escalabilidad por una tarifa de suscripción. Sin embargo, el despliegue de Zabbix en su propio VPS o servidor dedicado tiene varias ventajas:
- Control total: Usted controla completamente los datos, la configuración y la seguridad.
- Ahorro: No hay pagos mensuales por la monitorización, solo se paga por el propio servidor.
- Flexibilidad: Posibilidad de una profunda personalización para las necesidades específicas de su infraestructura.
- Privacidad: Sus datos de monitorización no abandonan su infraestructura, lo cual es crítico para algunos proyectos.
Así, Zabbix en un VPS es una solución ideal para quienes buscan una herramienta de monitorización potente, flexible y económicamente eficiente con control total sobre los datos.
Qué configuración de VPS se necesita para esta tarea
La elección de la configuración del VPS para Zabbix Server depende de la escala de monitorización. Cuantos más dispositivos, elementos de datos (items) y disparadores planee monitorizar, más potente deberá ser el servidor. Zabbix consume bastantes recursos, especialmente su base de datos, por lo que no debe escatimar en ellos.
Requisitos mínimos para Zabbix Server (para una infraestructura pequeña, hasta 50 dispositivos):
- CPU: 2 vCPU. Zabbix Server utiliza activamente el procesador para procesar datos y realizar comprobaciones.
- RAM: 4 GB. La memoria RAM es crítica para la base de datos (PostgreSQL o MySQL) y los procesos de Zabbix Server.
- Disco: 80 GB SSD. El SSD acelera significativamente el funcionamiento de la base de datos, lo cual es importante para el rendimiento de Zabbix. El volumen depende de la profundidad de almacenamiento del historial de datos.
- Red: 100 Mbit/s o 1 Gbit/s. Para la transferencia de datos desde los agentes y el acceso a la interfaz web.
Plan de VPS recomendado para tareas medianas (hasta 200 dispositivos, varios miles de métricas):
Para tareas más serias, donde se requiere monitorizar hasta 200 dispositivos con una recopilación frecuente de datos, se necesitan recursos más potentes. Por ejemplo, se puede optar por un VPS con 4 vCPU, 8 GB de RAM y 200 GB de SSD. Esto garantizará un funcionamiento estable de Zabbix, permitirá almacenar más información histórica y procesar más solicitudes sin demoras. Asegúrese de que su proveedor ofrezca un disco SSD estable y rápido (NVMe es preferible) y suficiente ancho de banda de red.
Cuándo se necesita un servidor dedicado en lugar de un VPS
Un servidor dedicado es preferible cuando:
- Infraestructura muy grande: Monitorización de cientos o miles de dispositivos, recopilación de millones de métricas por minuto.
- Almacenamiento de datos a largo plazo: Necesidad de almacenar el historial de datos durante años, lo que requiere terabytes de espacio en disco.
- Alto rendimiento de la base de datos: Un VPS puede tener limitaciones de IOPS, lo cual es crítico para bases de datos Zabbix de alta carga. Un servidor dedicado ofrece un rendimiento garantizado del subsistema de disco.
- Requisitos de aislamiento: Aislamiento físico completo de otros clientes del proveedor.
Para la mayoría de las tareas, especialmente en la etapa inicial, un VPS potente será suficiente, pero a medida que la infraestructura crezca, se debe considerar la transición a un servidor dedicado.
Ubicación: en qué influye
La elección de la ubicación del VPS también es importante:
- Latencia: Ubicación de Zabbix Server lo más cerca posible de los objetos monitorizados (agentes) para minimizar las latencias en la recopilación de datos. Una latencia alta puede provocar falsos disparos de los triggers o la omisión de la recopilación de métricas.
- Distribución geográfica: Si su infraestructura está distribuida en diferentes continentes, considere la posibilidad de desplegar varios Zabbix Proxy en las regiones para recopilar datos y luego transferirlos al Zabbix Server central.
- Legislación: Tenga en cuenta las leyes de almacenamiento de datos en la ubicación seleccionada, si esto es crítico para su proyecto.
Preparación del servidor
Antes de instalar Zabbix, es necesario realizar una configuración básica de seguridad y actualizar el sistema operativo. Utilizaremos Ubuntu Server 24.04 LTS.
1. Conexión por SSH y creación de usuario
Conéctese a su VPS por SSH como usuario root o el usuario proporcionado por el proveedor de hosting. Luego, cree un nuevo usuario con privilegios limitados para el trabajo diario y agréguelo al grupo sudo.
# Creamos un nuevo usuario (reemplace 'youruser' con el nombre deseado)
sudo adduser youruser
# Añadimos el usuario al grupo sudo
sudo usermod -aG sudo youruser
# Cambiamos al nuevo usuario
su - youruser
En adelante, todos los comandos se ejecutarán como este usuario utilizando sudo.
2. Actualización del sistema
Siempre comience actualizando la lista de paquetes y el sistema en sí para asegurarse de que tiene las últimas versiones de todos los componentes y parches de seguridad instalados.
# Actualizamos la lista de paquetes
sudo apt update
# Actualizamos los paquetes instalados
sudo apt upgrade -y
# Reiniciamos el servidor si se requiere una actualización del kernel
sudo reboot
Después de reiniciar, conéctese de nuevo por SSH.
3. Configuración del firewall (UFW)
Habilite Uncomplicated Firewall (UFW) y permita solo los puertos necesarios. Para Zabbix, necesitaremos SSH (puerto 22), HTTP (puerto 80) y HTTPS (puerto 443), así como el puerto de Zabbix Server (10051) y Zabbix Agent (10050) para la interacción con el propio servidor y los agentes.
# Permitimos SSH (puerto 22)
sudo ufw allow ssh
# Permitimos HTTP (puerto 80)
sudo ufw allow http
# Permitimos HTTPS (puerto 443)
sudo ufw allow https
# Permitimos el puerto de Zabbix Server (para conexiones entrantes de agentes/proxies)
sudo ufw allow 10051/tcp
# Permitimos el puerto de Zabbix Agent (si Zabbix Agent se instalará en este mismo servidor y lo monitorizará)
sudo ufw allow 10050/tcp
# Habilitamos UFW
sudo ufw enable
Confirme la activación del firewall escribiendo y. Puede verificar el estado de UFW con el comando sudo ufw status.
4. Instalación de Fail2ban
Fail2ban ayuda a proteger el servidor contra ataques de fuerza bruta, bloqueando las direcciones IP que realizan demasiados intentos fallidos de inicio de sesión.
# Instalamos Fail2ban
sudo apt install fail2ban -y
# Habilitamos e iniciamos el servicio Fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
Fail2ban está configurado por defecto para proteger SSH. Puede añadir reglas adicionales si es necesario.
5. Instalación de utilidades básicas
Instale algunas utilidades útiles que le serán de ayuda durante el proceso de configuración y administración.
# Instalamos curl, wget, git, htop, nano
sudo apt install curl wget git htop nano -y
Instalación de software — paso a paso
Instalación de software — paso a paso
En esta sección, instalaremos todos los componentes necesarios para el funcionamiento de Zabbix Server 7.0 LTS: el servidor de base de datos PostgreSQL 16, el servidor web Nginx, PHP 8.3 y, de hecho, el propio Zabbix Server.
1. Instalación de PostgreSQL Server 16
Zabbix puede utilizar varias bases de datos, pero PostgreSQL es una excelente opción por su rendimiento y fiabilidad. Ubuntu 24.04 LTS viene con PostgreSQL 16.
# Instalamos PostgreSQL 16 y módulos adicionales
sudo apt install postgresql postgresql-contrib -y
# Verificamos el estado del servicio PostgreSQL
sudo systemctl status postgresql
Asegúrese de que el servicio esté en ejecución y activo.
2. Creación de la base de datos y el usuario Zabbix
Crearemos una nueva base de datos y un usuario de PostgreSQL específicamente para Zabbix, y también estableceremos una contraseña para este usuario. ¡Use una contraseña segura!
# Cambiamos al usuario postgres para trabajar con la BD
sudo -u postgres psql
# Creamos la base de datos zabbix
CREATE DATABASE zabbix ENCODING 'UTF8' LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8' TEMPLATE template0;
# Creamos el usuario zabbix y establecemos la contraseña (reemplace 'your_db_password' por una contraseña segura)
CREATE USER zabbix WITH PASSWORD 'your_db_password';
# Otorgamos todos los privilegios al usuario zabbix para la base de datos zabbix
GRANT ALL PRIVILEGES ON DATABASE zabbix TO zabbix;
# Salimos de psql
\q
3. Instalación de Zabbix Server 7.0 LTS
Agregaremos el repositorio oficial de Zabbix para Ubuntu 24.04 e instalaremos los paquetes necesarios.
# Descargamos e instalamos el repositorio de Zabbix 7.0 LTS para Ubuntu 24.04
wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_7.0-1+ubuntu24.04_all.deb
sudo dpkg -i zabbix-release_7.0-1+ubuntu24.04_all.deb
# Actualizamos la lista de paquetes después de agregar el repositorio
sudo apt update
# Instalamos Zabbix Server con soporte para PostgreSQL, Zabbix Frontend con Nginx y Zabbix Agent
sudo apt install zabbix-server-pgsql zabbix-frontend-php zabbix-nginx-conf zabbix-agent -y
Este comando instalará Zabbix Server, la interfaz web, la configuración de Nginx para Zabbix y Zabbix Agent (que monitoreará el propio servidor Zabbix).
4. Importación del esquema inicial de la base de datos
Ahora es necesario importar el esquema inicial y los datos de Zabbix a la base de datos creada. Cuando se le solicite la contraseña, introduzca la contraseña del usuario zabbix que estableció anteriormente.
# Importamos el esquema y los datos (se solicitará la contraseña del usuario zabbix)
sudo -u zabbix psql -h localhost zabbix < /usr/share/zabbix-sql-scripts/postgresql/server.sql
Si el comando se ejecuta sin errores, el esquema de la base de datos de Zabbix se importará correctamente.
5. Configuración de PHP para Zabbix Frontend
Zabbix Frontend requiere ciertas configuraciones de PHP. Por defecto, Zabbix-Nginx-Conf instala PHP-FPM, pero necesitamos asegurarnos de que todos los parámetros cumplan con los requisitos.
# Abrimos el archivo de configuración de PHP-FPM (para PHP 8.3)
sudo nano /etc/php/8.3/fpm/php.ini
Encuentre y modifique (o añada, si no existen) los siguientes parámetros:
max_execution_time = 300
max_input_time = 300
memory_limit = 256M
post_max_size = 16M
upload_max_filesize = 16M
date.timezone = Europe/Moscow ; Reemplace con su zona horaria
Guarde los cambios (Ctrl+O, Enter, Ctrl+X).
6. Configuración de Nginx
El paquete zabbix-nginx-conf ya ha proporcionado un archivo de configuración para Nginx. Normalmente se encuentra en /etc/nginx/conf.d/zabbix.conf o /etc/nginx/sites-available/zabbix.conf. Asegúrese de que Nginx esté configurado para escuchar el puerto correcto de PHP-FPM.
# Verificamos el archivo de configuración de Nginx para Zabbix
sudo nano /etc/nginx/conf.d/zabbix.conf
Asegúrese de que la sección location ~ \.php$ apunte al socket PHP-FPM correcto (para PHP 8.3, esto suele ser /run/php/php8.3-fpm.sock):
# Ejemplo del contenido de zabbix.conf (asegúrese de que fastcgi_pass coincida con su versión de PHP)
server {
listen 80;
server_name your_domain_or_ip; # Reemplace con la IP de su VPS o nombre de dominio
root /usr/share/zabbix;
index index.php;
location / {
try_files $uri $uri/ =404;
}
location ~ /\.ht {
deny all;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.3-fpm.sock; # Asegúrese de que esto coincida con su versión de PHP-FPM
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
}
}
Guarde los cambios, si los hubo.