Optimiza Uptime Kuma: Cómo Controlar la Retención de Datos en tu Base de Datos

¿Sabías que, con el tiempo, la base de datos de Uptime Kuma puede crecer hasta ocupar más espacio del necesario? Aunque esta herramienta de monitoreo es increíblemente eficiente, el almacenamiento de datos históricos puede convertirse en un problema, especialmente si estás ejecutándolo en un sistema con recursos limitados.

En este artículo exploraremos dos enfoques para controlar la retención de datos y optimizar tu base de datos:

  1. Método Sencillo (Nativo): Usar las opciones integradas en el panel de Uptime Kuma para ajustar la retención de datos y realizar VACUUM de forma sencilla.
  2. Método Granular y Detallado (Manual): Un método más flexible, útil para usuarios con versiones anteriores a la introducción de las funcionalidades nativas, o que necesiten un control más personalizado.

Si aún no tienes Uptime Kuma instalado, consulta nuestra guía sobre cómo instalar Uptime Kuma con Docker en Linux.


¿Por Qué Limitar el Crecimiento de la Base de Datos?

Aunque Uptime Kuma funciona bien con pocos recursos, el crecimiento de su base de datos puede ocasionar:

  • Mayor uso de almacenamiento: Datos innecesarios, como registros antiguos de «heartbeat», pueden acumularse con el tiempo.
  • Rendimiento degradado: Consultas más lentas a medida que la base de datos se vuelve más grande.
  • Problemas de mantenimiento: Migraciones más complicadas o backups más grandes de lo necesario.

La solución es simple: configurar un proceso automatizado que elimine los registros más antiguos y compacte la base de datos regularmente.


Requisitos Previos

Antes de comenzar, asegúrate de tener:

  1. Acceso a tu instalación de Docker: Si no tienes Docker configurado, consulta nuestra guía sobre cómo instalar Docker.
  2. Uptime Kuma instalado: Puedes seguir nuestra guía de instalación de Uptime Kuma.
  3. Conocimientos básicos de terminal y permisos sudo.

Método Sencillo (Función Nativa en Uptime Kuma)

Nota: En las versiones mas recientes, Uptime Kuma integra opciones nativas para controlar la retención de datos desde el panel. Ahora es posible ajustar el número de días que se conservan los datos históricos y realizar un Shrink database para compactarla.

Pasos para el método nativo:

  1. Accede a Uptime Kuma y haz click en el ícono de la cuenta arriba a la derecha
  2. Click en Settings
  3. Click en Monitor History.
  4. Establece la retención en días según tus necesidades. Por ejemplo, 30 días.
  5. Si lo deseas, haz clic en Shrink database para ejecutar VACUUM en SQLite. Esta acción compactará la base de datos, eliminando fragmentos vacíos.

De esta forma, podrás controlar el crecimiento de la base de datos sin recurrir a scripts ni cron jobs.

Nota: Si tienes una base de datos creada después de la versión 1.10.0 de Uptime Kuma, AUTO_VACUUM ya está habilitado y es posible que no necesites el método manual. Sin embargo, conocerlo te brinda una mejor comprensión del funcionamiento interno y puede ser útil para escenarios avanzados.


Método Granular y Detallado (Manual)

Si, por algún motivo, prefieres un control más detallado o usas una versión anterior de Uptime Kuma que no incluya las opciones nativas, puedes recurrir al siguiente método manual para gestionar la retención de datos. También puede ser útil si necesitas mayor flexibilidad en tus ajustes, periodos de retención específicos o acciones adicionales.

1. Instalar SQLite

SQLite es el motor de base de datos que utiliza Uptime Kuma. Para interactuar con su base de datos, instálalo ejecutando:

sudo apt install sqlite3 -y

Esto te permitirá ejecutar comandos para limpiar y compactar la base de datos.


2. Crear un Script de Limpieza

Navega al directorio donde se almacena la base de datos de Uptime Kuma:

cd /var/lib/docker/volumes/uptime-kuma/_data/

Crea un archivo llamado clean.sh con el siguiente contenido:

nano clean.sh

Contenido del Script:

#!/bin/bash

DB_PATH="/var/lib/docker/volumes/uptime-kuma/_data/kuma.db"

sqlite3 "$DB_PATH" <<EOF
DELETE FROM heartbeat WHERE time < datetime('now', '-1 year');
VACUUM;
.exit
EOF

Guarda el archivo y sal del editor (Ctrl+O, Enter, Ctrl+X).

¿Qué Hace Este Script?

  1. DB_PATH: Define la ruta a la base de datos kuma.db.
  2. Eliminar registros antiguos: Usa el comando DELETE FROM heartbeat para eliminar todos los registros en la tabla heartbeat que sean más antiguos que un año (datetime('now', '-1 year')).
  3. Compactar la base de datos: Ejecuta VACUUM, que reduce el tamaño físico del archivo al eliminar fragmentos vacíos creados por la operación de eliminación.

