Como instalar Zabbix 7.x usando contenedores podman
Zabbix es una potente herramienta de monitoreo. Recientemente salió la versión 7.0 la cual incorporó funcionalidades importantes, como son los items de browser que usan webdrivers. A continuación veremos como implementar Zabbix 7.x usando podman.
La guía siguiente supone que:
- Ya generaste o adquiriste los certificados ssl.
- Tenés los conocimientos fundamentales sobre Linux (usamos RHEL8).
- Poseés conocimientos básicos de troubleshooting en contenedores y entendiendo que este "HowTo" es un punto al que deberás adaptar a tu entorno y necesidades. No es consultoría 😀.
1. Crear el Pod con Puertos Correctos
Primero, crear el pod con el puerto 443 en el host mapeado al puerto 8443 en el contenedor de NGINX. También asignar el puerto 10051 para Zabbix Server.
podman pod create --name zabbix -p 443:8443 -p 10051:10051
2. Desplegar el Contenedor MySQL
Iniciar el contenedor mysql-server
dentro del pod, configurando las variables de entorno necesarias para la base de datos de Zabbix:
mkdir mysql && podman run -d --name mysql-server --pod=zabbix \ -v ./mysql:/var/lib/mysql:Z \ -e MYSQL_DATABASE="zabbix" \ -e MYSQL_USER="zabbix" \ -e MYSQL_PASSWORD="zabbix_pwd" \ -e MYSQL_ROOT_PASSWORD="root_pwd" \ docker.io/library/mysql:8.0
3. Configurar log_bin_trust_function_creators
en MySQL
Para evitar problemas con permisos de creación de funciones, habilita esta configuración en el servidor MySQL:
Darle tiempo a que MySQL esté listo:
until podman exec mysql-server mysqladmin ping -u root -p'root_pwd' --silent; do echo "Esperando a que MySQL esté listo..." sleep 5 done
Ejecutar la configuración:
podman exec -i mysql-server mysql -u root -p'root_pwd' -e "SET GLOBAL log_bin_trust_function_creators = 1;"
4. Desplegar el Contenedor Zabbix Server
Iniciar el contenedor zabbix-server-mysql
en el pod, conectándolo a MySQL y asegurándote de que se conecte al Java Gateway:
podman run -d --name zabbix-server-mysql --pod=zabbix \ -e DB_SERVER_HOST="127.0.0.1" \ -e MYSQL_USER="zabbix" \ -e MYSQL_PASSWORD="zabbix_pwd" \ -e MYSQL_DATABASE="zabbix" \ -e ZBX_JAVAGATEWAY="127.0.0.1" \ docker.io/zabbix/zabbix-server-mysql:alpine-latest
5. Verificar la Creación de Tablas en la Base de Datos
Confirmar que zabbix-server-mysql
crea correctamente las tablas en la base de datos:
podman exec -i mysql-server mysql -u root -p'root_pwd' -e "USE zabbix; SHOW TABLES;"
6. Desplegar el Contenedor Zabbix Java Gateway
Iniciar el contenedor zabbix-java-gateway
, asegurándote de que esté en el pod zabbix
:
podman run -d --name zabbix-java-gateway --pod=zabbix docker.io/zabbix/zabbix-java-gateway:alpine-latest
7. Desplegar el Contenedor NGINX con Certificados SSL y Configuración
Ejecutar el contenedor de Zabbix Web NGINX MySQL (zabbix-web-mysql-ssl
), montando los certificados y el archivo de configuración zabbix-ssl.conf
correctamente:
El archivo de configuración zabbix-web-mysql-ssl
puede ser algo así:
server { listen 8443 ssl; server_name _; ssl_certificate /etc/ssl/nginx/fullchain.pem; ssl_certificate_key /etc/ssl/nginx/privkey.pem; root /usr/share/zabbix; index index.php index.html index.htm; location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { include fastcgi_params; fastcgi_pass unix:/tmp/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/share/zabbix$fastcgi_script_name; } error_log /tmp/zabbix_ssl_error.log; access_log /tmp/zabbix_ssl_access.log; }
podman run -d --name zabbix-web-mysql-ssl --pod=zabbix \ -v ./certs/fullchain.pem:/etc/ssl/nginx/fullchain.pem:ro \ -v ./certs/privkey.pem:/etc/ssl/nginx/privkey.pem:ro \ -v ./zabbix-ssl.conf:/etc/nginx/http.d/zabbix-ssl.conf:ro \ -e ZBX_SERVER_HOST="127.0.0.1" \ -e DB_SERVER_HOST="127.0.0.1" \ -e MYSQL_DATABASE="zabbix" \ -e MYSQL_USER="zabbix" \ -e MYSQL_PASSWORD="zabbix_pwd" \ docker.io/zabbix/zabbix-web-nginx-mysql:alpine-latest
8. Verificación Final
Hacer una solicitud a la interfaz de Zabbix para confirmar que todo esté funcionando y que la configuración SSL esté activa:
curl -v https://sebelk.lab
Deberías ver una respuesta HTTP 200 desde NGINX, indicando que Zabbix está activo y funcionando con SSL.
9. Instalación del agente
podman run -d --name zabbix-agent --pod=zabbix \ -e ZBX_SERVER_HOST="127.0.0.1" \ -e ZBX_SERVER_PORT="10051" \ -e ZBX_HOSTNAME="ZabbixServerAgent" \ docker.io/zabbix/zabbix-agent2:alpine-latest
10. Deshabilitar variable en MySQL
La variable que habilitamos antes no es imprescindible, de modo que se puede desactivar:
podman exec -i mysql-server mysql -u\ root -p'root_pwd'\ -e "SET GLOBAL log_bin_trust_function_creators = 0;"
Todo listo
¡Listo! Trabajo terminado 😉
¿Qué te pareció la guía? Podés usar la sección de Comentarios.
Comentarios
Comments powered by Disqus