Skip to main content

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:

  • image: La imagen Docker de Check_mk que se utilizará. Este ejemplo usa la versión Raw más reciente de Check_mk.
  • container_name: El nombre que quieres darle al contenedor de Check_mk.
  • ports: El mapeo de puertos entre el host y el contenedor. Este ejemplo mapea el puerto 8080 del host al puerto 5000 del contenedor, que es el puerto por defecto que usa Check_mk.
  • volumes: Define un volumen Docker para almacenar los datos de Check_mk de manera persistente. Esto asegura que no perderás tus datos cuando el contenedor se reinicie o se elimine.
  • environment: Variables de entorno para configurar el sitio Check_mk. Puedes establecer el ID del sitio, un alias, la contraseña de administrador, el host de retransmisión de correo y la zona horaria.

Notas adicionales:

  • Asegúrate de cambiar "your_password_here" por una contraseña segura que desees usar para la cuenta de administrador de Check_mk.
  • Si necesitas configurar un servidor de retransmisión de correo, reemplaza "your.mail.relay.host" con la dirección de tu servidor de correo. Si no lo necesitas, puedes omitir esta variable de entorno.
  • Adapta la zona horaria ("TZ") a tu ubicación.

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.