Instalar Zabbix 7.0 LTS en Ubuntu 24.04
Guía para instalar Zabbix 7.0 LTS en Ubuntu 24.04: repositorio, esquema MySQL, nginx y agent2, con soluciones a los errores habituales del asistente.
Qué va a implementar
Un único VPS con Ubuntu 24.04 que ejecuta toda la pila de Zabbix 7.0 LTS: el demonio zabbix-server, que sondea los sistemas y genera alertas; una base de datos MariaDB/MySQL, que almacena todas las métricas; un frontend PHP servido por nginx; y zabbix-agent2, que recopila métricas del propio servidor. Cuando esté operativo, podrá apuntarlo a un segundo servidor, asociar una plantilla y recibir un correo en cuanto se llene un disco o se detenga un servicio.
Zabbix requiere más recursos que una herramienta de página de estado: es un sistema de series temporales en tiempo real con plantillas, triggers, escalado y retención del historial. La mayoría de los problemas se concentra en tres pasos que suelen omitirse: importar el esquema de la base de datos, establecer la contraseña de la base de datos que realmente lee el servidor y quitar los comentarios de dos líneas en la configuración de nginx. Si esos pasos son correctos, el resto se completa mediante un asistente. Si sólo necesita comprobaciones de disponibilidad y una página de estado que pueda compartir, un monitor de estado ligero como Uptime Kuma lo hace en un contenedor; Zabbix compensa sus requisitos cuando necesita umbrales por métrica y escalado para muchos hosts.
Use la línea 7.0 LTS: el servidor, el frontend, agent2 y el esquema tienen versiones coordinadas, y reciben correcciones de seguridad durante años. Antes de copiar el nombre del archivo del repositorio que aparece abajo, consulte brevemente la página oficial de descargas de Zabbix. El paquete de versión latest siempre apunta a la versión de mantenimiento más reciente de 7.0, pero si prefiere fijar una compilación 7.0-N exacta, la página también muestra ese nombre de archivo. Todos los demás comandos de esta guía son estables en toda la línea 7.0.
Dimensionamiento, puertos y requisitos previos
Suponga un VPS KVM nuevo con Ubuntu 24.04 y acceso como root o mediante sudo. Sea realista con los recursos: 2 GB de RAM y 2 vCPU son el mínimo práctico para ejecutar el servidor, la base de datos, nginx y PHP en un mismo equipo que monitoriza varios hosts. Un equipo con 1 GB arranca, pero la base de datos se queda sin recursos a medida que crece el histórico. Planifique 4 GB cuando supere varias decenas de hosts y, por encima de 100, traslade la base de datos a su propio servidor. El uso de disco aumenta según el número de elementos que recopile y el tiempo durante el que conserve el histórico. Reserve unos pocos gigabytes al principio. El housekeeper elimina los datos antiguos según los periodos de retención configurados.
Puertos: 80 y 443 para el frontend, públicos o restringidos a su propia IP. El servidor escucha en TCP 10051 para recibir los datos que envían los agentes activos, y cada agente escucha en TCP 10050 para que el servidor pueda consultarlo. Si hay un firewall delante, abra sólo los puertos que exponga. Conviene tener un registro DNS A para el frontend, porque necesitará un certificado válido. Un servidor Zabbix monitoriza todos los demás servicios que ejecuta, por lo que forma parte de la pila más amplia de servicios autoalojados que conviene ejecutar en 2026 y no debe añadirse como una solución improvisada.
Paso 1. Añadir el repositorio oficial de Zabbix 7.0
El paquete zabbix-release hace una sola cosa: coloca en el sistema la lista de fuentes de apt y la clave de firma. Instálelo y, después, actualice el índice.
wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0+ubuntu24.04_all.deb
sudo dpkg -i zabbix-release_latest_7.0+ubuntu24.04_all.deb
sudo apt updateSi wget devuelve 404 Not Found, el nombre del archivo ha cambiado. Abra la página de descargas de Zabbix, seleccione Ubuntu 24.04 y copie la URL exacta de zabbix-release que muestra. Un apt update limpio muestra una línea repo.zabbix.com y ninguna advertencia sobre la clave. The following signatures couldn't be verified because the public key is not available significa que el paquete de la versión no instaló su clave. Vuelva a ejecutar dpkg -i y actualice de nuevo.
Paso 2, instalar el servidor, el frontend y el agente
Instale de una vez el servidor compilado para MySQL, el frontend PHP, la configuración de nginx, los archivos de esquema SQL y agent2.
sudo apt install -y zabbix-server-mysql zabbix-frontend-php \
zabbix-nginx-conf zabbix-sql-scripts zabbix-agent2zabbix-server-mysql es el servidor compilado para MySQL/MariaDB; para PostgreSQL, instale zabbix-server-pgsql y ajuste los pasos de la base de datos que aparecen más abajo. zabbix-sql-scripts contiene el esquema que importará a continuación. En 7.0 es un paquete independiente, y olvidarlo es precisamente la causa de que la ruta de importación no aparezca más adelante. Ninguno de estos paquetes instala un motor de base de datos, así que instale MariaDB ahora si el servidor aún no tiene uno.
sudo apt install -y mariadb-server
sudo systemctl enable --now mariadbPaso 3: Cree la base de datos con el juego de caracteres correcto
Zabbix aplica requisitos estrictos a la intercalación: la base de datos debe ser utf8mb4 con utf8mb4_bin, o la importación falla a mitad del proceso con errores de claves foráneas. Abra una shell de root con sudo mysql y ejecute:
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER zabbix@localhost IDENTIFIED BY 'choose-a-strong-password';
GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@localhost;
SET GLOBAL log_bin_trust_function_creators = 1;
FLUSH PRIVILEGES;La línea SET GLOBAL actúa como mecanismo de seguridad para la importación. El esquema de Zabbix crea funciones almacenadas, y una cuenta que no sea SUPER, como zabbix, no puede crearlas mientras el registro binario está habilitado. MySQL 8 habilita el registro binario de forma predeterminada, y algunas compilaciones administradas de MariaDB también lo hacen (MariaDB estándar no). Omita el indicador en un servidor con el registro binario habilitado y la importación se detendrá con ERROR 1419 (HY000): You do not have the SUPER privilege and binary logging is enabled. Al establecerlo como root se resuelve el problema; vuelva a desactivarlo después de la importación. Anote la contraseña exactamente: la configuración del servidor necesita la misma cadena byte por byte.
Paso 4: importar el esquema (el paso que se omite)
Esta es la causa más habitual por la que una interfaz frontend recién instalada no carga: la base de datos que creó está vacía. Cargue en ella el esquema incluido en zabbix-sql-scripts.
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | \
mysql --default-character-set=utf8mb4 -uzabbix -p zabbixSolicita la contraseña de zabbix, tarda entre treinta y sesenta segundos en un VPS pequeño y no muestra nada si termina correctamente. En este caso, que no haya salida es normal. zcat: /usr/share/zabbix-sql-scripts/mysql/server.sql.gz: No such file or directory indica que el paquete zabbix-sql-scripts no está instalado (vuelva al paso 2). ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' indica que la contraseña o la concesión del paso 3 son incorrectas. Cuando termine, vuelva a desactivar el indicador de seguridad:
sudo mysql -e "SET GLOBAL log_bin_trust_function_creators = 0;"Confirme la carga con sudo mysql -e "SELECT COUNT(*) FROM zabbix.users;". Un número, y no un error de doesn't exist, indica que el esquema se ha cargado.
Paso 5: establezca la contraseña de la base de datos en zabbix_server.conf
El servidor lee las credenciales de la base de datos desde /etc/zabbix/zabbix_server.conf. Sólo debe establecer la contraseña; DBName y DBUser ya tienen zabbix como valor predeterminado. Quite el comentario de la línea # DBPassword= y establezca su valor:
DBName=zabbix
DBUser=zabbix
DBPassword=choose-a-strong-passwordLa contraseña debe coincidir byte por byte con la de Step 3. Un DBPassword vacío o incorrecto es la causa más frecuente del aviso «Zabbix server is not running» que verá más adelante: el daemon se inicia, no puede iniciar sesión y termina. No se muestra ninguna indicación en pantalla. Sólo aparece en el registro.
Paso 6: Indicar a nginx el frontend
El paquete zabbix-nginx-conf instala un bloque de servidor en /etc/zabbix/nginx.conf y lo enlaza en nginx desde /etc/nginx/conf.d/zabbix.conf, pero incluye las líneas listen y server_name comentadas. Por eso, nginx no sirve nada para Zabbix hasta que las edite:
server {
listen 80;
server_name zabbix.example.com;
...
}Use su dominio o la IP pública del servidor si todavía no tiene DNS. Hay dos problemas frecuentes. El sitio de bienvenida predeterminado de Ubuntu también escucha en el puerto 80 y está marcado como servidor predeterminado. Por tanto, responde a cualquier petición cuyo nombre no coincida con otro bloque. Elimínelo para evitar que se cargue la página incorrecta: sudo rm -f /etc/nginx/sites-enabled/default. Si /etc/nginx/conf.d/zabbix.conf no existe por algún motivo, algo habitual en ciertos paquetes, cree el enlace manualmente con sudo ln -s /etc/zabbix/nginx.conf /etc/nginx/conf.d/zabbix.conf. Después, pruebe la configuración y recargue nginx:
sudo nginx -t
sudo systemctl reload nginxnginx -t debería mostrar test is successful. Si muestra nginx: [emerg] a duplicate default server for 0.0.0.0:80, tanto el sitio predeterminado como el bloque de Zabbix reclaman default_server. Elimine el sitio predeterminado y vuelva a probar. Con más frecuencia, la prueba se completa y muestra sólo una advertencia conflicting server name, pero el navegador sigue mostrando la página de bienvenida estándar. Esto significa que el sitio predeterminado está atendiendo un nombre que no coincide con ningún bloque. Al eliminarlo se corrige el problema.
Paso 7: Iniciar y habilitar los servicios
Inicie el servidor, el agente, PHP-FPM y nginx, y habilítelos para que sigan activos después de un reinicio.
sudo systemctl restart zabbix-server zabbix-agent2 nginx php8.3-fpm
sudo systemctl enable zabbix-server zabbix-agent2 nginx php8.3-fpmUbuntu 24.04 incluye PHP 8.3, por lo que el servicio FPM es php8.3-fpm; el paquete zabbix-nginx-conf ejecuta su frontend bajo ese mismo proceso maestro. Confirme que el servidor se haya iniciado y siga activo:
sudo systemctl status zabbix-server --no-pager
sudo tail -n 20 /var/log/zabbix/zabbix_server.logUn registro correcto termina con el servidor iniciado y sus procesos housekeeper, poller y trapper en ejecución. Si aparece [Z3001] connection to database 'zabbix' failed: [1045] Access denied for user 'zabbix'@'localhost', el DBPassword del paso 5 no coincide; corríjalo y reinicie. Una línea [Z3005] query failed: [1146] Table 'zabbix.dbversion' doesn't exist indica que omitió la importación del esquema en el paso 4, por lo que el servidor no tiene datos que leer.
Paso 8, complete el asistente de configuración web
Vaya a http://your-domain-or-ip. Se abrirá el asistente de configuración de Zabbix. Siga estos pasos:
- Bienvenida, seleccione un idioma.
- Comprobación de requisitos previos, todas las filas deben mostrar OK desde el principio; el pool
/etc/zabbix/php-fpm.confincluido en el paquete ya aumenta los límites de PHP que necesita Zabbix. - Configuración de la conexión a la base de datos, seleccione MySQL como tipo de base de datos, use
localhostcomo host,0como puerto (lo que significa el puerto o socket predeterminado),zabbixcomo nombre de la base de datos yzabbixcomo usuario. Introduzca la contraseña del paso 3. Las credenciales incorrectas o la ausencia del esquema se detectan aquí. - Configuración, mantenga el host del servidor Zabbix
localhost, el puerto10051y asigne un nombre a la instalación. - Resumen previo a la instalación, después seleccione Instalar. El asistente escribirá
/etc/zabbix/web/zabbix.conf.php. - Finalizar, inicie sesión como
Admin(con A mayúscula) usando la contraseñazabbixy cambie esa contraseña inmediatamente en Usuarios.
Si el asistente muestra Cannot create the configuration file, el usuario web no puede escribir en /etc/zabbix/web/. Descargue el zabbix.conf.php que ofrece, colóquelo allí manualmente con sudo y seleccione Finalizar.
Paso 9. Añadir el host local y asociar una plantilla
Zabbix no se supervisa automáticamente. Vaya a Recopilación de datos → Hosts → Crear host, establezca el nombre del host en zabbix-server, añádalo al grupo Linux servers y agregue una interfaz de Agent con la IP 127.0.0.1 y el puerto 10050. En Plantillas, asocie Linux by Zabbix agent (la variante de consulta pasiva; Linux by Zabbix agent active hace que el agente envíe los datos). Guarde los cambios.
En menos de un minuto, la fila del host muestra una etiqueta ZBX verde y las métricas aparecen en Supervisión → Últimos datos. Una etiqueta ZBX roja significa que el servidor no puede comunicarse con el agente. Este caso se explica más adelante y no indica un error en este paso.
Paso 10: un desencadenador útil y una alerta por correo electrónico
La plantilla Linux by Zabbix agent ya incluye desencadenadores para CPU alta, memoria baja y discos llenos, por lo que recibe alertas en cuanto la vincula. Para ver cómo se crea uno, añada uno propio: abra el host, vaya a Triggers → Create trigger, asígnele el nombre Root filesystem over 90% full on {HOST.NAME}, establezca la severidad High y use esta expresión:
last(/zabbix-server/vfs.fs.dependent.size[/,pused])>90vfs.fs.dependent.size[/,pused] es el elemento de porcentaje utilizado que crea el descubrimiento del sistema de archivos de la plantilla para el sistema de archivos raíz. La plantilla Linux de la versión 7.0 recopila vfs.fs.get una vez y deriva elementos dependientes para cada punto de montaje. Por eso, el desencadenador se activa sin recopilación de datos adicional. Guárdelo.
Un desencadenador sólo cambia el color de una fila en el panel hasta que una acción envía una notificación. En Alerts → Media types → Email, configure el servidor SMTP, el puerto, la dirección del remitente, la seguridad de la conexión (normalmente STARTTLS) y las credenciales del relay, si son necesarias. Después, use Test. Si la prueba falla, la ruta SMTP es incorrecta y ninguna alerta real podrá depender de ella. Asigne una dirección al usuario Admin en Users → Users → Admin → Media → Add y seleccione las severidades que deben generar notificaciones. Después, configúrelo en Alerts → Actions → Trigger actions → Create action: añada una condición como Trigger severity >= Warning y, en Operations, envíe la notificación a Admin mediante Email. Guarde la configuración y habilítela. ¿Prefiere un chat? Zabbix 7.0 incluye tipos de medios webhook para Slack, Discord y Telegram. Configure uno igual que Email y asígnelo a un usuario.
Supervisar un segundo servidor con el agente
Para supervisar otro servidor, añada también allí el repositorio de Zabbix. Ubuntu 24.04 no incluye paquetes propios de Zabbix. Después, instale sólo el agente:
wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0+ubuntu24.04_all.deb
sudo dpkg -i zabbix-release_latest_7.0+ubuntu24.04_all.deb
sudo apt update
sudo apt install -y zabbix-agent2Edite /etc/zabbix/zabbix_agent2.conf. Establezca Server en la IP del servidor de Zabbix para las comprobaciones pasivas. Para las comprobaciones activas, establezca también ServerActive y configure un Hostname único que coincida con el host que cree en la interfaz web:
Server=10.0.0.10
ServerActive=10.0.0.10
Hostname=web-01Ejecute sudo systemctl enable --now zabbix-agent2 y permita las conexiones TCP al puerto 10050 desde el servidor de Zabbix hasta este equipo. Vuelva a la interfaz web, cree un host cuya interfaz Agent apunte a la IP de ese equipo y vincúlelo a la plantilla de Linux. El host empezará a informar en menos de un minuto.
Modos de fallo y cadenas que verá
El frontend muestra Error connecting to database o un error de base de datos. En el paso de base de datos del asistente, Access denied for user 'zabbix'@'localhost' (using password: YES) significa que la contraseña no coincide con la del paso 3 o que GRANT nunca se ejecutó. Si la base de datos acepta la conexión pero el frontend informa de The frontend does not match Zabbix database o Table 'zabbix.users' doesn't exist, la importación del esquema del paso 4 se omitió o falló. Vuelva a ejecutarla en una base de datos recién creada.
Banner naranja: Zabbix server is not running: the information displayed may not be current. El frontend está activo, pero no puede conectarse a un servidor operativo. Hay tres causas, en este orden de probabilidad. El servicio está detenido. Compruebe systemctl status zabbix-server e inícielo. El servicio está activo, pero no puede conectarse a su base de datos. El registro muestra [Z3001] connection to database 'zabbix' failed: [1045] Access denied, lo que significa que DBPassword es incorrecta o está vacía. O el frontend apunta al servidor equivocado, almacenado como host localhost y puerto 10051 en /etc/zabbix/web/zabbix.conf.php. En Ubuntu, SELinux no está instalado de forma predeterminada. Por tanto, la causa relacionada con el socket de SELinux que mencionan las guías de RHEL no se aplica. En este caso, casi siempre se trata de la contraseña de la base de datos o de un servicio detenido.
El host muestra una etiqueta roja ZBX; error del elemento Get value from agent failed: cannot connect to [[127.0.0.1]:10050]: [111] Connection refused. El agente no está en ejecución o no está escuchando. Compruebe systemctl status zabbix-agent2 y confirme ListenPort=10050. Un tiempo de espera, en lugar de «conexión rechazada», significa que un firewall está descartando el puerto 10050. El mensaje relacionado Received empty response from Zabbix Agent. Assuming that agent dropped connection because of access permissions. significa que el agente es accesible, pero su línea Server= no incluye la IP del servidor Zabbix. Añádala y reinicie el agente.
Página de bienvenida predeterminada de nginx o 502 Bad Gateway. La página de bienvenida indica que el sitio predeterminado sigue habilitado o que el bloque de Zabbix no está enlazado. Elimine /etc/nginx/sites-enabled/default y confirme que existe /etc/nginx/conf.d/zabbix.conf, como se indica en el paso 6. Un 502 significa que nginx llegó a PHP, pero PHP-FPM está detenido o escucha en otro socket. Inicie php8.3-fpm y compruebe que el socket fastcgi_pass del bloque de Zabbix coincida con el del pool en ejecución.
Copias de seguridad, actualizaciones y TLS
La base de datos contiene todo el historial, así que haga copias con mysqldump según un calendario y conserve el volcado fuera del servidor:
mysqldump --single-transaction zabbix | gzip > zabbix-$(date +%F).sql.gzLos archivos de configuración de /etc/zabbix también son pequeños y conviene guardarlos, pero se pueden reconstruir; los datos no. Para restaurar, haga lo contrario: cree la base de datos, importe el volcado y configure el servicio para que la use.
Las actualizaciones dentro de la rama 7.0 son ejecuciones normales de apt update && apt upgrade; el servidor aplica las migraciones del esquema la próxima vez que se inicia, así que actualice los paquetes y reinicie zabbix-server. Una futura rama principal requiere una migración planificada: lea las notas de actualización, haga primero un volcado de la base de datos y prepárese para un cambio de esquema irreversible. Este salto irreversible es precisamente el motivo por el que debe fijar una rama LTS y mantenerla.
No deje el frontend usando HTTP sin cifrar. Cuando DNS apunte al servidor, instale un certificado con Certbot y Let's Encrypt en nginx para Ubuntu 24.04, que modifica el bloque del servidor para escuchar en 443 y redirigir 80. Mientras refuerza un servidor que inicia sesión para supervisar todos los demás servidores que administra, proteja también su SSH con fail2ban para bloquear intentos de SSH por fuerza bruta. Las credenciales de supervisión no deben transmitirse en texto claro y la puerta de entrada no debe quedar expuesta a intentos de adivinar contraseñas.
FAQ
¿Necesito el agente de Zabbix o puedo monitorizar sin él?
Ambas opciones funcionan. El agente (agent2) proporciona métricas detalladas por host, como CPU, memoria, discos, procesos, servicios y archivos de registro. Es la opción habitual para los servidores que administra. La monitorización sin agente cubre los dispositivos donde no puede instalar software: SNMP para switches e impresoras, ping ICMP para comprobar la conectividad, comprobaciones HTTP para endpoints e IPMI para el estado del hardware. En la mayoría de los entornos reales se combinan ambas opciones.
¿Por qué el frontend indica que el servidor de Zabbix no está en ejecución?
El frontend funciona, pero no puede conectarse a un proceso zabbix-server activo. Normalmente, el servidor se inicia, no puede iniciar sesión porque DBPassword en zabbix_server.conf es incorrecto o está vacío, y termina inmediatamente. Ejecute systemctl status zabbix-server y lea /var/log/zabbix/zabbix_server.log. Una línea [Z3001] connection to database ... failed lo confirma. Corrija la contraseña y reinicie el servicio. El aviso desaparecerá en menos de un minuto.
¿Tengo que usar MySQL o puedo usar PostgreSQL?
Ambas opciones tienen soporte completo: zabbix-server-mysql con MariaDB o MySQL, como se hace en esta guía, o zabbix-server-pgsql con PostgreSQL. En instalaciones pequeñas, la elección apenas importa. En instalaciones grandes, PostgreSQL con la extensión TimescaleDB particiona las tablas de historial y hace que las tareas de mantenimiento sean mucho más económicas. Por eso los entornos grandes suelen preferirlo. Elija una opción y manténgala. Migrar más adelante requiere una exportación y una importación completas; no basta con cambiar la configuración.
¿Cuánta RAM necesita un servidor Zabbix todo en uno?
Para un único equipo que monitoriza unos pocos hosts, 2 GB es un mínimo realista y 4 GB ofrecen un margen adecuado cuando se superan unas decenas de hosts. La memoria se utiliza principalmente para la caché de la base de datos y los procesos de consulta del servidor. Un VPS con 1 GB funciona, pero la base de datos se queda sin memoria a medida que crece el historial. Por encima de cien hosts, separe la base de datos en su propio servidor y ajuste su buffer pool en lugar de añadir más RAM a una sola máquina.
¿Zabbix es excesivo para un par de servidores?
Puede serlo. Si sólo necesita saber si un servicio está activo y disponer de una página que pueda compartir, una herramienta más ligera como Uptime Kuma para monitorización de disponibilidad y estado se instala más rápido y resulta más fácil de consultar de un vistazo. Elija Zabbix cuando necesite umbrales por métrica, gráficos históricos, hosts basados en plantillas y reglas de escalado. Estas son funciones que un comprobador de disponibilidad sencillo no puede ofrecerle en un conjunto de servidores.