Page:
Backup y Restauración
Clone
1
Backup y Restauración
groales edited this page 2025-12-05 09:43:15 +01:00
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
# 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
# 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:
#!/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
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
# 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
# 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
#!/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
#!/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/
# 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
#!/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
- Actualización - Mantén CheckMK actualizado
- Automatiza - Configura cron para backups automáticos
- Prueba restauración - Verifica que los backups funcionan