¿Cómo Cambiar el Intervalo de Tiempo?

  • 1 mes: Cambia datetime('now', '-1 year') por datetime('now', '-1 month').
  • 3 meses: Usa datetime('now', '-3 months').
  • 6 meses: Usa datetime('now', '-6 months').

Ajusta este valor según tus necesidades de retención de datos.


3. Hacer el Script Ejecutable

Para que el script se pueda ejecutar, cambia sus permisos:

chmod +x clean.sh

4. Programar Limpiezas Automáticas con Cron

Configura un cron job para que el script se ejecute automáticamente. Edita la tabla de cron:

crontab -e

Configuración del Cron Job

Añade la siguiente línea al final del archivo para ejecutarlo diariamente a las 2:00 a.m.:

0 2 * * * /var/lib/docker/volumes/uptime-kuma/_data/clean.sh >> /var/lib/docker/volumes/uptime-kuma/_data/clean.log 2>&1

¿Qué Hace Este Cron Job?

  • 0 2 * * *: Programa el script para ejecutarse diariamente a las 2:00 a.m.
  • /var/lib/docker/volumes/uptime-kuma/_data/clean.sh: Especifica la ruta del script a ejecutar.
  • >> /var/lib/docker/volumes/uptime-kuma/_data/clean.log: Redirige la salida estándar (resultados normales del script) al archivo clean.log, guardando un historial de las ejecuciones del script.
  • 2>&1: Redirige los errores (si los hay) al mismo archivo clean.log, permitiéndote revisar cualquier problema.

¿Cómo Revisar los Logs?

Puedes verificar el historial de ejecuciones del script con:

cat /var/lib/docker/volumes/uptime-kuma/_data/clean.log

¿Cómo Cambiar la Frecuencia?

  • Ejecutar cada hora: Cambia 0 2 * * * por 0 * * * *.
  • Ejecutar cada semana: Usa 0 2 * * 0.
  • Ejecutar cada mes: Usa 0 2 1 * *.

Guarda y cierra el archivo (Ctrl+O, Enter, Ctrl+X).


Opciones Adicionales para Mejorar el Mantenimiento

Usar Nginx Proxy Manager para Acceder a Uptime Kuma

Si no deseas exponer directamente el puerto interno de Uptime Kuma ni abrir puertos específicos para cada servicio, integrar Nginx Proxy Manager puede ser la solución. Este proxy inverso te permitirá canalizar el tráfico a través de los puertos estándar (80 y 443) que ya tienes abiertos, ofreciendo una capa adicional de seguridad y simplicidad. Además, podrás configurar certificados SSL fácilmente, centralizar el acceso a múltiples aplicaciones y mantener un entorno más organizado.

Para aprender a instalarlo, revisa nuestro post sobre cómo instalar Nginx Proxy Manager en Docker.


Ejecutar Uptime Kuma en un Entorno Virtualizado

Si prefieres desplegar Uptime Kuma en una máquina virtual o un contenedor LXC, Proxmox VE es una excelente opción. Esta plataforma te permite crear y gestionar entornos aislados de forma eficiente. Para aprender a instalarlo, revisa nuestra guía Cómo Instalar Proxmox VE Desde Cero: Guía Paso a Paso, y si quieres profundizar en los fundamentos de la virtualización, consulta Proxmox desde Cero: Guía Completa para Iniciarte en la Virtualización con Proxmox VE.


Próximos Pasos

  • Automatizar respaldos: Considera programar copias de seguridad periódicas de la base de datos para proteger tus datos ante eventuales fallos o migraciones.
  • Ajustar la retención de datos: Experimenta con periodos distintos (30, 90 días, etc.) hasta encontrar el equilibrio entre información histórica y uso de recursos.
  • Integrar Nginx Proxy Manager: Si buscas una vía más sencilla y segura para acceder a Uptime Kuma sin abrir puertos innecesarios, revisa nuestra guía de instalación de Nginx Proxy Manager y centraliza el acceso a todos tus servicios bajo un solo punto, con certificados SSL y gestión simplificada.
  • Desplegar en Proxmox VE: Si necesitas mayor flexibilidad en tu infraestructura, considera virtualizar Uptime Kuma. Usa la guía Cómo Instalar Proxmox VE Desde Cero: Guía Paso a Paso para la instalación práctica y Proxmox desde Cero: Guía Completa para Iniciarte en la Virtualización con Proxmox VE para entender los conceptos clave y las ventajas de la virtualización.

Reflexión Final

Mantener el tamaño de la base de datos bajo control es esencial para garantizar el rendimiento sostenido de Uptime Kuma, sobre todo en sistemas con recursos limitados. Ajustando la retención, automatizando limpiezas y explorando opciones como Nginx Proxy Manager o entornos virtualizados en Proxmox VE, obtendrás un ecosistema de monitoreo ágil, seguro y escalable. De este modo, podrás concentrarte en lo que realmente importa: asegurar la disponibilidad y estabilidad de tus servicios.

¿Tienes preguntas o comentarios? ¡Déjalos abajo, y estaré encantado de ayudarte!

Deja una respuesta

*