Guía de despliegue

Zabbix en un VPS: monitoriza servidores, servicios y red

Desplegar en un VPS Cloud →

Tutorial

Autoalojamiento

Zabbix en un VPS: monitoriza servidores, servicios y red

Un disco que se llena de noche, un servicio que se detiene sin avisar, un enlace de red saturado: sin monitorización, te lo cuenta un cliente. Zabbix es una plataforma de monitorización de código abierto (licencia AGPL-3.0) que vigila servidores, aplicaciones y equipos de red, y avisa a la persona adecuada en cuanto se supera un umbral. Esta guía lo instala en un VPS con Docker Compose, lo coloca detrás de nginx en HTTPS, vincula el VPS a su propio agente y añade después tus otros servidores y tus alertas.

6 min de lectura3 pasos
Contenido· Qué hace Zabbix1/12
  1. 01Qué hace Zabbix
  2. 02Lo que aporta Zabbix
  3. 03Zabbix frente a otras opciones
  4. 04Requisitos previos
  5. 05Instalar Zabbix con Docker Compose
  6. 06Cambia la contraseña de fábrica antes que nada
  7. 07Poner Zabbix detrás de nginx en HTTPS
  8. 08Vincular el host «Zabbix server» al agente del VPS
  9. 09Monitorizar tus otros servidores
  10. 10Recibir las alertas
  11. 11Copias de seguridad y actualizaciones
  12. 12Instalación en un clic en ServOrbit

Qué hace Zabbix

Zabbix recoge medidas — carga del procesador, memoria libre, espacio en disco, estado de un servicio, tiempo de respuesta de una página — y las compara con disparadores. Cuando una expresión se cumple, por ejemplo «menos del 10 % de espacio libre durante cinco minutos», Zabbix abre un problema, lo muestra en sus paneles y ejecuta las acciones previstas: un correo, un mensaje de Telegram, un webhook.

Las medidas llegan por varios caminos: el agente de Zabbix instalado en cada servidor, el protocolo SNMP para routers, conmutadores y SAI, escenarios web para sitios y API, o consultas directas a una base de datos. Las plantillas listas para usar agrupan las medidas y los disparadores adecuados para Linux, Windows, nginx, MySQL, PostgreSQL o Docker.

Lo que aporta Zabbix

  • Agentes Linux y Windows — procesador, memoria, discos, red, servicios, procesos y registros.
  • SNMP — equipos de red monitorizados sin agente, con descubrimiento automático de interfaces.
  • Disparadores y escaladas — umbrales legibles, dependencias entre hosts, alertas que suben de nivel si nadie reacciona.
  • Escenarios web — disponibilidad, tiempo de respuesta y contenido de una serie de páginas o llamadas a una API.
  • Paneles, mapas e informes — para el equipo de operaciones y también para tus clientes.
  • Permisos por grupo de hosts — cada usuario solo ve lo que le corresponde.

Zabbix frente a otras opciones

Desplace la tabla

ZabbixPrometheus + GrafanaUptime Kuma
Qué se monitorizaServidores, servicios, red, sitios webMétricas de aplicaciones y contenedoresDisponibilidad de sitios y puertos
RecogidaAgente, SNMP, HTTP, bases de datosExportadores consultadosSondas HTTP, TCP y ping
ConfiguraciónInterfaz webArchivos YAMLInterfaz web
AlertasIntegradas, con escaladasAlertmanager aparteIntegradas
CostePrecio del VPSPrecio del VPSPrecio del VPS

Requisitos previos

Un VPS Ubuntu 24.04 con 2 GB de RAM y 20 GB de disco para unas decenas de hosts, Docker y el plugin Compose instalados, y un subdominio que apunte al VPS, por ejemplo zabbix.example.com. Prevé más disco si conservas un historial largo: la base PostgreSQL crece con el número de medidas.

