From f1f2fdc3c3a4be76c0ad84417b1e32283c43345c Mon Sep 17 00:00:00 2001 From: groales Date: Fri, 5 Dec 2025 09:37:55 +0100 Subject: [PATCH] Commit inicial: CheckMK RAW con Traefik/NPM, sin standalone --- .env.example | 13 + .gitignore | 2 + README.md | 379 ++++++++++++++++++++ docker-compose.override.traefik.yml.example | 22 ++ docker-compose.yml | 22 ++ 5 files changed, 438 insertions(+) create mode 100644 .env.example create mode 100644 .gitignore create mode 100644 README.md create mode 100644 docker-compose.override.traefik.yml.example create mode 100644 docker-compose.yml diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..5e6514d --- /dev/null +++ b/.env.example @@ -0,0 +1,13 @@ +# === 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 + +# IMPORTANTE: Usa comillas simples si la contraseña contiene caracteres especiales +# Ejemplo: CMK_PASSWORD='tu_password_con_$_especiales' diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b8865ed --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.env +docker-compose.override.yml diff --git a/README.md b/README.md new file mode 100644 index 0000000..2f6f518 --- /dev/null +++ b/README.md @@ -0,0 +1,379 @@ +# CheckMK RAW + +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: + +```bash +# CMK_PASSWORD (usuario cmkadmin) +openssl rand -base64 32 +``` + +Guarda el resultado, lo necesitarás en el archivo `.env`. + +> ⚠️ **Importante**: Usa comillas simples en el archivo `.env` si la contraseña contiene caracteres especiales. +> Ejemplo: `CMK_PASSWORD='tu_password_generado'` + +--- + +## 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 URL**: `https://git.ictiberia.com/groales/checkmk` + - **Repository reference**: `refs/heads/main` + - **Compose path**: `docker-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: + +```env +CMK_PASSWORD=tu_password_generado +DOMAIN_HOST=checkmk.tudominio.com +``` + +7. 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** + +--- + +## Modos de Despliegue + +### Traefik (Proxy Inverso con SSL automático) + +**Requisitos**: +- Stack de Traefik desplegado +- Red `proxy` creada +- DNS apuntando al servidor + +Si desplegaste con **Opción A (Git Repository)** y añadiste el override en el paso 5, ya está todo configurado. + +Accede a `https://checkmk.tudominio.com` + +### Nginx Proxy Manager (NPM) + +**Requisitos**: +- NPM desplegado y accesible +- Red `proxy` creada +- DNS apuntando al servidor + +**Pasos**: + +1. Despliega el stack con el `docker-compose.yml` base (sin override) + +2. En NPM, crea un nuevo **Proxy Host**: + - **Domain Names**: `checkmk.tudominio.com` + - **Scheme**: `http` + - **Forward Hostname / IP**: `checkmk` + - **Forward Port**: `5000` + - **Cache Assets**: ✅ Activado + - **Block Common Exploits**: ✅ Activado + - **Websockets Support**: ✅ Activado + +3. En la pestaña **SSL**: + - **SSL Certificate**: Request a new SSL Certificate + - **Force SSL**: ✅ Activado + - **HTTP/2 Support**: ✅ Activado + +4. Guarda y accede a `https://checkmk.tudominio.com` + +--- + +## Configuración Inicial + +### Primer Acceso + +1. Accede a CheckMK: `https://checkmk.tudominio.com/monitoring/` +2. Login con: + - **Usuario**: `cmkadmin` + - **Contraseña**: La que configuraste en `CMK_PASSWORD` + +### Configuración Básica + +#### Cambiar Contraseña (Recomendado) + +1. Click en **cmkadmin** (esquina superior derecha) +2. **Change password** +3. Ingresa contraseña actual y nueva +4. **Save** + +#### Configurar Site + +**Setup → General → Global settings**: + +- **Site name**: Nombre descriptivo de tu site +- **Admin email**: Email del administrador +- **Timezone**: `Europe/Madrid` + +#### Configurar Notificaciones + +**Setup → Notifications**: + +- **Email notifications**: Configura servidor SMTP +- **Slack/Teams**: Webhooks para notificaciones +- **SMS**: Proveedores de SMS + +--- + +## Añadir Hosts + +### Host Linux con Agente + +1. **Setup → Hosts → Add host** +2. **Hostname**: `servidor01.example.com` +3. **IP address**: IP del servidor +4. **Monitoring agents**: `Check_MK Agent` +5. **Save & go to service configuration** + +**Instalar agente en el host**: + +```bash +# Descargar agente desde CheckMK +wget https://checkmk.tudominio.com/monitoring/check_mk/agents/check-mk-agent_2.x.x-1_all.deb + +# Instalar +dpkg -i check-mk-agent_2.x.x-1_all.deb + +# Permitir conexión desde CheckMK +# Edita /etc/xinetd.d/check-mk-agent o /etc/check_mk/check-mk-agent.cfg +``` + +6. **Discover services** en CheckMK +7. **Activate changes** + +### Host Windows con Agente + +1. Descarga el agente Windows desde CheckMK +2. Ejecuta `check_mk_agent.msi` en el servidor Windows +3. Configura IP del servidor CheckMK +4. En CheckMK, añade el host como arriba +5. **Discover services** y **Activate changes** + +### Dispositivo de Red (SNMP) + +1. **Setup → Hosts → Add host** +2. **Hostname**: `switch01.example.com` +3. **Monitoring agents**: `SNMP` +4. **SNMP community**: `public` (o tu community string) +5. **Save & discover services** +6. **Activate changes** + +--- + +## Dashboards y Vistas + +### Crear Dashboard Personalizado + +1. **Customize → Dashboards** +2. **Add dashboard** +3. Añade widgets: + - **Host statistics**: Resumen de hosts + - **Service statistics**: Resumen de servicios + - **Performance graphs**: Gráficas de rendimiento + - **Top alerts**: Alertas recientes + +### Vistas Personalizadas + +**Customize → Views**: + +- Crea vistas filtradas por grupos +- Exporta vistas como PDF/CSV +- Programa envíos automáticos + +--- + +## Backup y Restauración + +### Backup Manual + +```bash +# Backup completo del site +docker exec checkmk omd backup /tmp/checkmk-backup-$(date +%Y%m%d).tar.gz + +# Copiar backup fuera del contenedor +docker cp checkmk:/tmp/checkmk-backup-FECHA.tar.gz ./ +``` + +### Backup Automático + +Script `/root/backup-checkmk.sh`: + +```bash +#!/bin/bash +BACKUP_DIR="/backups/checkmk" +DATE=$(date +%Y%m%d-%H%M%S) +RETENTION_DAYS=7 + +mkdir -p $BACKUP_DIR + +# Backup del site +docker exec checkmk omd backup /tmp/checkmk-backup-$DATE.tar.gz +docker cp checkmk:/tmp/checkmk-backup-$DATE.tar.gz $BACKUP_DIR/ +docker exec checkmk rm /tmp/checkmk-backup-$DATE.tar.gz + +# Limpiar backups antiguos +find $BACKUP_DIR -name "*.tar.gz" -mtime +$RETENTION_DAYS -delete + +echo "Backup completado: $DATE" +``` + +Cron: +```bash +chmod +x /root/backup-checkmk.sh +crontab -e + +# Backup diario a las 3 AM +0 3 * * * /root/backup-checkmk.sh +``` + +### Restauración + +```bash +# Copiar backup al contenedor +docker cp checkmk-backup-FECHA.tar.gz checkmk:/tmp/ + +# Restaurar +docker exec checkmk omd restore /tmp/checkmk-backup-FECHA.tar.gz + +# Reiniciar +docker restart checkmk +``` + +--- + +## Actualización + +```bash +# 1. Backup ANTES de actualizar +docker exec checkmk omd backup /tmp/checkmk-pre-update.tar.gz +docker cp checkmk:/tmp/checkmk-pre-update.tar.gz ./ + +# 2. Detener contenedor +docker stop checkmk + +# 3. Actualizar imagen +docker pull checkmk/check-mk-raw:latest + +# 4. Iniciar contenedor +docker start checkmk + +# 5. Verificar versión +docker exec checkmk omd version + +# 6. Acceder y verificar funcionamiento +``` + +--- + +## Solución de Problemas + +### CheckMK no inicia + +```bash +# Ver logs +docker logs checkmk --tail 100 + +# Verificar permisos del volumen +docker exec checkmk ls -la /omd/sites + +# Reiniciar site +docker exec checkmk omd restart +``` + +### Agente no conecta + +```bash +# Probar conexión desde CheckMK +docker exec checkmk check_mk_agent HOST + +# Verificar firewall en host +# Puerto 6556 TCP debe estar abierto + +# Ver logs del agente +# En Linux: /var/log/check_mk/ +# En Windows: C:\ProgramData\checkmk\agent\log\ +``` + +### Site corrupto + +```bash +# Detener site +docker exec checkmk omd stop + +# Verificar integridad +docker exec checkmk omd check + +# Reparar (si es posible) +docker exec checkmk omd repair + +# Restaurar desde backup (última opción) +docker exec checkmk omd restore /tmp/backup.tar.gz +``` + +--- + +## Variables de Entorno + +### Requeridas + +| Variable | Descripción | Ejemplo | +|----------|-------------|---------| +| `CMK_PASSWORD` | Contraseña usuario cmkadmin | `generada_con_openssl` | +| `DOMAIN_HOST` | Dominio completo | `checkmk.example.com` | + +### Opcionales + +| Variable | Descripción | Valor por defecto | +|----------|-------------|-------------------| +| `CMK_SITE_ID` | ID del site CheckMK | `monitoring` | + +--- + +## Recursos + +- [CheckMK Documentación Oficial](https://docs.checkmk.com/) +- [CheckMK Docker Hub](https://hub.docker.com/r/checkmk/check-mk-raw) +- [CheckMK Community](https://forum.checkmk.com/) +- [CheckMK GitHub](https://github.com/tribe29/checkmk) + +--- + +## Licencia + +CheckMK RAW Edition es software de código abierto bajo licencia GPLv2. diff --git a/docker-compose.override.traefik.yml.example b/docker-compose.override.traefik.yml.example new file mode 100644 index 0000000..a794af7 --- /dev/null +++ b/docker-compose.override.traefik.yml.example @@ -0,0 +1,22 @@ +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 diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..befc6b0 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,22 @@ +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