Docker Check_mk
Para configurar un entorno de Check_mk usando Docker Compose, necesitas crear un archivo docker-compose.yml que defina los servicios, volúmenes y configuraciones necesarias. Check_mk es una herramienta de monitoreo que permite a los usuarios vigilar su infraestructura de IT, aplicaciones, servicios y redes. La versión de Check_mk que se ejecutará en Docker puede ser la versión Raw (gratuita) o la versión Enterprise (de pago).
A continuación, te proporciono un ejemplo básico de cómo podría lucir el archivo docker-compose.yml para levantar un servicio de Check_mk Raw Edition usando Docker. Este ejemplo asume que deseas almacenar los datos de Check_mk en un volumen Docker para persistencia de datos, lo cual es una práctica recomendada para evitar perder tus datos cuando el contenedor se detenga o se elimine.
# docker-compose.yml
services:
checkmk:
image: checkmk/check-mk-raw:latest
container_name: checkmk
ports:
# - "162:162/udp"
# - "514:514/udp"
# - "514:514/tcp"
- "6557:6557/tcp"
- "8080:5000/tcp"
volumes:
- '/etc/localtime:/etc/localtime:ro'
- './odm-sites:/omd/sites'
tmpfs:
- /opt/omd/sites/cmk/tmp:uid=1000,gid=1000
ulimits:
nofile: 1024
environment:
- CMK_SITE_ID=cmk
- CMK_SITE_ALIAS=CheckMK
- CMK_PASSWORD=your_password_here
- MAIL_RELAY_HOST=your.mail.relay.host
- TZ=Europe/Berlin
restart: unless-stopped
Descripción de los componentes del archivo:
Notas adicionales:
Para ejecutar este entorno, simplemente guarda este contenido en un archivo llamado docker-compose.yml y ejecuta el siguiente comando en la misma carpeta donde guardaste el archivo:
docker-compose up -d
Este comando descargara la imagen de Check_mk si aún no la tienes, creará un contenedor basado en esa imagen y lo iniciará en modo "detached" (en segundo plano). Podrás acceder a la interfaz web de Check_mk navegando a http://localhost:8080/cmk en tu navegador, utilizando el ID de sitio (cmk) y la contraseña que hayas configurado.
Comandos adicionales que pueden ir bien para ajustar
Verifica si el Servicio está Escuchando: Puedes usar el comando netstat o ss en el servidor para verificar si algún servicio está escuchando en el puerto 3001. Ejemplo:
netstat -tuln | grep 3001
ss -tuln | grep 3001 Si no ves el puerto 3001 en la lista, significa que ningún servicio está escuchando en ese puerto.
Prueba con Telnet o nc (netcat): Puedes probar la conectividad al puerto usando telnet o nc (netcat). Ejemplo:
telnet 172.31.100.249 3001 nc -vz 172.31.100.249 3001 Si estos comandos muestran un mensaje de éxito, significa que hay conectividad al puerto, pero si muestran un error, indica que algo está bloqueando la conexión.
Prueba de Conexión Local:Dado que estás en el mismo servidor, intenta conectarte usando localhost o 127.0.0.1:
nc -vz localhost 3001 nc -vz 127.0.0.1 3001 Si esto funciona, el problema está en la red externa o en la forma en que las solicitudes externas están siendo manejadas/ruteadas al servidor.
Verificar la Configuración de IPTables: Revisa las reglas actuales de iptables para asegurarte de que no haya ninguna regla que esté bloqueando explícitamente las conexiones entrantes al puerto 3001 desde direcciones IP externas:
sudo iptables -L -v
Busca reglas que puedan estar rechazando el tráfico hacia ese puerto. Si encuentras alguna, necesitarás modificar o eliminar esa regla. Para permitir tráfico hacia el puerto 3001, puedes agregar una regla como esta:
sudo iptables -A INPUT -p tcp --dport 3001 -j ACCEPT
Verificar la Configuración del Firewall (nftables): Debian 12 utiliza nftables como el sistema de firewall predeterminado. Asegúrate de que no haya reglas que bloqueen las conexiones al puerto 3001. Puedes listar las reglas actuales con:
sudo nft list ruleset
Si es necesario, puedes agregar una regla para permitir el tráfico al puerto 3001 a través de nftables.
Para ingresar a un contenedor Docker y empezar una sesión interactiva con bash, puedes usar el comando docker exec seguido de la opción -it (interactivo con asignación de tty), el ID del contenedor o su nombre, y el comando que deseas ejecutar dentro del contenedor, en este caso, bash. Dado que el ID de tu contenedor es 70dd0a322652 y el nombre es checkmk, puedes usar cualquiera de los dos para acceder.
Aquí tienes cómo hacerlo con el ID del contenedor:
docker exec -it 70dd0a322652 bash
O utilizando el nombre del contenedor:
docker exec -it checkmk bash
Si el contenedor no tiene bash instalado (algunas imágenes base de Docker son muy minimalistas y podrían no incluir bash), puedes intentar usar sh en su lugar:
docker exec -it 70dd0a322652 sh
Esto te dará acceso a una shell dentro del contenedor, desde donde puedes navegar por el sistema de archivos del contenedor, ejecutar comandos para inspeccionar la configuración de los servicios, revisar archivos de configuración, logs internos del contenedor, y mucho más, lo cual puede ser útil para diagnosticar y solucionar problemas.
No Comments