Instalar Zabbix con Docker Compose

  1. Preparar el directorio y la contraseña de la base

    El archivo .env contiene la contraseña de PostgreSQL, compartida por el servidor y la interfaz web.

    mkdir -p /opt/zabbix && cd /opt/zabbix
    echo "DB_PASSWORD=$(openssl rand -hex 16)" > .env
    chmod 600 .env
  2. Escribir el archivo docker-compose.yml

    Cuatro servicios: el servidor Zabbix, la interfaz web (nginx y PHP), el agente del VPS y PostgreSQL. Solo se publica la interfaz web, y solo en la interfaz local: nginx se encargará del HTTPS.

    services:
      zabbix-server:
        image: zabbix/zabbix-server-pgsql:alpine-8.0.0
        restart: unless-stopped
        depends_on:
          database:
            condition: service_healthy
        environment:
          DB_SERVER_HOST: database
          POSTGRES_USER: zabbix
          POSTGRES_PASSWORD: ${DB_PASSWORD}
          POSTGRES_DB: zabbix
      zabbix-web:
        image: zabbix/zabbix-web-nginx-pgsql:alpine-8.0.0
        restart: unless-stopped
        depends_on:
          - zabbix-server
        ports:
          - "127.0.0.1:8080:8080"
        environment:
          ZBX_SERVER_HOST: zabbix-server
          DB_SERVER_HOST: database
          POSTGRES_USER: zabbix
          POSTGRES_PASSWORD: ${DB_PASSWORD}
          POSTGRES_DB: zabbix
          PHP_TZ: Africa/Casablanca
      zabbix-agent:
        image: zabbix/zabbix-agent2:alpine-8.0.0
        restart: unless-stopped
        environment:
          ZBX_HOSTNAME: "Zabbix server"
          ZBX_SERVER_HOST: zabbix-server
      database:
        image: postgres:17.11-alpine
        restart: unless-stopped
        environment:
          POSTGRES_USER: zabbix
          POSTGRES_PASSWORD: ${DB_PASSWORD}
          POSTGRES_DB: zabbix
        volumes:
          - zabbix-db:/var/lib/postgresql/data
        healthcheck:
          test: ["CMD-SHELL", "pg_isready -U zabbix -d zabbix"]
          interval: 5s
          retries: 12
    volumes:
      zabbix-db: {}
  3. Arrancar la pila

    En el primer arranque, el servidor crea el esquema de la base; cuenta un minuto antes de que responda la interfaz.

    docker compose up -d
    docker compose ps
    curl -fsS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8080/

Cambia la contraseña de fábrica antes que nada

Una instalación nueva de Zabbix abre la cuenta Admin con la contraseña zabbix, conocida por todos. Inicia sesión de inmediato y sustitúyela en User settings, Profile, Change password, incluso antes de poner la interfaz detrás de su nombre de dominio.

Poner Zabbix detrás de nginx en HTTPS

El puerto 8080 solo escucha en 127.0.0.1: nginx, instalado en el host, recibe el tráfico público y lo reenvía. Certbot añade después el certificado y la redirección a HTTPS.

server {
    listen 80;
    server_name zabbix.example.com;
    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
certbot --nginx -d zabbix.example.com

Vincular el host «Zabbix server» al agente del VPS

Zabbix crea de serie un host «Zabbix server» que consulta un agente en 127.0.0.1. En Docker, el agente vive en su propio contenedor: abre Data collection y luego Hosts, haz clic en «Zabbix server» y sustituye la interfaz Agent por el nombre DNS zabbix-agent, con «Connect to» en DNS. Un minuto después, el indicador ZBX se pone en verde y Latest data muestra el procesador, la memoria y la carga del VPS.

Monitorizar tus otros servidores

En cada servidor, instala el paquete zabbix-agent2 de tu distribución o del repositorio oficial de Zabbix, y declara la IP pública de tu VPS Zabbix como servidor autorizado. En modo pasivo, es el servidor Zabbix quien consulta al agente en el puerto 10050: abre ese puerto solo a esa IP.

# /etc/zabbix/zabbix_agent2.conf
Server=203.0.113.10
Hostname=web-01
systemctl restart zabbix-agent2
ufw allow from 203.0.113.10 to any port 10050 proto tcp

En Data collection y luego Hosts, crea el host web-01 con su IP y la plantilla «Linux by Zabbix agent». El modo activo, en el que el agente envía sus datos al puerto 10051 del servidor, exige abrir ese puerto en el VPS Zabbix: resérvalo a las IP de tus servidores.

Recibir las alertas

En Alerts y luego Media types, activa y configura el correo (servidor SMTP, remitente), Telegram o Slack: Zabbix incluye tipos listos para decenas de servicios. Añade después el medio a tu usuario en User settings, Profile, Media, y activa la acción «Report problems to Zabbix administrators» en Alerts, Actions. Pruébalo deteniendo el agente de un servidor: debería llegarte un problema «Zabbix agent is not available».

Copias de seguridad y actualizaciones

Toda la configuración y el historial están en PostgreSQL. Basta una copia diaria con pg_dump:

cd /opt/zabbix
docker compose exec -T database pg_dump -U zabbix zabbix | gzip > zabbix-$(date +%F).sql.gz

Para actualizar, cambia el número de versión de las tres imágenes de Zabbix en docker-compose.yml y ejecuta docker compose pull && docker compose up -d: el servidor actualiza el esquema al arrancar. Haz una copia de la base justo antes y lee las notas de la versión antes de cambiar de rama principal.

Instalación en un clic en ServOrbit

Desde el Marketplace de tu área de cliente, Zabbix se instala en un VPS de ServOrbit sin escribir una línea: se despliegan el servidor, la interfaz web, PostgreSQL y el agente del VPS, el host «Zabbix server» ya está vinculado a su agente, la contraseña de fábrica se sustituye por una generada que aparece en tu área de cliente, y la interfaz se publica en HTTPS en tu dominio o en el subdominio gratuito del VPS.

Monitoriza tu parque desde tu VPS

Un VPS ServOrbit Ubuntu 24.04 con 2 GB de RAM basta para empezar con Zabbix. Instalación en un clic desde el Marketplace, HTTPS en tu dominio o en el subdominio gratuito del VPS, y contraseña de administrador generada para ti.