Levantar un servidor de Zabbix con docker en menos de 5 minutos

¡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 novatosDocker 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

 

 

Deja una respuesta