Skip to main content

Check_MK

main_dashboard_hover.png

Sistema de monitorización IT profesional. Monitoriza servidores, aplicaciones, redes y servicios.

Características

  • 🖥️ Monitorización completa: Servidores, aplicaciones, red, cloud
  • 📊 Dashboards: Visualización en tiempo real
  • 🔔 Alertas: Notificaciones por email, SMS, Slack, etc.
  • 📈 Métricas: Históricos de rendimiento y disponibilidad
  • 🔌 Agentes: Linux, Windows, Docker, SNMP
  • 🌐 Multi-sitio: Gestión centralizada de múltiples sites
  • 📱 Aplicación móvil: Monitorización desde el móvil
  • 🔧 Extensible: Plugins y checks personalizados

Requisitos Previos

  • Docker Engine instalado
  • Portainer configurado (recomendado)
  • Para Traefik o NPM: Red Docker proxy creada
  • Dominio configurado: Para acceso HTTPS
  • Contraseña generada: CMK_PASSWORD

⚠️ IMPORTANTE: CheckMK RAW es la versión gratuita. Para funcionalidades enterprise, considera CheckMK Enterprise.

Generar Contraseña

Antes de cualquier despliegue, genera una contraseña segura:

# CMK_PASSWORD (usuario cmkadmin)
openssl rand -base64 32

Guarda el resultado, lo necesitarás en el archivo .env.

Enlaces

Despliegue con Portainer

Opción A: Git Repository (Recomendada)

  1. En Portainer, ve a Stacks → Add stack
  2. Nombra el stack: checkmk
  3. Selecciona Git Repository
  4. Configura:
    • Repository URLhttps://git.ictiberia.com/groales/checkmk
    • Repository referencerefs/heads/main
    • Compose pathdocker-compose.yml
    • GitOps updates: Activado (opcional)
  5. Solo para Traefik: En Additional paths, añade:
    • docker-compose.override.traefik.yml.example
  6. En Environment variables, añade:
CMK_PASSWORD=tu_password_generado
DOMAIN_HOST=checkmk.tudominio.com
  1. Click en Deploy the stack

Opción B: Web editor

  1. En Portainer, ve a Stacks → Add stack
  2. Nombra el stack: checkmk
  3. Selecciona Web editor
  4. Pega el contenido de docker-compose.yml
  5. En Environment variables, añade las mismas variables que la Opción A
  6. Click en Deploy the stack

FxR2-15-docker-add-stack-web-editor.gif

Variables

# === VARIABLES REQUERIDAS ===
# Contraseña del usuario cmkadmin (generada con: openssl rand -base64 32)
CMK_PASSWORD=''

# Dominio completo (requerido para acceso web)
DOMAIN_HOST=checkmk.example.com

# === CONFIGURACIÓN OPCIONAL ===
# ID del site (nombre de la instancia)
CMK_SITE_ID=monitoring

docker-compose

services:
  checkmk:
    container_name: checkmk
    image: checkmk/check-mk-raw:latest
    restart: unless-stopped
    environment:
      CMK_SITE_ID: ${CMK_SITE_ID:-monitoring}
      CMK_PASSWORD: ${CMK_PASSWORD}
    volumes:
      - checkmk_data:/omd/sites
    networks:
      - proxy
    tmpfs:
      - /opt/omd/sites/${CMK_SITE_ID:-monitoring}/tmp:uid=1000,gid=1000

volumes:
  checkmk_data:
    name: checkmk_data

networks:
  proxy:
    external: true

Despliegue con Docker CLI

Si prefieres trabajar desde la línea de comandos:

1. Clonar el repositorio

git clone https://git.ictiberia.com/groales/checkmk.git
cd checkmk

2. Generar contraseña

Contraseña para el usuario cmkadmin:

openssl rand -base64 32

3. Elegir modo de despliegue

Opción A: Traefik (recomendado para producción)

cp docker-compose.override.traefik.yml.example docker-compose.override.yml
cp .env.example .env
nano .env  # Editar: pegar CMK_PASSWORD, configurar DOMAIN_HOST

Opción B: Nginx Proxy Manager

cp .env.example .env
nano .env  # Editar: pegar CMK_PASSWORD, configurar DOMAIN_HOST

4. Iniciar el servicio

docker compose up -d

⏱️ La inicialización puede tardar 2-3 minutos (creación del site, configuración OMD).

5. Verificar el despliegue

# Ver logs en tiempo real
docker compose logs -f checkmk

# Verificar contenedores activos
docker compose ps

# Verificar estado del site CheckMK
docker compose exec checkmk omd status

# Listar sites disponibles
docker compose exec checkmk omd sites

Publicando detrás de un proxy

Crear registro DNS

En el proveedor que aloja el servidor DNS público, crear un registro DNS que resuelva la IP pública que llega al Proxy hacia un nombre del estilo "checkmk.domain.com"

NGINX proxy

image.png

Para publicar el contenedor detrás de NGINX proxy, como el stack está en la red proxy solo deberás crear un nuevo host

Crear un nuevo "proxy host"

Añade un nuevo proxy host con el nombre de dominio creado en el paso anterior redirigido hacia el nombre del contenedor y el puerto que use (5000 en este caso):

image.png

Traefik

traefik-concepts-1.webp

Para publicar el contenedor detrás del proxy Traefik, deberás añadir al fichero docker-compose.yaml las siguientes etiquetas al servicio cmk

services:
  checkmk:
    labels:
      # Habilitar Traefik
      - traefik.enable=true
      
      # Router HTTP (redirige a HTTPS)
      - traefik.http.routers.checkmk-http.rule=Host(`${DOMAIN_HOST}`)
      - traefik.http.routers.checkmk-http.entrypoints=web
      - traefik.http.routers.checkmk-http.middlewares=redirect-to-https
      
      # Router HTTPS
      - traefik.http.routers.checkmk.rule=Host(`${DOMAIN_HOST}`)
      - traefik.http.routers.checkmk.entrypoints=websecure
      - traefik.http.routers.checkmk.tls=true
      - traefik.http.routers.checkmk.tls.certresolver=letsencrypt
      - traefik.http.routers.checkmk.service=checkmk-svc
      - traefik.http.services.checkmk-svc.loadbalancer.server.port=5000
      
      # Redirect middleware
      - traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https
      - traefik.http.middlewares.redirect-to-https.redirectscheme.permanent=true

En este punto ya puedes ir a https://checkmk.dominio.com

Solo IPs Privadas

Para permitir el acceso solo desde redes privadas, modifica en la sección de «labels» del fichero docker-compose.yml, para añadir la siguiente linea y configurar el «middleware» «privateIPs@file»

- traefik.http.routers.cmk.middlewares=privateIPs@file