Ir al contenido principal

Cómo instalar Zabbix - Plataforma de Monitoreo

Instala Zabbix con Docker y Traefik para monitoreo seguro de infraestructura alojado internamente y alertas automáticas.

Escrito por Diego Rodriguez


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:

  1. En la barra lateral izquierda, haz clic en Users

  2. Busca y haz clic en Admin en la lista de usuarios

  3. Haz clic en el botón Change password

  4. Ingresa zabbix en el campo Current password

  5. Ingresa una nueva contraseña segura en los campos Password y Password

  6. 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:

  1. En el campo Hosts, escribe Zabbix server

  2. Selecciona el host de los resultados

  3. 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

¿Ha quedado contestada tu pregunta?