Commit inicial: CheckMK RAW con Traefik/NPM, sin standalone

This commit is contained in:
2025-12-05 09:37:55 +01:00
commit f1f2fdc3c3
5 changed files with 438 additions and 0 deletions

379
README.md Normal file
View File

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