Docker

Zabbix usando 5 contenedores

Lamentablemente se me desorganiza mucho intentar esta instalacion usando un unico docker-compose.yml. Ya que un conetendor depende del otro y su instalacion no es inmediata. Cada uno demora un poco. 

1- Zabbix MYSQL Server 
docker run --name zabbix-mysql-server -t \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="password_for_mysql" \
-e MYSQL_ROOT_PASSWORD="root_password_for_mysql" \
-v /home/usuario/volume/zabbix/mysql-server:/var/lib/mysql \
-d mysql --character-set-server=utf8 --collation-server=utf8_bin --default-authentication-plugin=mysql_native_password
2- Zabbix Java Gateway
docker run --name zabbix-java-gateway -t --restart unless-stopped -d zabbix/zabbix-java-gateway
3- Zabbix Proxy MySQL
docker run --name zabbix-server-mysql -t \
-e DB_SERVER_HOST="zabbix-mysql-server" \
-e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="password_for_mysql" \
-e MYSQL_ROOT_PASSWORD="root_password_for_mysql" \
-e ZBX_JAVAGATEWAY="zabbix-java-gateway" \
--link zabbix-mysql-server:mysql \
--link zabbix-java-gateway:zabbix-java-gateway \
-p 10051:10051 --restart unless-stopped \
-v /home/usuario/volume/zabbix/server-mysql/export:/var/lib/zabbix/export \
-v /home/usuario/volume/zabbix/server-mysql/snmptraps:/var/lib/zabbix/snmptraps \
-d zabbix/zabbix-server-mysql
4- Zabbix Web Nginx MySQL
docker run --name zabbix-web-nginx-mysql -t \
-e DB_SERVER_HOST="zabbix-mysql-server" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="password_for_mysql" \
-e MYSQL_ROOT_PASSWORD="root_password_for_mysql" \
--link zabbix-mysql-server:mysql \
--link zabbix-server-mysql:zabbix-server \
-p 8080:8080 \
--restart unless-stopped \
-d zabbix/zabbix-web-nginx-mysql
5- Zabbix Agent
docker run --name zabbix-agent \
--link zabbix-mysql-server:mysql \
--link zabbix-server-mysql:zabbix-server \
-e ZBX_HOSTNAME="zabbix" \
-e ZBX_SERVER_HOST="192.168.10.10.172.17.0.1" \
-v /home/usuario/volume/zabbix/agent:/var/lib/zabbix \
-d zabbix/zabbix-agent

Para el contenedor number 5, notese que estamos agregando 2 ZBX_SERVER_HOST, y esto es porque el servidor esta esperando IP de entrada y salida. Para mas detalles aqui.

El agente de Zabbix no conecta

 

Esto solo aplica si estas usando docker para correr el contendor de Zabbix. 

Revisando registros /var/log/zabbix/zabbix_agentd.log me di cuenta que la configuracion por defecto no funciona. 

599734:20231024:004818.675 no active checks on server [127.0.0.1:10051]: host [Zabbix server] not found

Despues de ver esto lo unico que hice fue cambiar el "Server=" y "Hostname" en el archivo /etc/zabbix/zabbix_agentd.conf. En lugar de usar '127.0.0.1' y 'Zabbix server' user las entradas que corresponden a mi red, por ejemplo '192.168.10.10' y 'zabbix.scuarmander.lan'. 

Apartir de ese cambio empece a ver la siguiente entrada en los registros:

96 failed to accept an incoming connection: connection from "172.17.0.6" rejected, allowed hosts: "192.168.10.10"

Fue asustador pues habia olvidado que los contenedores normalmente usan clase B para sus redes. Pero esto solo significa que "Server=" donde se especifica la dirección IP del servidor Zabbix, se deben indicar las IPs de entrada y salida del servidor; Ya que si no lo hacemos recibiremos el error cuando intentemos accesar el IP de salida del contenedor de Zabbix.

Un ejemplo de como quedo mi archivo de configuracion del agente:

Server=192.168.10.10,172.17.0.6
ServerActive=192.168.10.10
Hostname=zabbix.scuarmander.lan