--- title: "Cómo instalar Zabbix 7.0 LTS en Ubuntu 24.04 con MySQL" description: "Instala Zabbix 7.0 LTS con MySQL y Nginx en Ubuntu 24.04, añade hosts con Zabbix agent 2, crea un ítem y un disparador propios y activa alertas por correo." category: "Stack de Observabilidad" language: es source: https://cubepath.com/es/docs/stack-de-observabilidad/instalacion-y-configuracion-de-zabbix updated: 2026-09-25 --- # Cómo instalar Zabbix 7.0 LTS en Ubuntu 24.04 con MySQL Zabbix es una plataforma de monitorización de código abierto que recoge métricas de agentes, dispositivos SNMP y comprobaciones HTTP, las guarda en una base de datos SQL y abre problemas cuando se cumple un disparador (trigger). En este tutorial instalarás el servidor Zabbix 7.0 LTS, su interfaz web sobre Nginx y una base de datos MySQL en Ubuntu 24.04, protegerás la interfaz con HTTPS, añadirás servidores Linux con Zabbix agent 2 y la plantilla Linux incluida, crearás un ítem y un disparador propios y recibirás los problemas por correo electrónico. ## Requisitos previos Para seguir esta guía necesitas: - Un servidor con Ubuntu 24.04 LTS para el servidor Zabbix, por ejemplo un VPS de CubePath, con al menos 2 vCPU, 4 GB de RAM y 40 GB de disco. Es suficiente para unos cientos de hosts monitorizados. - Un usuario no root con privilegios `sudo` y UFW activado con SSH permitido. - Un dominio con un registro A que apunte al servidor, al que llamaremos `your_domain`. - Uno o más hosts con Ubuntu 24.04 o Debian 12 que quieras monitorizar. - Una cuenta SMTP para enviar los correos de alerta. Esta guía usa Zabbix 7.0, la versión de soporte extendido (LTS) actual, con soporte completo hasta 2027 y correcciones de seguridad hasta 2029. ## Paso 1: Añadir el repositorio de Zabbix Los paquetes de Zabbix de Ubuntu son anteriores a la 7.0, así que usarás el repositorio oficial de Zabbix. Zabbix publica un pequeño paquete que instala la definición del repositorio y su clave de firma: ```bash cd /tmp 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 ``` Comprueba que apt ve ahora los paquetes de Zabbix 7.0: ```bash apt-cache policy zabbix-server-mysql ``` ```output zabbix-server-mysql: Installed: (none) Candidate: 1:7.0.31-1+ubuntu24.04 Version table: 1:7.0.31-1+ubuntu24.04 500 500 https://repo.zabbix.com/zabbix/7.0/ubuntu noble/main amd64 Packages ``` La versión de parche será distinta; lo importante es que el candidato sea `7.0.x` y venga de `repo.zabbix.com`. ## Paso 2: Instalar el servidor, la interfaz web y el agente Instala el servidor con soporte para MySQL, la interfaz PHP, su configuración para Nginx, los scripts del esquema de base de datos y Zabbix agent 2 (para que el propio servidor Zabbix se monitorice), junto con el servidor MySQL: ```bash sudo apt install zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-sql-scripts zabbix-agent2 mysql-server ``` Esto instala también Nginx y PHP-FPM 8.3 como dependencias. Comprueba que MySQL está en marcha: ```bash systemctl status mysql --no-pager ``` ```output ● mysql.service - MySQL Community Server Loaded: loaded (/usr/lib/systemd/system/mysql.service; enabled; preset: enabled) Active: active (running) since Thu 2026-09-25 12:02:31 UTC; 1min ago ``` ## Paso 3: Crear la base de datos En Ubuntu, la cuenta `root` de MySQL se autentica por el socket Unix, así que `sudo mysql` te da acceso sin contraseña. Abre una consola de MySQL: ```bash sudo mysql ``` Crea la base de datos con la intercalación `utf8mb4_bin` que exige Zabbix y un usuario dedicado, y permite temporalmente que la importación del esquema cree funciones almacenadas. Sustituye `your_db_password` por una contraseña robusta: ```sql CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin; CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'your_db_password'; GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost'; SET GLOBAL log_bin_trust_function_creators = 1; EXIT; ``` Importa el esquema y los datos iniciales. El comando pide la contraseña del usuario `zabbix` y tarda uno o dos minutos sin mostrar nada: ```bash zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix ``` Terminada la importación, vuelve a desactivar el ajuste de funciones almacenadas: ```bash sudo mysql -e "SET GLOBAL log_bin_trust_function_creators = 0;" ``` Verifica la importación contando las tablas: ```bash sudo mysql -e "SELECT COUNT(*) AS tables FROM information_schema.tables WHERE table_schema = 'zabbix';" ``` ```output +--------+ | tables | +--------+ | 203 | +--------+ ``` El número exacto depende de la versión de parche; debe rondar las 200, no 0. ## Paso 4: Configurar e iniciar el servidor Zabbix Indica al servidor Zabbix cómo conectarse a la base de datos. Abre su archivo de configuración: ```bash sudo nano /etc/zabbix/zabbix_server.conf ``` Busca la línea comentada `# DBPassword=` y añade la contraseña debajo. `DBName=zabbix` y `DBUser=zabbix` ya vienen definidos por defecto: ```ini DBPassword=your_db_password ``` El archivo contiene una contraseña, así que comprueba que no lo puede leer cualquier usuario: ```bash ls -l /etc/zabbix/zabbix_server.conf ``` ```output -rw-r----- 1 root zabbix 26614 Sep 25 12:05 /etc/zabbix/zabbix_server.conf ``` Arranca el servidor y el agente local, y actívalos en el arranque: ```bash sudo systemctl enable --now zabbix-server zabbix-agent2 ``` Revisa el log del servidor. Un arranque correcto muestra la comprobación de versión de la base de datos y los procesos iniciados, sin errores `cannot connect`: ```bash sudo tail -n 20 /var/log/zabbix/zabbix_server.log ``` ```output 4213:20260925:120712.418 current database version (mandatory/optional): 07000000/07000000 4213:20260925:120712.418 required mandatory version: 07000000 4213:20260925:120712.520 server #0 started [main process] ... ``` Confirma que el servidor escucha en el puerto 10051, al que se conectan los agentes en modo activo: ```bash sudo ss -ltnp | grep 10051 ``` ## Paso 5: Configurar Nginx para la interfaz web El paquete `zabbix-nginx-conf` instala un bloque server en `/etc/zabbix/nginx.conf` y lo enlaza en el directorio `conf.d` de Nginx, pero sus líneas `listen` y `server_name` están comentadas. Edítalo: ```bash sudo nano /etc/zabbix/nginx.conf ``` Descomenta las dos primeras líneas del bloque `server` y déjalas así: ```nginx server { listen 80; server_name your_domain; ``` No cambies el resto del archivo. Como el sitio por defecto de Nginx en Ubuntu también escucha en el puerto 80, desactívalo para que las peticiones a `your_domain` lleguen a Zabbix: ```bash sudo rm /etc/nginx/sites-enabled/default sudo nginx -t ``` ```output nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful ``` Reinicia Nginx y PHP-FPM para que carguen la configuración de Zabbix (el paquete de la interfaz incluye su propio pool de PHP-FPM con los ajustes de PHP necesarios): ```bash sudo systemctl restart nginx php8.3-fpm sudo systemctl enable nginx php8.3-fpm ``` Abre HTTP y HTTPS, y el puerto 10051 para los agentes que funcionen en modo activo: ```bash sudo ufw allow 'Nginx Full' sudo ufw allow 10051/tcp ``` ## Paso 6: Activar HTTPS El formulario de inicio de sesión no debe viajar por HTTP sin cifrar. Instala Certbot y solicita un certificado de Let's Encrypt; el plugin de Nginx añade TLS al bloque server de Zabbix y redirige HTTP a HTTPS: ```bash sudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d your_domain ``` Cuando Certbot muestre `Successfully deployed certificate`, comprueba la renovación automática: ```bash sudo certbot renew --dry-run ``` ## Paso 7: Completar el asistente web Abre `https://your_domain` en el navegador. El instalador de Zabbix te guía por varias pantallas: 1. **Welcome**: elige el idioma por defecto y pulsa **Next step**. 2. **Check of pre-requisites**: todas las líneas deben mostrar **OK**. Si alguna falla, casi siempre se arregla con un ajuste de PHP en `/etc/zabbix/php-fpm.conf` seguido de `sudo systemctl restart php8.3-fpm`. 3. **Configure DB connection**: deja **Database type** en `MySQL`, **Database host** en `localhost` y **Database port** en `0` (valor por defecto). Escribe `zabbix` como nombre de base de datos y usuario, y `your_db_password` como contraseña. Deja **Database TLS encryption** desactivado, ya que la conexión es local. 4. **Settings**: define un **Zabbix server name** (aparece en el título de la página) y tu **Default time zone**. 5. **Pre-installation summary**: revisa los datos y pulsa **Next step**. El instalador escribe `/etc/zabbix/web/zabbix.conf.php`. Pulsa **Finish** e inicia sesión con las credenciales por defecto: usuario `Admin`, contraseña `zabbix`. Cambia esa contraseña de inmediato: ve a **User settings > Profile** (el icono de usuario al final del menú izquierdo), pulsa **Change password** y define una contraseña robusta. Ve a **Reports > System information**. **Zabbix server is running** debe indicar **Yes**, y el host `Zabbix server` aparece en **Monitoring > Hosts** con el icono de disponibilidad **ZBX** en verde al cabo de un minuto, gracias al agente local. ## Paso 8: Instalar Zabbix agent 2 en un host monitorizado Ejecuta estos comandos en cada servidor que quieras monitorizar. Añade el mismo repositorio de Zabbix e instala solo el agente: ```bash cd /tmp 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 zabbix-agent2 ``` En Debian 12, descarga el paquete para Debian: `https://repo.zabbix.com/zabbix/7.0/debian/pool/main/z/zabbix-release/zabbix-release_latest_7.0+debian12_all.deb`. Edita la configuración del agente: ```bash sudo nano /etc/zabbix/zabbix_agent2.conf ``` Define estos tres parámetros, sustituyendo `your_zabbix_server_ip` por la IP del servidor Zabbix y `web-01` por un nombre único para este host: ```ini Server=your_zabbix_server_ip ServerActive=your_zabbix_server_ip Hostname=web-01 ``` - `Server` indica las IP que pueden consultar al agente en modo pasivo (el servidor se conecta al agente en el puerto 10050). - `ServerActive` es el destino al que el agente envía datos en modo activo (el agente se conecta al servidor en el puerto 10051). - `Hostname` debe coincidir exactamente con el nombre del host que crees en la interfaz; si no, las comprobaciones activas se rechazan. Permite que el servidor Zabbix llegue al agente, y reinicia y activa el servicio: ```bash sudo ufw allow from your_zabbix_server_ip to any port 10050 proto tcp sudo systemctl restart zabbix-agent2 sudo systemctl enable zabbix-agent2 ``` Desde el servidor Zabbix, prueba la conexión con `zabbix_get`: ```bash sudo apt install zabbix-get zabbix_get -s web01_ip -k agent.ping ``` ```output 1 ``` Un `1` significa que el servidor puede consultar al agente. Un tiempo de espera agotado indica que el cortafuegos bloquea el puerto 10050; un error que menciona restricciones de acceso significa que falta la IP del servidor en `Server=` del agente. ## Paso 9: Añadir el host con la plantilla Linux En la interfaz web, ve a **Data collection > Hosts** y pulsa **Create host**: 1. **Host name**: `web-01`, idéntico a `Hostname` en la configuración del agente. 2. **Templates**: pulsa **Select**, abre el grupo **Templates/Operating systems** y elige **Linux by Zabbix agent**. 3. **Host groups**: selecciona `Linux servers`. 4. **Interfaces**: pulsa **Add > Agent** e introduce la IP del host y el puerto `10050`. 5. Pulsa **Add**. La plantilla añade un centenar de ítems (CPU, memoria, sistemas de archivos e interfaces de red descubiertos automáticamente), disparadores como **High CPU utilization** y **Filesystem space is critically low**, y gráficas. Al cabo de un minuto el icono **ZBX** se pone en verde. Ve a **Monitoring > Latest data**, filtra por el host `web-01` y deberías ver valores llegando. ## Paso 10: Crear un ítem y un disparador propios Las plantillas cubren lo básico; para todo lo demás puedes añadir tu propia métrica con un `UserParameter`, que asocia una clave de ítem a un comando de shell en el agente. Como ejemplo, monitorizarás el número de usuarios con sesión iniciada. En el host monitorizado, comprueba que el agente incluye el directorio `zabbix_agent2.d`: ```bash grep '^Include' /etc/zabbix/zabbix_agent2.conf ``` ```output Include=/etc/zabbix/zabbix_agent2.d/*.conf Include=./zabbix_agent2.d/plugins.d/*.conf ``` Si falta la primera línea, añádela al final del archivo. Después crea un archivo para tus parámetros: ```bash sudo nano /etc/zabbix/zabbix_agent2.d/custom.conf ``` ```ini UserParameter=custom.users.logged_in,who | wc -l ``` Prueba la clave en local y reinicia el agente para que cargue el nuevo parámetro: ```bash sudo zabbix_agent2 -t custom.users.logged_in sudo systemctl restart zabbix-agent2 ``` ```output custom.users.logged_in [s|1] ``` En la interfaz web, ve a **Data collection > Hosts**, pulsa **Items** junto a `web-01` y después **Create item**: - **Name**: `Usuarios con sesión` - **Type**: `Zabbix agent` - **Key**: `custom.users.logged_in` - **Type of information**: `Numeric (unsigned)` - **Update interval**: `1m` Pulsa **Add** y usa **Test** en el formulario del ítem o **Monitoring > Latest data** para ver el valor. Ahora crea un disparador sobre él. Desde el mismo host, abre **Triggers > Create trigger**: - **Name**: `Demasiados usuarios con sesión en {HOST.NAME}` - **Severity**: `Warning` - **Expression**: ```text last(/web-01/custom.users.logged_in)>5 ``` Pulsa **Add**. La expresión lee el último valor del ítem en el host `web-01` y abre un problema cuando supera 5. Para reutilizar el ítem y el disparador en muchos hosts, créalos en una plantilla en lugar de en el host y vincula esa plantilla a cada servidor. ## Paso 11: Enviar los problemas por correo electrónico Las notificaciones necesitan tres cosas: un tipo de medio configurado, una dirección de medio en un usuario y una acción que decida qué problemas se envían. Configura el tipo de medio de correo: 1. Ve a **Alerts > Media types** y abre **Email**. 2. Rellena **SMTP server**, **SMTP server port** (normalmente `587`), **SMTP helo** (tu dominio) y **SMTP email** (la dirección remitente). 3. Pon **Connection security** en `STARTTLS` y **Authentication** en `Username and password`, e introduce tus credenciales SMTP. 4. Asegúrate de que **Enabled** está marcado, pulsa **Update** y usa **Test** en la lista de tipos de medio para enviar un mensaje de prueba. Asigna a un usuario una dirección donde recibir las alertas: 1. Ve a **Users > Users** y abre `Admin` (o tu propio usuario). 2. En la pestaña **Media** pulsa **Add**, elige **Email**, escribe la dirección, deja en **Use if severity** las gravedades que te interesen y pulsa **Add** y después **Update**. Activa una acción que envíe los problemas: 1. Ve a **Alerts > Actions > Trigger actions**. 2. Abre la acción incluida **Report problems to Zabbix administrators**, que envía al grupo de usuarios `Zabbix administrators` al que pertenece `Admin`. 3. En la pestaña **Action**, marca **Enabled** y pulsa **Update**. Para probar toda la cadena, detén el agente en el host monitorizado: ```bash sudo systemctl stop zabbix-agent2 ``` A los pocos minutos, **Monitoring > Problems** muestra **Linux: Zabbix agent is not available** para `web-01` y llega un correo. Vuelve a arrancar el agente y recibirás el correo de recuperación: ```bash sudo systemctl start zabbix-agent2 ``` ## Solución de problemas **La interfaz muestra "Zabbix server is not running".** Revisa `sudo systemctl status zabbix-server` y `/var/log/zabbix/zabbix_server.log`. La causa habitual es un `DBPassword` incorrecto en `/etc/zabbix/zabbix_server.conf`. **El icono ZBX del host está en rojo con "Get value from agent failed: cannot connect".** El servidor no llega al puerto 10050 del host. Prueba con `zabbix_get -s web01_ip -k agent.ping` y revisa UFW en el host. **Las comprobaciones activas fallan con "host not found".** El `Hostname` de `zabbix_agent2.conf` no coincide con el nombre del host en la interfaz. Distingue entre mayúsculas y minúsculas. **Los ítems aparecen como "Not supported".** Pasa el ratón por el icono rojo en la lista de ítems para ver el motivo. En un `UserParameter`, ejecuta `sudo zabbix_agent2 -t ` en el host; el comando se ejecuta como el usuario `zabbix`, así que no puede necesitar privilegios de root. ## Conclusión Has instalado Zabbix 7.0 LTS con MySQL y Nginx en Ubuntu 24.04, has protegido la interfaz con HTTPS, has añadido un host Linux con Zabbix agent 2 y la plantilla incluida, has ampliado la monitorización con un ítem y un disparador propios y has activado las notificaciones por correo. Como siguientes pasos, usa el descubrimiento de red o el autorregistro de agentes (**Alerts > Actions > Autoregistration actions**) para añadir hosts de forma automática, monitoriza switches y routers con las plantillas SNMP y ajusta la retención de datos en **Administration > Housekeeping** a medida que crezca la base de datos.