From 44c35b4c48f7fa2e73a5f8dce969be1a903de7a3 Mon Sep 17 00:00:00 2001 From: groales Date: Fri, 5 Dec 2025 09:43:15 +0100 Subject: [PATCH] =?UTF-8?q?Wiki=20completa=20de=20CheckMK:=209=20p=C3=A1gi?= =?UTF-8?q?nas=20en=20espa=C3=B1ol?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Home: Índice, características, quick start, arquitectura - Traefik: Despliegue con labels puerto 5000, troubleshooting - NPM: Despliegue con Proxy Hosts, comparativa - Configuración Inicial: Primer acceso, usuarios, notificaciones - Monitorización: Añadir hosts Linux/Windows/SNMP, dashboards, checks - Backup y Restauración: omd backup, scripts automáticos, restauración - Actualización: Updates, rollback, Watchtower - Solución de Problemas: Diagnóstico, errores comunes, recuperación - Sidebar: Navegación completa --- Actualización.md | 232 +++++++++++++++++++++ Backup-y-Restauración.md | 224 ++++++++++++++++++++ Configuración-Inicial.md | 163 +++++++++++++++ Home.md | 127 +++++++++++- Monitorización.md | 228 +++++++++++++++++++++ NPM.md | 143 +++++++++++++ Solución-de-Problemas.md | 430 +++++++++++++++++++++++++++++++++++++++ Traefik.md | 165 +++++++++++++++ _Sidebar.md | 17 ++ 9 files changed, 1728 insertions(+), 1 deletion(-) create mode 100644 Actualización.md create mode 100644 Backup-y-Restauración.md create mode 100644 Configuración-Inicial.md create mode 100644 Monitorización.md create mode 100644 NPM.md create mode 100644 Solución-de-Problemas.md create mode 100644 Traefik.md create mode 100644 _Sidebar.md diff --git a/Actualización.md b/Actualización.md new file mode 100644 index 0000000..8bd6fa6 --- /dev/null +++ b/Actualización.md @@ -0,0 +1,232 @@ +# Actualización + +Mantén CheckMK actualizado de forma segura. + +## Pre-requisitos + +⚠️ **SIEMPRE haz backup antes de actualizar** + +```bash +# Backup rápido +docker exec checkmk omd backup /tmp/checkmk-pre-update-$(date +%Y%m%d).tar.gz +docker cp checkmk:/tmp/checkmk-pre-update-$(date +%Y%m%d).tar.gz ./ +``` + +--- + +## Actualizar CheckMK + +### Proceso Manual + +```bash +# 1. Backup (ver arriba) + +# 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. Verificar site +docker exec checkmk omd status + +# 7. Acceder y verificar +# https://checkmk.tudominio.com/monitoring/ +``` + +### Con Portainer + +1. Ve al stack `checkmk` +2. Click en **Pull and redeploy** +3. Espera 2-3 minutos +4. Verifica logs: `docker logs checkmk --tail 100` +5. Accede y verifica funcionamiento + +--- + +## Actualización de Versión Mayor + +### Ejemplo: 2.1.x → 2.2.x + +⚠️ **Las actualizaciones mayores requieren migración del site** + +```bash +# 1. Backup completo +docker exec checkmk omd backup /tmp/checkmk-pre-major-update.tar.gz +docker cp checkmk:/tmp/checkmk-pre-major-update.tar.gz ./ + +# 2. Detener y eliminar contenedor +docker stop checkmk +docker rm checkmk + +# 3. Actualizar imagen +docker pull checkmk/check-mk-raw:latest + +# 4. Recrear contenedor +docker compose up -d checkmk + +# 5. Esperar inicialización +sleep 60 + +# 6. Verificar migración automática +docker logs checkmk | grep -i "migration" + +# 7. Verificar site +docker exec checkmk omd status + +# 8. Acceder y verificar +``` + +Si hay problemas, restaura desde backup (ver sección siguiente). + +--- + +## Rollback (Revertir Actualización) + +### Rollback Rápido + +```bash +# 1. Detener contenedor actual +docker stop checkmk + +# 2. Volver a imagen anterior +docker pull checkmk/check-mk-raw:2.1.0 +docker tag checkmk/check-mk-raw:2.1.0 checkmk/check-mk-raw:latest + +# 3. Iniciar contenedor +docker start checkmk + +# 4. Verificar versión +docker exec checkmk omd version +``` + +### Rollback Completo (con restauración) + +```bash +# 1. Detener y eliminar +docker stop checkmk +docker rm checkmk + +# 2. Eliminar volumen +docker volume rm checkmk_data + +# 3. Recrear volumen +docker volume create checkmk_data + +# 4. Iniciar contenedor con versión anterior +docker compose up -d checkmk + +# 5. Esperar inicialización +sleep 60 + +# 6. Restaurar desde backup +docker cp checkmk-pre-update-20250105.tar.gz checkmk:/tmp/ +docker exec checkmk omd restore /tmp/checkmk-pre-update-20250105.tar.gz + +# 7. Reiniciar +docker restart checkmk +``` + +--- + +## Actualización Automática con Watchtower + +### Desplegar Watchtower + +```yaml +services: + watchtower: + image: containrrr/watchtower + restart: unless-stopped + environment: + WATCHTOWER_CLEANUP: "true" + WATCHTOWER_INCLUDE_STOPPED: "false" + WATCHTOWER_SCHEDULE: "0 0 3 * * *" # 3 AM diario + WATCHTOWER_ROLLING_RESTART: "true" + volumes: + - /var/run/docker.sock:/var/run/docker.sock +``` + +### Excluir CheckMK de Watchtower + +Si quieres control manual, añade label a `checkmk`: + +```yaml +services: + checkmk: + labels: + - "com.centurylinklabs.watchtower.enable=false" +``` + +--- + +## Checklist Post-Actualización + +### Verificar Funcionalidad + +- [ ] CheckMK accesible en https://checkmk.tudominio.com/monitoring/ +- [ ] Login funciona correctamente +- [ ] Hosts visibles y con datos +- [ ] Servicios reportando métricas +- [ ] Gráficos de rendimiento cargan +- [ ] Dashboards funcionan +- [ ] Notificaciones activas +- [ ] Agentes conectan correctamente + +### Verificar Logs + +```bash +# Sin errores críticos +docker logs checkmk | grep -i error +docker logs checkmk | grep -i fatal + +# Site corriendo +docker exec checkmk omd status +``` + +### Verificar Versión + +**Setup → Help → Info**: +- Debe mostrar la nueva versión +- Verificar que el site migró correctamente + +--- + +## Mantenimiento + +### Limpiar Imágenes Antiguas + +```bash +# Listar imágenes +docker images | grep checkmk + +# Eliminar imágenes sin usar +docker image prune -a +``` + +### Optimizar Site + +```bash +# Limpiar logs antiguos +docker exec checkmk bash -c "find /omd/sites/monitoring/var/log -name '*.log' -mtime +30 -delete" + +# Compactar RRD databases +docker exec checkmk cmk --optimize-rrds + +# Limpiar caché web +docker exec checkmk omd restart apache +``` + +--- + +## Próximos Pasos + +1. **[Backup](Backup-y-Restauración)** - Automatiza backups regulares +2. **Monitoriza** - Configura alertas de caídas +3. **Documenta** - Mantén registro de versiones diff --git a/Backup-y-Restauración.md b/Backup-y-Restauración.md new file mode 100644 index 0000000..937c867 --- /dev/null +++ b/Backup-y-Restauración.md @@ -0,0 +1,224 @@ +# Backup y Restauración + +Protege tu configuración de CheckMK con backups automáticos. + +## Qué Hacer Backup + +CheckMK almacena todo en el site (`/omd/sites/monitoring`): + +- Configuración de hosts y servicios +- Históricos de rendimiento (RRD databases) +- Usuarios y roles +- Dashboards personalizados +- Reglas y umbrales + +--- + +## Backup Manual + +### Backup Completo del Site + +```bash +# Backup completo +docker exec checkmk omd backup /tmp/checkmk-backup-$(date +%Y%m%d).tar.gz + +# Copiar fuera del contenedor +docker cp checkmk:/tmp/checkmk-backup-20250105.tar.gz ./ + +# Limpiar backup temporal del contenedor +docker exec checkmk rm /tmp/checkmk-backup-20250105.tar.gz + +# Verificar +tar -tzf checkmk-backup-20250105.tar.gz | head +``` + +### Backup Solo Configuración + +```bash +# Backup solo config (más rápido, sin históricos) +docker exec checkmk omd backup --no-rrds /tmp/checkmk-config-$(date +%Y%m%d).tar.gz +docker cp checkmk:/tmp/checkmk-config-20250105.tar.gz ./ +``` + +--- + +## Backup Automático + +### Script de Backup + +Crea `/root/backup-checkmk.sh`: + +```bash +#!/bin/bash + +# Configuración +BACKUP_DIR="/backups/checkmk" +DATE=$(date +%Y%m%d-%H%M%S) +RETENTION_DAYS=7 +SITE_ID="monitoring" + +# Crear directorio +mkdir -p $BACKUP_DIR + +# Backup completo del site +echo "Backing up CheckMK site..." +docker exec checkmk omd backup /tmp/checkmk-backup-$DATE.tar.gz + +# Copiar fuera del contenedor +docker cp checkmk:/tmp/checkmk-backup-$DATE.tar.gz $BACKUP_DIR/ + +# Limpiar temporal +docker exec checkmk rm /tmp/checkmk-backup-$DATE.tar.gz + +# Limpiar backups antiguos +echo "Cleaning old backups..." +find $BACKUP_DIR -name "checkmk-backup-*.tar.gz" -mtime +$RETENTION_DAYS -delete + +# Verificar tamaño +BACKUP_SIZE=$(du -h "$BACKUP_DIR/checkmk-backup-$DATE.tar.gz" | cut -f1) +echo "Backup completado: $DATE (Tamaño: $BACKUP_SIZE)" +``` + +### Automatizar con Cron + +```bash +chmod +x /root/backup-checkmk.sh +crontab -e + +# Backup diario a las 2 AM +0 2 * * * /root/backup-checkmk.sh >> /var/log/backup-checkmk.log 2>&1 +``` + +--- + +## Restauración + +### Restaurar desde Backup + +```bash +# 1. Detener CheckMK +docker stop checkmk + +# 2. Copiar backup al contenedor +docker cp checkmk-backup-20250105.tar.gz checkmk:/tmp/ + +# 3. Restaurar +docker exec checkmk omd restore /tmp/checkmk-backup-20250105.tar.gz + +# 4. Iniciar CheckMK +docker start checkmk + +# 5. Verificar +docker exec checkmk omd status +docker logs checkmk --tail 50 +``` + +### Restaurar en Contenedor Nuevo + +```bash +# 1. Crear volumen nuevo +docker volume create checkmk_data_new + +# 2. Iniciar contenedor temporal +docker run -d --name checkmk-temp \ + -v checkmk_data_new:/omd/sites \ + checkmk/check-mk-raw:latest + +# 3. Esperar inicialización +sleep 30 + +# 4. Copiar y restaurar backup +docker cp checkmk-backup-20250105.tar.gz checkmk-temp:/tmp/ +docker exec checkmk-temp omd restore /tmp/checkmk-backup-20250105.tar.gz + +# 5. Detener temporal +docker stop checkmk-temp +docker rm checkmk-temp + +# 6. Actualizar docker-compose.yml para usar checkmk_data_new +# 7. Desplegar stack normal +``` + +--- + +## Backup Remoto + +### Sincronizar con S3/MinIO + +```bash +#!/bin/bash +BACKUP_DIR="/backups/checkmk" +S3_BUCKET="s3://mi-bucket/checkmk/" + +# Hacer backup local primero +/root/backup-checkmk.sh + +# Sincronizar con S3 +aws s3 sync $BACKUP_DIR $S3_BUCKET --storage-class GLACIER + +# O con rclone +rclone sync $BACKUP_DIR minio:checkmk-backups +``` + +### Sincronizar con Rsync + +```bash +#!/bin/bash +BACKUP_DIR="/backups/checkmk" +REMOTE_SERVER="backup@servidor-remoto" +REMOTE_PATH="/backups/checkmk" + +# Sincronizar +rsync -avz --delete $BACKUP_DIR/ $REMOTE_SERVER:$REMOTE_PATH/ +``` + +--- + +## Backup de Configuración (Git) + +### Versionado de Configuración + +CheckMK puede exportar configuración a Git: + +**Setup → General → Site Management → Configuration → Enable Git support** + +Esto versiona todos los cambios en `/omd/sites/monitoring/etc/check_mk/` + +```bash +# Commit manual +docker exec checkmk bash -c "cd /omd/sites/monitoring/etc/check_mk && git add . && git commit -m 'Cambios de configuración'" + +# Ver historial +docker exec checkmk bash -c "cd /omd/sites/monitoring/etc/check_mk && git log --oneline" +``` + +--- + +## Verificación de Backups + +### Script de Verificación + +```bash +#!/bin/bash +BACKUP_FILE="/backups/checkmk/checkmk-backup-latest.tar.gz" + +# Verificar integridad +if tar -tzf "$BACKUP_FILE" > /dev/null 2>&1; then + echo "✓ Backup válido" + + # Verificar contenido + FILES=$(tar -tzf "$BACKUP_FILE" | wc -l) + echo "✓ Contiene $FILES archivos" +else + echo "✗ Backup corrupto" + exit 1 +fi +``` + +--- + +## Próximos Pasos + +1. **[Actualización](Actualización)** - Mantén CheckMK actualizado +2. **Automatiza** - Configura cron para backups automáticos +3. **Prueba restauración** - Verifica que los backups funcionan diff --git a/Configuración-Inicial.md b/Configuración-Inicial.md new file mode 100644 index 0000000..4e2d763 --- /dev/null +++ b/Configuración-Inicial.md @@ -0,0 +1,163 @@ +# Configuración Inicial + +Pasos para configurar CheckMK tras el primer despliegue. + +## Primer Acceso + +1. Accede a CheckMK: `https://checkmk.tudominio.com/monitoring/` +2. Login con credenciales iniciales: + - **Usuario**: `cmkadmin` + - **Contraseña**: La que configuraste en `CMK_PASSWORD` + +### Cambiar Contraseña (Recomendado) + +1. Click en **cmkadmin** (esquina superior derecha) +2. **Change password** +3. Ingresa contraseña actual y nueva (mínimo 8 caracteres) +4. **Save** + +--- + +## Configuración del Site + +### Global Settings + +**Setup → General → Global settings**: + +- **Site name**: `Monitorización Producción` +- **Admin email**: `admin@example.com` +- **Timezone**: `Europe/Madrid` +- **Date/Time format**: `2025-12-05 14:30:00` + +### Configurar URL Base + +**Setup → General → Site Management → Global Settings**: + +- **Site URL prefix**: `https://checkmk.tudominio.com/monitoring` + +Esto corrige enlaces en emails y notificaciones. + +--- + +## Usuarios y Roles + +### Crear Usuario + +**Setup → Users → Add user**: + +1. **Username**: `jperez` +2. **Full name**: `Juan Pérez` +3. **Email**: `jperez@example.com` +4. **Password**: Contraseña temporal +5. **Roles**: `User` (o `Administrator` si necesita acceso completo) +6. **Save** + +### Roles Disponibles + +- **Administrator**: Acceso completo al sistema +- **User**: Puede ver y gestionar monitorización +- **Guest**: Solo lectura + +### Crear Rol Personalizado + +**Setup → Users → Roles → Add role**: + +1. **ID**: `operator` +2. **Alias**: `Operador` +3. **Permissions**: + - ✅ View all hosts and services + - ✅ Acknowledge problems + - ❌ Configure CheckMK +4. **Save** + +--- + +## Configurar Notificaciones + +### Email (SMTP) + +**Setup → Notifications → Personal settings**: + +1. Click en **cmkadmin** → **Notification rules** +2. **Add rule**: + - **Description**: `Alertas críticas por email` + - **Notification Method**: `Email` + - **Contact selection**: `All contacts of the notified object` + - **Match conditions**: + - **State**: `CRITICAL` y `DOWN` + - **SMTP settings**: + - **SMTP server**: `smtp.gmail.com:587` + - **From**: `checkmk@example.com` + - **TLS**: Activado +3. **Save** + +### Slack + +1. Crea Webhook en Slack: `https://hooks.slack.com/services/XXX/YYY/ZZZ` +2. **Setup → Notifications → Add rule**: + - **Notification Method**: `Slack or Mattermost` + - **Webhook URL**: Pega la URL + - **Channel**: `#monitoring` +3. **Save** + +### Microsoft Teams + +Similar a Slack, usando webhook de Teams. + +--- + +## Contactos + +### Añadir Contacto + +**Setup → Users → Contacts → Add contact**: + +1. **ID**: `admin-team` +2. **Alias**: `Equipo Admin` +3. **Email**: `admin-team@example.com` +4. **Pager**: Número de teléfono (opcional) +5. **Save** + +### Asignar Contactos a Hosts + +Al crear/editar hosts: +- **Contacts**: Seleccionar contactos +- Los contactos recibirán notificaciones de ese host + +--- + +## Configuración de Site + +### Performance + +**Setup → General → Global settings → User Interface**: + +- **Number of columns for service views**: `3` +- **Number of elements to show**: `100` + +**Setup → General → Global settings → Performance**: + +- **Check result expiry**: `1800` (30 minutos) +- **Enable cached web pages**: ✅ Activado + +### Logging + +**Setup → General → Global settings → Logging**: + +- **Logging level**: `INFO` (production) o `DEBUG` (troubleshooting) + +--- + +## Licencia (CheckMK RAW) + +CheckMK RAW es gratuito y no requiere licencia. + +Si necesitas funcionalidades enterprise (reportes avanzados, distribuido, etc.), considera CheckMK Enterprise Edition. + +--- + +## Próximos Pasos + +1. **[Monitorización](Monitorización)** - Añade tus primeros hosts +2. **[Backup](Backup-y-Restauración)** - Automatiza backups +3. **Explora** - Familiarízate con la interfaz diff --git a/Home.md b/Home.md index 0ab951d..55c58c5 100644 --- a/Home.md +++ b/Home.md @@ -1 +1,126 @@ -¡Bienvenidos a la Wiki! \ No newline at end of file +# CheckMK RAW - Wiki + +Documentación completa para desplegar y configurar CheckMK RAW con Docker. + +## 📋 Índice + +### 🚀 Despliegue +- [Traefik](Traefik) - Despliegue con Traefik (proxy inverso + SSL automático) +- [NPM](NPM) - Despliegue con Nginx Proxy Manager + +### ⚙️ Configuración +- [Configuración Inicial](Configuración-Inicial) - Primer acceso, cambiar contraseña, site +- [Monitorización](Monitorización) - Añadir hosts, agentes, SNMP, dashboards + +### 💾 Mantenimiento +- [Backup y Restauración](Backup-y-Restauración) - Backups automáticos, restauración +- [Actualización](Actualización) - Actualizar CheckMK, rollback +- [Solución de Problemas](Solución-de-Problemas) - Diagnóstico, errores comunes + +--- + +## 🎯 Características + +- **Sistema de monitorización IT profesional** +- **Agentes**: Linux, Windows, Docker, SNMP +- **Dashboards**: Visualización en tiempo real +- **Alertas**: Email, SMS, Slack, Teams +- **Multi-sitio**: Gestión centralizada +- **Gratuito**: CheckMK RAW Edition (GPLv2) + +--- + +## ⚡ Quick Start + +### Requisitos + +- Docker Engine +- Portainer (recomendado) +- Red `proxy` creada +- Dominio configurado + +### Generar Contraseña + +**ANTES de desplegar**, genera 1 contraseña segura: + +```bash +# CMK_PASSWORD (usuario cmkadmin) +openssl rand -base64 32 +``` + +### Despliegue Básico + +1. **Crea el stack en Portainer** con Git Repository: + - URL: `https://git.ictiberia.com/groales/checkmk` + - Compose path: `docker-compose.yml` + +2. **Añade variables de entorno**: + ```env + CMK_PASSWORD=password_generado + DOMAIN_HOST=checkmk.tudominio.com + ``` + +3. **Deploy** y espera 2-3 minutos (CheckMK inicializa el site) + +4. **Accede** según tu proxy inverso: + - Con Traefik: `https://checkmk.tudominio.com/monitoring/` + - Con NPM: Configura proxy host primero (ver [NPM](NPM)) + +5. **Login**: + - Usuario: `cmkadmin` + - Contraseña: La que configuraste en `CMK_PASSWORD` + +--- + +## 📦 Arquitectura + +### Stack Docker + +``` +┌─────────────────────┐ +│ Traefik / NPM │ ← Puerto 443 (HTTPS) +└──────────┬──────────┘ + │ +┌──────────▼──────────┐ +│ CheckMK │ ← Puerto 5000 (interno) +│ (check-mk-raw) │ +└──────────┬──────────┘ + │ +┌──────────▼──────────┐ +│ checkmk_data │ ← Volumen persistente +│ (/omd/sites) │ +└─────────────────────┘ +``` + +### Componentes + +- **CheckMK**: Aplicación web (puerto 5000) +- **Site**: Instancia de monitorización (ID: `monitoring`) +- **Proxy**: Traefik o NPM para HTTPS + +### Volúmenes + +- `checkmk_data`: Configuración, históricos, RRD databases + +--- + +## 🔗 Próximos Pasos + +1. **Elige tu modo de despliegue**: + - [Traefik](Traefik) - Recomendado para múltiples servicios + - [NPM](NPM) - Más simple para configurar + +2. **Configura CheckMK**: + - [Configuración Inicial](Configuración-Inicial) - Cambiar contraseña, timezone + - [Monitorización](Monitorización) - Añadir tus primeros hosts + +3. **Automatiza backups**: + - [Backup y Restauración](Backup-y-Restauración) - Scripts de backup automáticos + +--- + +## 📚 Recursos Externos + +- [CheckMK Documentación Oficial](https://docs.checkmk.com/) +- [CheckMK Community](https://forum.checkmk.com/) +- [CheckMK GitHub](https://github.com/tribe29/checkmk) diff --git a/Monitorización.md b/Monitorización.md new file mode 100644 index 0000000..f3b74a1 --- /dev/null +++ b/Monitorización.md @@ -0,0 +1,228 @@ +# Monitorización + +Guía completa para añadir hosts y configurar monitorización en CheckMK. + +## Añadir Host Linux + +### Con Agente CheckMK + +1. **En CheckMK**: **Setup → Hosts → Add host** + - **Hostname**: `servidor01.example.com` + - **IPv4 address**: `192.168.1.10` + - **Site**: `monitoring` + - **Monitoring agents**: `Check_MK Agent (Server)` + - **Save & go to service configuration** + +2. **En el servidor Linux**: + +```bash +# Descargar agente +wget https://checkmk.tudominio.com/monitoring/check_mk/agents/check-mk-agent_2.x.x-1_all.deb + +# Instalar (Debian/Ubuntu) +sudo dpkg -i check-mk-agent_*.deb + +# O para RHEL/CentOS +sudo rpm -i check-mk-agent-*.rpm + +# Verificar instalación +systemctl status check-mk-agent@ + +# Permitir conexión desde CheckMK +# El agente escucha en puerto 6556 +sudo firewall-cmd --add-port=6556/tcp --permanent +sudo firewall-cmd --reload +``` + +3. **En CheckMK**: **Discover services** + - Click **Full scan** + - Revisa servicios detectados + - **Accept all** + - **Activate changes** + +--- + +## Añadir Host Windows + +1. **En CheckMK**: **Setup → Hosts → Add host** + - Configuración igual que Linux + - **Monitoring agents**: `Check_MK Agent (Server)` + +2. **En el servidor Windows**: + - Descarga `check_mk_agent.msi` desde CheckMK + - Ejecuta el instalador + - Configura IP/hostname del servidor CheckMK + - El agente se instala como servicio de Windows + +3. **Firewall Windows**: + - Permite puerto TCP 6556 entrante + - O el instalador lo hace automáticamente + +4. **En CheckMK**: **Discover services** y **Activate changes** + +--- + +## Añadir Dispositivo SNMP + +### Switch/Router + +1. **Habilitar SNMP en el dispositivo**: + +``` +# Cisco IOS example +snmp-server community public RO +snmp-server location "Datacenter Madrid" +snmp-server contact "admin@example.com" +``` + +2. **En CheckMK**: **Setup → Hosts → Add host** + - **Hostname**: `switch01.example.com` + - **IPv4 address**: `192.168.1.1` + - **Monitoring agents**: `SNMP` + - **SNMP community**: `public` (o tu community) + - **SNMP version**: `v2c` + - **Save & go to service configuration** + +3. **Discover services** y **Activate changes** + +### Impresora de Red + +Similar a switches: +- **Monitoring agents**: `SNMP` +- CheckMK detecta automáticamente niveles de tóner, papel, etc. + +--- + +## Monitorización Docker + +### Opción 1: Agente en Host Docker + +Instala agente CheckMK en el host que corre Docker. Detectará automáticamente contenedores. + +### Opción 2: Plugin Docker + +```bash +# En el host Docker, instala plugin +cd /usr/lib/check_mk_agent/plugins +wget https://checkmk.tudominio.com/monitoring/check_mk/agents/plugins/mk_docker.py +chmod +x mk_docker.py +``` + +Esto monitoriza: +- Contenedores corriendo +- Uso de CPU/RAM por contenedor +- Estado de imágenes y volúmenes + +--- + +## Dashboards + +### Crear Dashboard + +**Customize → Dashboards → Add dashboard**: + +1. **ID**: `overview` +2. **Title**: `Resumen General` +3. **Add dashlet**: + - **Host statistics**: Muestra hosts UP/DOWN + - **Service statistics**: Muestra servicios OK/WARNING/CRITICAL + - **Top alerters**: Hosts con más problemas + - **Performance graphs**: CPU, RAM, disco +4. **Save** + +### Dashlets Útiles + +- **Host/Service statistics**: Resumen de estado +- **Average scatterplot**: Gráficos de rendimiento +- **Event bar chart**: Eventos por tiempo +- **Custom graph**: Gráficos personalizados +- **View**: Vistas personalizadas + +--- + +## Grupos + +### Crear Grupos de Hosts + +**Setup → Hosts → Host groups → Add group**: + +- **Name**: `servidores-web` +- **Alias**: `Servidores Web` + +Al añadir hosts, asígnalos a grupos: +- **Host tags**: `Prod`, `Web`, `Critical` +- **Host groups**: Seleccionar grupos + +### Grupos de Servicios + +Similar a host groups, para organizar servicios. + +--- + +## Checks Personalizados + +### Local Check (Script Bash) + +En el host monitoreado: + +```bash +# Crear script en /usr/lib/check_mk_agent/local/ +cat > /usr/lib/check_mk_agent/local/custom_check.sh << 'EOF' +#!/bin/bash +# CheckMK local check format: STATUS NAME METRICS|OUTPUT + +if [ $(df / | tail -1 | awk '{print $5}' | sed 's/%//') -gt 90 ]; then + echo "2 DiskRoot - Disco raíz > 90%" +else + echo "0 DiskRoot size=85% Disco raíz OK" +fi +EOF + +chmod +x /usr/lib/check_mk_agent/local/custom_check.sh +``` + +En CheckMK, **Discover services** detectará `DiskRoot`. + +--- + +## Thresholds (Umbrales) + +### Configurar Umbrales + +**Setup → Hosts → Service monitoring rules**: + +1. Busca el servicio (ej: `CPU utilization`) +2. **Create rule** +3. **Conditions**: + - **WARNING**: `80%` + - **CRITICAL**: `95%` +4. **Apply to**: Seleccionar hosts/grupos +5. **Save** y **Activate changes** + +--- + +## Business Intelligence (BI) + +### Crear Agregación BI + +**Setup → Business Intelligence → Add aggregation**: + +Ejemplo: Disponibilidad de aplicación web + +1. **ID**: `webapp-availability` +2. **Title**: `Aplicación Web` +3. **Tree structure**: + - Nodo raíz: `WebApp` + - Nodo hijo: `Servidor Web` (host: web01) + - Nodo hijo: `Base de Datos` (host: db01) + - Nodo hijo: `Balanceador` (host: lb01) +4. **Aggregation function**: `Best` (OK si al menos uno está OK) +5. **Save** + +--- + +## Próximos Pasos + +1. **[Backup](Backup-y-Restauración)** - Automatiza backups +2. **[Configuración Inicial](Configuración-Inicial)** - Notificaciones +3. **Explora** - Crea más dashboards y vistas diff --git a/NPM.md b/NPM.md new file mode 100644 index 0000000..cbe5f8c --- /dev/null +++ b/NPM.md @@ -0,0 +1,143 @@ +# Despliegue con NPM + +Guía para desplegar CheckMK con Nginx Proxy Manager. + +## Requisitos + +- NPM desplegado y accesible +- Red Docker `proxy` creada +- DNS apuntando al servidor + +--- + +## Pasos de Despliegue + +### 1. Desplegar CheckMK + +En Portainer, crea el stack **sin archivo override** (solo `docker-compose.yml`): + +**Variables de entorno**: +```env +CMK_PASSWORD=password_generado +DOMAIN_HOST=checkmk.tudominio.com +``` + +### 2. Configurar Proxy Host en NPM + +1. Accede a NPM (ej: `https://npm.tudominio.com`) +2. Ve a **Hosts** → **Proxy Hosts** → **Add Proxy Host** + +#### Pestaña Details + +- **Domain Names**: `checkmk.tudominio.com` +- **Scheme**: `http` +- **Forward Hostname / IP**: `checkmk` +- **Forward Port**: `5000` +- ✅ **Cache Assets**: Activado +- ✅ **Block Common Exploits**: Activado +- ✅ **Websockets Support**: Activado + +#### Pestaña SSL + +- **SSL Certificate**: `Request a new SSL Certificate` +- **Email**: tu@email.com +- ✅ **Force SSL**: Activado +- ✅ **HTTP/2 Support**: Activado +- ✅ **HSTS Enabled**: Activado (opcional) + +3. **Save** + +### 3. Verificar + +- Accede a `https://checkmk.tudominio.com/monitoring/` +- Verifica el certificado SSL (candado verde) +- Login con `cmkadmin` / `password_generado` + +--- + +## Comparativa Traefik vs NPM + +| Aspecto | Traefik | NPM | +|---------|---------|-----| +| **Configuración** | Labels en compose | UI web | +| **SSL** | Automático | Manual por dominio | +| **Dificultad** | Media | Fácil | +| **Renovación SSL** | Automática | Automática | +| **Multi-dominio** | Excelente | Bueno | +| **Recomendado para** | Múltiples servicios | Pocos servicios | + +--- + +## Troubleshooting + +### Error 502 Bad Gateway + +**Verificar**: +```bash +# CheckMK corriendo +docker ps | grep checkmk + +# CheckMK en red proxy +docker inspect checkmk | grep -A 5 Networks + +# Site iniciado +docker exec checkmk omd status +``` + +**Soluciones**: +- Verificar que CheckMK está en red `proxy` +- Reiniciar CheckMK: `docker restart checkmk` +- Verificar que el puerto es `5000`, no `80` + +### Error 404 al acceder + +**Problema**: NPM redirige correctamente pero da 404 + +**Solución**: Añade `/monitoring/` al final del dominio: +``` +https://checkmk.tudominio.com/monitoring/ +``` + +O configura redirect en NPM **Custom locations**: +- **Define location**: `/` +- **Forward Hostname / IP**: `checkmk` +- **Forward Port**: `5000` +- **Forward Scheme**: `http` + +### Certificado SSL falla + +**Soluciones**: +- Verificar DNS apunta correctamente +- Intentar con DNS Challenge si puertos 80/443 bloqueados +- Regenerar certificado en NPM UI + +--- + +## Configuración Avanzada + +### Custom Locations para Agentes + +Si quieres servir agentes descargables directamente: + +**Custom locations**: +- **Define location**: `/monitoring/agents/` +- **Forward Hostname / IP**: `checkmk` +- **Forward Port**: `5000` + +### Rate Limiting + +Para proteger contra ataques, añade en NPM: + +**Advanced** tab: +```nginx +limit_req_zone $binary_remote_addr zone=checkmk_limit:10m rate=10r/s; +limit_req zone=checkmk_limit burst=20 nodelay; +``` + +--- + +## Próximos Pasos + +1. **[Configuración Inicial](Configuración-Inicial)** - Configurar CheckMK +2. **[Monitorización](Monitorización)** - Añadir hosts +3. **[Backup](Backup-y-Restauración)** - Automatiza backups diff --git a/Solución-de-Problemas.md b/Solución-de-Problemas.md new file mode 100644 index 0000000..1eb1c0d --- /dev/null +++ b/Solución-de-Problemas.md @@ -0,0 +1,430 @@ +# Solución de Problemas + +Diagnóstico y resolución de problemas comunes en CheckMK. + +## Diagnóstico General + +### Ver Logs + +```bash +# Logs del contenedor +docker logs checkmk --tail 100 -f + +# Logs del site +docker exec checkmk tail -f /omd/sites/monitoring/var/log/cmc.log + +# Logs de Apache +docker exec checkmk tail -f /omd/sites/monitoring/var/log/apache/access.log +docker exec checkmk tail -f /omd/sites/monitoring/var/log/apache/error.log +``` + +### Verificar Estado + +```bash +# Estado del contenedor +docker ps -a | grep checkmk + +# Estado del site +docker exec checkmk omd status + +# Uso de recursos +docker stats checkmk --no-stream + +# Versión +docker exec checkmk omd version +``` + +--- + +## Problemas Comunes + +### CheckMK No Inicia + +**Síntomas**: Contenedor se reinicia constantemente + +**Diagnóstico**: +```bash +docker logs checkmk | grep -i error +docker logs checkmk | grep -i fatal +``` + +**Causas comunes**: + +1. **Volumen corrupto** + ```bash + docker exec checkmk omd check + ``` + **Solución**: Restaurar desde backup + +2. **Permisos incorrectos** + ```bash + docker exec checkmk ls -la /omd/sites + ``` + **Solución**: + ```bash + docker exec checkmk chown -R monitoring:monitoring /omd/sites/monitoring + docker restart checkmk + ``` + +3. **Falta CMK_PASSWORD** + + **Síntomas**: Error "No password set for cmkadmin" + + **Solución**: Añadir `CMK_PASSWORD` en `.env` y recrear contenedor + +### Error 404 al Acceder + +**Síntomas**: `https://checkmk.tudominio.com` da 404 + +**Soluciones**: + +1. **Falta `/monitoring/` en la URL**: + ``` + https://checkmk.tudominio.com/monitoring/ + ``` + +2. **Site no iniciado**: + ```bash + docker exec checkmk omd status + docker exec checkmk omd start + ``` + +### Error 502 Bad Gateway (NPM/Traefik) + +**Síntomas**: Proxy no puede conectar con CheckMK + +**Diagnóstico**: +```bash +# Verificar que CheckMK está corriendo +docker ps | grep checkmk + +# Verificar puerto 5000 +docker exec checkmk netstat -tlnp | grep 5000 + +# Verificar desde proxy +docker exec npm curl http://checkmk:5000/monitoring/ +``` + +**Soluciones**: +- Verificar que CheckMK está en red `proxy` +- Verificar que el puerto es `5000`, no `80` +- Reiniciar CheckMK: `docker restart checkmk` +- Verificar que el site está iniciado: `docker exec checkmk omd status` + +### Site No Inicia + +**Síntomas**: `omd status` muestra servicios DOWN + +**Diagnóstico**: +```bash +docker exec checkmk omd status + +# Ver qué servicio falla +# Ejemplo salida: +# cmcd: stopped +# apache: running +``` + +**Soluciones**: + +1. **Reiniciar site completo**: + ```bash + docker exec checkmk omd restart + ``` + +2. **Iniciar servicio específico**: + ```bash + docker exec checkmk omd start cmc + docker exec checkmk omd start apache + ``` + +3. **Verificar configuración**: + ```bash + docker exec checkmk omd check + ``` + +4. **Reparar site (si está corrupto)**: + ```bash + docker exec checkmk omd stop + docker exec checkmk omd repair + docker exec checkmk omd start + ``` + +### Agentes No Conectan + +**Síntomas**: Host en CheckMK muestra "Connection refused" o "Timeout" + +**Diagnóstico**: + +```bash +# Probar conexión desde CheckMK +docker exec checkmk check_mk_agent 192.168.1.10 + +# Verificar firewall en host +# Puerto 6556 TCP debe estar abierto +telnet 192.168.1.10 6556 + +# Ver logs del agente (en el host) +# Linux: /var/log/check_mk/ +# Windows: C:\ProgramData\checkmk\agent\log\ +``` + +**Soluciones**: + +1. **Firewall bloqueando**: + ```bash + # En el host Linux + sudo firewall-cmd --add-port=6556/tcp --permanent + sudo firewall-cmd --reload + + # O iptables + sudo iptables -A INPUT -p tcp --dport 6556 -j ACCEPT + ``` + +2. **Agente no instalado/corriendo**: + ```bash + # Linux + systemctl status check-mk-agent@ + + # Windows + services.msc → buscar "Check MK Agent" + ``` + +3. **IP incorrecta en CheckMK**: + - Verificar IP del host en **Setup → Hosts** + +### CheckMK Lento + +**Diagnóstico**: +```bash +# Ver uso de recursos +docker stats checkmk + +# Ver procesos +docker exec checkmk top -b -n 1 + +# Ver queries lentas +docker exec checkmk cmk --debug +``` + +**Soluciones**: + +1. **Limpiar caché**: + ```bash + docker exec checkmk omd restart apache + ``` + +2. **Optimizar RRD databases**: + ```bash + docker exec checkmk cmk --optimize-rrds + ``` + +3. **Reducir frecuencia de checks**: + - **Setup → Service monitoring rules → Normal check interval** + - Cambiar de 1 min a 5 min para servicios no críticos + +4. **Aumentar recursos del contenedor**: + - Editar `docker-compose.yml`: + ```yaml + services: + checkmk: + deploy: + resources: + limits: + cpus: '2' + memory: 4G + ``` + +### Gráficos No Cargan + +**Síntomas**: Dashboards sin gráficos, errores "RRD not found" + +**Diagnóstico**: +```bash +# Verificar RRD databases +docker exec checkmk ls -la /omd/sites/monitoring/var/pnp4nagios/perfdata/ + +# Verificar permisos +docker exec checkmk stat /omd/sites/monitoring/var/pnp4nagios +``` + +**Soluciones**: + +1. **Regenerar RRDs**: + ```bash + docker exec checkmk cmk --update-rrds + ``` + +2. **Corregir permisos**: + ```bash + docker exec checkmk chown -R monitoring:monitoring /omd/sites/monitoring/var/pnp4nagios + ``` + +### Notificaciones No Llegan + +**Diagnóstico**: +```bash +# Ver logs de notificaciones +docker exec checkmk tail -f /omd/sites/monitoring/var/log/notify.log + +# Probar notificación manual +docker exec checkmk cmk --notify-test usuario@example.com +``` + +**Soluciones**: + +1. **Verificar reglas de notificación**: + - **Setup → Notifications → Personal notification rules** + +2. **Verificar SMTP**: + - Probar conexión SMTP desde CheckMK + ```bash + docker exec checkmk telnet smtp.gmail.com 587 + ``` + +3. **Verificar contactos asignados**: + - **Setup → Hosts** → Verificar que hosts tienen contactos + +--- + +## Comandos de Emergencia + +### Reiniciar Todo + +```bash +# Reiniciar contenedor +docker restart checkmk + +# Reiniciar solo el site +docker exec checkmk omd restart +``` + +### Recrear Contenedor (Mantiene Datos) + +```bash +docker stop checkmk +docker rm checkmk +docker compose up -d checkmk +``` + +### Acceso de Emergencia + +```bash +# Shell del contenedor +docker exec -it checkmk bash + +# Shell del site +docker exec -it checkmk bash -c "su - monitoring" + +# Resetear password de cmkadmin +docker exec checkmk htpasswd -b /omd/sites/monitoring/etc/htpasswd cmkadmin nuevapassword +``` + +### Limpiar Todo el Site + +```bash +# Detener site +docker exec checkmk omd stop + +# Limpiar caché y logs +docker exec checkmk bash -c "rm -rf /omd/sites/monitoring/tmp/*" +docker exec checkmk bash -c "rm -rf /omd/sites/monitoring/var/log/*" + +# Reiniciar +docker exec checkmk omd start +``` + +--- + +## Recuperación de Desastres + +### Site Corrupto - Restaurar desde Backup + +```bash +# 1. Detener site +docker exec checkmk omd stop + +# 2. Copiar backup +docker cp checkmk-backup-FECHA.tar.gz checkmk:/tmp/ + +# 3. Restaurar +docker exec checkmk omd restore /tmp/checkmk-backup-FECHA.tar.gz + +# 4. Iniciar +docker exec checkmk omd start + +# 5. Verificar +docker exec checkmk omd status +docker logs checkmk --tail 50 +``` + +### Volumen Corrupto + +```bash +# 1. Backup de volumen (si es posible) +docker run --rm -v checkmk_data:/data -v $(pwd):/backup alpine tar czf /backup/checkmk_volume_backup.tar.gz -C /data . + +# 2. Detener y eliminar +docker stop checkmk +docker rm checkmk +docker volume rm checkmk_data + +# 3. Recrear +docker volume create checkmk_data +docker compose up -d checkmk + +# 4. Restaurar backup +docker cp checkmk-backup.tar.gz checkmk:/tmp/ +docker exec checkmk omd restore /tmp/checkmk-backup.tar.gz +``` + +--- + +## Obtener Ayuda + +### Información del Sistema + +```bash +# Versión de CheckMK +docker exec checkmk omd version + +# Información del site +docker exec checkmk omd config show + +# Variables de entorno +docker exec checkmk env | grep -E "CMK_|SITE" + +# Configuración del contenedor +docker inspect checkmk +``` + +### Recursos Oficiales + +- [CheckMK Documentation](https://docs.checkmk.com/) +- [CheckMK Forum](https://forum.checkmk.com/) +- [CheckMK GitHub Issues](https://github.com/tribe29/checkmk/issues) +- [CheckMK Discord](https://discord.gg/fR7QEqV) + +--- + +## Prevención + +### Monitorización del Propio CheckMK + +1. Monitoriza el contenedor CheckMK desde otro sistema +2. Configura alertas de CPU/RAM/Disco +3. Monitoriza logs: `docker logs checkmk | grep -i error` + +### Backups Regulares + +- Automatiza backups diarios (ver [Backup y Restauración](Backup-y-Restauración)) +- Prueba restauración mensualmente +- Guarda backups en ubicación remota + +--- + +## Próximos Pasos + +1. **[Backup](Backup-y-Restauración)** - Automatiza backups para prevenir desastres +2. **[Actualización](Actualización)** - Mantén CheckMK actualizado +3. **[Comunidad](https://forum.checkmk.com/)** - Pregunta si no encuentras solución diff --git a/Traefik.md b/Traefik.md new file mode 100644 index 0000000..4158215 --- /dev/null +++ b/Traefik.md @@ -0,0 +1,165 @@ +# Despliegue con Traefik + +Guía para desplegar CheckMK con Traefik como proxy inverso. + +## Requisitos + +- Stack de Traefik desplegado y funcionando +- Red Docker `proxy` creada +- DNS apuntando al servidor +- Contraseña generada + +--- + +## Despliegue desde Portainer + +### 1. Configurar Variables + +En Portainer, al crear el stack con **Git Repository**, configura: + +**Environment variables**: +```env +# Contraseña requerida +CMK_PASSWORD=tu_password_generado + +# Site ID (opcional, default: monitoring) +CMK_SITE_ID=monitoring + +# Dominio (requerido) +DOMAIN_HOST=checkmk.tudominio.com +``` + +### 2. Subir Archivo Override + +En Portainer, en la sección **Additional paths**: +- Añade: `docker-compose.override.traefik.yml.example` + +### 3. Desplegar + +Click en **Deploy the stack** y espera 2-3 minutos. + +### 4. Verificar + +- Accede a `https://checkmk.tudominio.com/monitoring/` +- Verifica certificado SSL (candado verde) +- Login con `cmkadmin` / `tu_password` + +--- + +## Compose Completo con Traefik + +```yaml +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 + labels: + - traefik.enable=true + - 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 + - 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 + - traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https + - traefik.http.middlewares.redirect-to-https.redirectscheme.permanent=true + +volumes: + checkmk_data: + name: checkmk_data + +networks: + proxy: + external: true +``` + +--- + +## Labels de Traefik + +| Label | Valor | Descripción | +|-------|-------|-------------| +| `traefik.enable` | `true` | Habilita Traefik | +| `Host(\`${DOMAIN_HOST}\`)` | Dominio | Dominio que responde | +| `loadbalancer.server.port` | `5000` | Puerto interno CheckMK | +| `tls.certresolver` | `letsencrypt` | SSL automático | + +--- + +## Troubleshooting + +### Error 404 al acceder + +**Problema**: Accedes a `https://checkmk.tudominio.com` y da 404 + +**Solución**: Añade `/monitoring/` al final: +``` +https://checkmk.tudominio.com/monitoring/ +``` + +### CheckMK no responde + +**Verificar**: +```bash +# CheckMK corriendo +docker ps | grep checkmk + +# Site iniciado +docker exec checkmk omd status + +# Logs +docker logs checkmk --tail 100 +``` + +### Certificado SSL no funciona + +**Verificar**: +- DNS apunta correctamente al servidor +- Traefik tiene configurado `letsencrypt` certresolver +- Puertos 80/443 abiertos en firewall + +--- + +## Configuración Avanzada + +### Headers de Seguridad + +Añade middleware en Traefik para headers de seguridad: + +```yaml +labels: + - traefik.http.routers.checkmk.middlewares=secure-headers@file +``` + +En `traefik/config/middlewares.yml`: +```yaml +http: + middlewares: + secure-headers: + headers: + stsSeconds: 31536000 + stsIncludeSubdomains: true + stsPreload: true + forceSTSHeader: true +``` + +--- + +## Próximos Pasos + +1. **[Configuración Inicial](Configuración-Inicial)** - Configurar CheckMK +2. **[Monitorización](Monitorización)** - Añadir hosts +3. **[Backup](Backup-y-Restauración)** - Automatiza backups diff --git a/_Sidebar.md b/_Sidebar.md new file mode 100644 index 0000000..da2a440 --- /dev/null +++ b/_Sidebar.md @@ -0,0 +1,17 @@ +## CheckMK Wiki + +### 🚀 Inicio +- [Home](Home) + +### 📦 Despliegue +- [Traefik](Traefik) +- [NPM](NPM) + +### ⚙️ Configuración +- [Configuración Inicial](Configuración-Inicial) +- [Monitorización](Monitorización) + +### 💾 Mantenimiento +- [Backup y Restauración](Backup-y-Restauración) +- [Actualización](Actualización) +- [Solución de Problemas](Solución-de-Problemas)