Skip to main content

Check_MK

Checkmk es un software desarrollado en Python y C++ para la monitorización de infraestructuras de TI. Se utiliza para la monitorización de servidores, aplicaciones de software, redes, infraestructuras en la nube, contenedores, almacenamiento de datos, bases de datos y sensores.

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

Requisitos

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:
    • DockerRepository oURL: Podman instalado siguiendo los pasos de instalarhttps://git.ictiberia.com/groales/checkmk
    • PortainerRepository configuradoreference: siguiendo los pasos de instalar portainer.refs/heads/main
    • NGINXCompose Proxypath: managerdocker-compose.yml
    • siguiendo
    • GitOps losupdates: pasos de instalar NGINX Proxy Manager.Activado (opcional)
  5. TraefikSolo configurado siguiendo los pasos de instalarpara Traefik.: (opcional)
    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

ImagenOpción B: Web editor

checkmk/check-mk-raw

  1. En DockerPortainer, Image | Docker Hub

    Portainer- Agregar nuevo «stack»

    AddvenewStacks → Add stack

  2. Nombra Portainerel Documentation

    stack: 

    checkmk

  3. Selecciona Web editor
  4. En Portainer «Stack» agregamos nuevo usando el editor WEB pegando

  5. Pega el contenido delde fichero «docker-compose.yml»yml
  6. y
  7. En elEnvironment contenidovariables, delañade ficherolas demismas variables modificandoque losla valoresOpción necesariosA
  8. Click en Deploy the stack

2.15-docker_add_stack_web_editor.gifFxR2-15-docker-add-stack-web-editor.gif

Fichero de variables «.env»Variables

TZ=Europe/Madrid# MAIL_RELAY_HOST=mailrelay.=== 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=mysite #default cmk
CMK_PASSWORD=mypassword
CMK_LIVESTATUS_TCP=onmonitoring

Fichero docker-compose.ymlcompose

services:
  cmk:checkmk:
    container_name: checkmk
    image: checkmk/check-mk-raw
    container_name: cmkraw:latest
    restart: unless-stopped
    env_file:environment:
      stack.envCMK_SITE_ID: ${CMK_SITE_ID:-monitoring}
      CMK_PASSWORD: ${CMK_PASSWORD}
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - sites:checkmk_data:/omd/sites
    tmpfs:
      - /omd/sites/cmk/tmp:uid=1000,gid=1000
    ports:
      - 5000:5000
    networks:
      - proxy
    tmpfs:
      - /opt/omd/sites/${CMK_SITE_ID:-monitoring}/tmp:uid=1000,gid=1000

volumes:
  sites:checkmk_data:
    name: checkmk_data

networks:
  proxy:
    external: true

Despliegue con Docker CLI

EnSi esteprefieres puntotrabajar yadesde puedesla irlínea ade http:comandos:

1. Clonar el repositorio

git clone https://my.docker.ip.address:5000git.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 "cmk.checkmk.domain.com"

NGINX proxy

image.png

Para publicar el contenedor detrás de de NGINX proxy, como el stack está en la red 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 proxy Traefik, deberás añadir al fichero fichero docker-compose.yaml  las siguientes etiquetas al servicio servicio cmk

services:
  checkmk:
    labels:
      # Habilitar Traefik
      - traefik.enable=true
      
      # Router HTTP (redirige a HTTPS)
      - traefik.http.routers.cmk.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.cmk.checkmk.tls.certresolver=letsencrypt
      - traefik.http.routers.cmk.rule=Host(`cmk.dominio.com`)checkmk.service=checkmk-svc
      - traefik.http.services.cmk.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 http:https://cmk.checkmk.dominio.com

Solo IPs Privadas

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

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