Wiki completa de CheckMK: 9 páginas en español

- 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
2025-12-05 09:43:15 +01:00
parent 43a8ee15b8
commit 44c35b4c48
9 changed files with 1728 additions and 1 deletions

232
Actualización.md Normal file

@@ -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

224
Backup-y-Restauración.md Normal file

@@ -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

163
Configuración-Inicial.md Normal file

@@ -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

127
Home.md

@@ -1 +1,126 @@
¡Bienvenidos a la Wiki! # 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)

228
Monitorización.md Normal file

@@ -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

143
NPM.md Normal file

@@ -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

430
Solución-de-Problemas.md Normal file

@@ -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

165
Traefik.md Normal file

@@ -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

17
_Sidebar.md Normal file

@@ -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)