Tabla de contenido
¡Buenas tardes! Hoy hablaremos de como levantar un servidor de Zabbix con docker en menos de 5 minutos.
Como hemos visto en otros posts docker es una tecnología muy versátil y cada día mas extendida. Por eso hoy queremos mostrar como se puede levantar de forma muy sencilla un servidor de monitorización con zabbix.
Te recomendamos visitar el post sobre como empezar con docker para ver como utilizar los comandos mas básicos de docker.
¡Empezamos!
Creando el servidor de MySQL
Lo primero para crear los servidores de docker es crear un servidor de bases de datos. En nuestro caso usaremos MySQL 5.7.
Para empezar a crearlo, lo primero es crear la estructura de directorios.
Directorios de volumen de MySQL
Tenemos que crear el directorio que se montará en /var/lib/mysql en el contenedor de MySQL, para ello ejecutamos:
mkdir -p /var/dockervolumes/db01/mysql
Luego creamos el fichero /var/dockervolumes/db01/docker.cnf que contendra la configuración de MySQL para nuestro Zabbix. En este fichero se puede añadir el tunning que necesites para MySQL:
skip-host-cache skip-name-resolve server_id=1 expire_logs_days = 10 query_cache_size=0 query_cache_type=0
Para crear el servidor de base de datos ejecutamos el siguiente comando sustituyendo «PASSWD_ROOT» por nuestra contraseña:
docker run --name db -d --restart always -e "MYSQL_ROOT_PASSWORD=PASSWD_ROOT" -v /var/dockervolumes/db01/mysql/:/var/lib/mysql -v /var/dockervolumes/db01/docker.cnf:/etc/mysql/conf.d/docker.cnf mysql:5.7
Crear servidor de Zabbix
Al igual que hemos hecho antes, para crear el servidor de zabbix necesitamos crear el arbol de directorio a utilizar, para ello ejecutamos:
mkdir -p /var/dockervolumes/zabbix_server
Y luego para crear el servidor de Zabbix solo debemos ejecutar el siguiente comando sustituyendo «PASSWD_ROOT» por la password que hemos definido en la base de datos y «PASSWD» por la password que queramos poner en nuestro usuario de base de datos zabbix:
docker run -it -d --restart unless-stopped --link db -p 10051:10051 -e "DB_SERVER_HOST=db" -e "MYSQL_USER=zabbix" -e "MYSQL_PASSWORD=PASSWD" -e "MYSQL_ROOT_PASSWORD=PASSWD_ROOT" -e "MYSQL_DATABASE=zabbix" -e "ZBX_STARTJAVAPOLLERS=5" -e "TZ=Europe/Madrid" --label "traefik.enable=false" --label "com.zabbix.os:'alpine'" --label "com.zabbix.dbtype:'mysql'" --label "com.zabbix.component:'zabbix-server'" -v /var/dockervolumes/zabbix_server/externalscripts:/usr/lib/zabbix/externalscripts:ro -v /var/dockervolumes/zabbix_server/alertscripts:/usr/lib/zabbix/alertscripts:ro -v /var/dockervolumes/zabbix_server/modules:/var/lib/zabbix/modules:ro -v /var/dockervolumes/zabbix_server/enc:/var/lib/zabbix/enc:ro -v /var/dockervolumes/zabbix_server/ssh_keys:/var/lib/zabbix/ssh_keys:ro -v /var/dockervolumes/zabbix_server/mibs:/var/lib/zabbix/mibs:ro -v /var/dockervolumes/zabbix_server/snmptraps:/var/lib/zabbix/snmptraps:ro --name zabbix-server zabbix/zabbix-server-mysql:alpine-latest
Panel de control web de Zabbix
Con esto ya tendríamos un servidor de zabbix sin la parte web. Para crear la parte web debemos ejecutar la siguiente instrucción en la cual hay que sustituir «PASSWD_ROOT» por la password que hemos definido en la base de datos y «PASSWD» por la password que queramos poner en nuestro usuario de base de datos zabbix y MI_SERVER_DE_ZABBIX por el hostname de tu zabbix:
docker run -it -d --restart unless-stopped --link db -e "DB_SERVER_HOST=db" -e "MYSQL_USER=zabbix" -e "MYSQL_PASSWORD=PASSWD" -e "MYSQL_ROOT_PASSWORD=PASSWD_ROOT" -e "MYSQL_DATABASE=zabbix" -e "ZBX_SERVER_NAME=MI_SERVER_DE_ZABBIX" -e "PHP_TZ=Europe/Madrid" -e "TZ=Europe/Madrid" --label "traefik.backend=zabbix" --label "com.zabbix.os:'alpine'" --label "com.zabbix.dbtype:'mysql'" -p 80:8080 --label "com.zabbix.component:'zabbix-web'" --label "traefik.enable=false" --link zabbix-server --name zabbix-web zabbix/zabbix-web-apache-mysql:alpine-latest
Tras esto ya podemos hacer login en nuestro nuevo Zabbix nos dirigimos a la dirección del servidor anfitrión donde lo hemos instalado así: http://DIRECCION (o si lo hemos hecho en nuestro docker local, en http://localhost ). Allí nos pedira usuario y contraseña, por defecto es:
Usuario: Admin Password: zabbix
Debes cambiarlo al acceder la primera vez.
Mas adelante crearemos artículos configurar el agente y para añadir alertas con telegram.
Si estás interesado en aprender Docker puedes puedes adquirir nuestro libro aquí.
Docker para novatos
Bonus: SMTP TRAPS
Si quieres utilizar las traps de SMTP debes crear otro servidor para ello, primero creamos el arbol de directorios:
mkdir -p /var/dockervolumes/zabbix_snmptraps/snmptraps
Para crear el servicio se hace de la siguiente forma:
docker run -it -d --restart unless-stopped -v /var/dockervolumes/zabbix_snmptraps/snmptraps:/var/lib/zabbix/snmptraps:rw --user root --label "traefik.enable=false" --label "com.zabbix.component:'snmptraps'" --label "com.zabbix.os:'ubuntu'" -p 162:162/udp --name zabbix-snmptraps zabbix/zabbix-snmptraps:ubuntu-latest