Zabbix es una plataforma de monitoreo de código abierto que realiza un seguimiento de la salud y el rendimiento de servidores, redes, aplicaciones y servicios. Recopila métricas, activa alertas basadas en umbrales configurables y proporciona paneles para visualizar el estado de la infraestructura. Zabbix admite monitoreo a través de agentes, Extensiones de Gestión de Java (JMX) y scripts personalizados.
Requisitos previos
Antes de comenzar, necesitas:
Acceso a un servidor basado en Linux como usuario no root con privilegios de sudo.
Tener Docker y Docker Compose instalados.
Configurar un registro DNS A apuntando a la dirección IP de tu servidor (por ejemplo, zabbix.ejemplo.cl).
Configurar el directorio del proyecto
El directorio del proyecto contiene el archivo Docker Compose y las variables de entorno para la implementación.
Paso 1: Crear el directorio del proyecto
Crea un nuevo directorio para el proyecto:
$ mkdir ~/zabbix-docker
Paso 2: Entrar en el directorio del proyecto
Navega al directorio creado:
$ cd ~/zabbix-docker
Paso 3: Crear el archivo de variables de entorno
Crea un archivo .env para almacenar las variables de configuración:
$ nano .env
Paso 4: Agregar las variables de entorno
Copia el siguiente contenido en el archivo:
DOMAIN=zabbix.ejemplo.cl
[email protected]
MYSQL_PASSWORD=YOUR_DB_PASSWORD
MYSQL_ROOT_PASSWORD=YOUR_ROOT_PASSWORD
Reemplaza los valores:
zabbix.ejemplo.cl: Tu nombre de dominio registrado
[email protected]: Tu dirección de correo para notificaciones de certificado
YOUR_DB_PASSWORD: Contraseña fuerte para el usuario zabbix
YOUR_ROOT_PASSWORD: Contraseña fuerte para la cuenta root de MySQL
Guarda el archivo presionando Ctrl + X, luego Y y Enter.
Implementar con Docker Compose
El archivo Compose define el proxy inverso Traefik, el servidor Zabbix, la interfaz web de Zabbix, la base de datos MySQL y el agente de Zabbix.
Paso 1: Agregar el usuario al grupo docker
Agrega tu usuario al grupo docker para ejecutar comandos sin sudo:
$ sudo usermod -aG docker $USER
Paso 2: Aplicar el cambio de grupo a la sesión actual
Aplica los cambios del grupo sin cerrar sesión:
$ newgrp docker
Paso 3: Crear el archivo Docker Compose
Crea el archivo de configuración de Docker Compose:
$ nano docker-compose.yaml
Paso 4: Agregar la configuración de Docker Compose
Copia la siguiente configuración:
services:
traefik:
image: traefik:v3.6
container_name: traefik
restart: unless-stopped
command:
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web.address=:80"
- "--entrypoints.websecure.address=:443"
- "--entrypoints.web.http.redirections.entrypoint.to=websecure"
- "--entrypoints.web.http.redirections.entrypoint.scheme=https"
- "--certificatesresolvers.le.acme.httpchallenge=true"
- "--certificatesresolvers.le.acme.httpchallenge.entrypoint=web"
- "--certificatesresolvers.le.acme.email=${LETSENCRYPT_EMAIL}"
- "--certificatesresolvers.le.acme.storage=/letsencrypt/acme.json"
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./letsencrypt:/letsencrypt
networks:
- zabbix-net
mysql-server:
image: mysql:8.4.8
container_name: zabbix-mysql
environment:
MYSQL_DATABASE: zabbix
MYSQL_USER: zabbix
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
volumes:
- ./mysql-data:/var/lib/mysql
networks:
- zabbix-net
restart: unless-stopped
zabbix-server:
image: zabbix/zabbix-server-mysql:7.4.8-alpine
container_name: zabbix-server
environment:
DB_SERVER_HOST: mysql-server
MYSQL_DATABASE: zabbix
MYSQL_USER: zabbix
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
ports:
- "10051:10051"
volumes:
- ./zabbix-server-data:/var/lib/zabbix
networks:
- zabbix-net
depends_on:
- mysql-server
restart: unless-stopped
zabbix-web:
image: zabbix/zabbix-web-apache-mysql:7.4.8-alpine
container_name: zabbix-web
environment:
DB_SERVER_HOST: mysql-server
MYSQL_DATABASE: zabbix
MYSQL_USER: zabbix
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
ZBX_SERVER_HOST: zabbix-server
PHP_TZ: UTC
networks:
- zabbix-net
depends_on:
- mysql-server
- zabbix-server
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.routers.zabbix.rule=Host(`${DOMAIN}`)"
- "traefik.http.routers.zabbix.entrypoints=websecure"
- "traefik.http.routers.zabbix.tls=true"
- "traefik.http.routers.zabbix.tls.certresolver=le"
- "traefik.http.services.zabbix.loadbalancer.server.port=8080"
zabbix-agent:
image: zabbix/zabbix-agent:7.4.8-alpine
container_name: zabbix-agent
environment:
ZBX_HOSTNAME: "Zabbix server"
ZBX_SERVER_HOST: zabbix-server
ports:
- "10050:10050"
networks:
- zabbix-net
depends_on:
- zabbix-server
restart: unless-stopped
networks:
zabbix-net:
driver: bridge
Guarda el archivo presionando Ctrl + X, luego Y y Enter.
Explicación de los servicios:
Traefik: Maneja todo el tráfico web externo en los puertos 80 y 443. Provisiona certificados TLS de Let's Encrypt y enruta solicitudes HTTPS a la interfaz web de Zabbix.
MySQL: Almacena todos los datos de configuración y monitoreo de Zabbix.
Zabbix Server: Recopila métricas de los agentes, procesa datos y evalúa disparadores de alertas.
Zabbix Web: Interfaz frontend basada en Apache para acceder a Zabbix.
Zabbix Agent: Monitorea el host local y envía métricas al servidor Zabbix.
Paso 5: Iniciar todos los servicios
Inicia todos los contenedores en modo desacoplado:
$ docker compose up -d
Paso 6: Verificar que los contenedores se están ejecutando
Verifica que todos los contenedores estén activos:
$ docker compose ps
La salida debe mostrar cinco contenedores en ejecución: Traefik, MySQL, Zabbix Server, Zabbix Web y Zabbix Agent.
Acceder a la interfaz web de Zabbix
La interfaz web de Zabbix es accesible en el dominio configurado en el archivo .env después de que Traefik proporcione el certificado TLS.
Paso 1: Abrir la interfaz web de Zabbix
Abre tu navegador web y accede a Zabbix usando el dominio que configuraste
https://zabbix.ejemplo.cl
Paso 2: Iniciar sesión con las credenciales predeterminadas
Usa las siguientes credenciales:
Usuario: admin
Contraseña: zabbix
Después de un inicio de sesión exitoso, aparecerá el panel de control Global view de Zabbix.
Paso 3: Cambiar la contraseña predeterminada del administrador
Es importante cambiar la contraseña predeterminada:
En la barra lateral izquierda, haz clic en Users
Busca y haz clic en Admin en la lista de usuarios
Haz clic en el botón Change password
Ingresa zabbix en el campo Current password
Ingresa una nueva contraseña segura en los campos Password y Password
Haz clic en Update para guardar los cambios
Verificar que Zabbix se está ejecutando
Confirma que Zabbix está recopilando datos del agente configurado.
Paso 1: Verificar la disponibilidad del host
Navega a Monitoring → Hosts en la barra lateral izquierda.
Verifica el icono de disponibilidad ZBX del host Zabbix server.
Paso 2: Actualizar la interfaz del agente
Paso 3: Verificar que el agente está conectado
Debería volverse verde, confirmando que el agente está conectado.
Paso 4: Ver datos de monitoreo en tiempo real
Navega a Monitoring → Latest data:
En el campo Hosts, escribe Zabbix server
Selecciona el host de los resultados
Haz clic en Apply
Verás métricas de uso de CPU, consumo de memoria y tráfico de red, confirmando que Zabbix está recopilando datos correctamente.
Paso 5: Ver el panel de control
Navega a Dashboard para ver el panel predeterminado de Zabbix que muestra el estado de los hosts monitoreados.
Conclusión
Has implementado exitosamente Zabbix en tu servidor usando Docker Compose con Traefik. El agente de Zabbix monitorea el VPS y reporta métricas de uso de CPU, consumo de memoria y tráfico de red al servidor Zabbix.
¿Necesitas Ayuda adicional?
En V2Networks, estamos comprometidos con la estabilidad y seguridad de tu sitio web. Si necesitas asistencia adicional, no dudes en contactarnos a través de nuestro Centro de Soporte

