Estructura de navegación

Tabla de contenidos

Backups

Todo nuestro sistema se basa en la obtención de métricas, su uso y gestión, por lo cual tener nuestros datos es critico, afortunadamente influxdb ya tiene esto en cuenta y tiene un comando para la realización de backups, como no se recomienda guardar los backups en la misma máquina compartiremos una carpeta desde DC-01, la montaremos en nuestro servidor de monitorización y realizaremos backups periódicos mediante una tarea cron, para ello:

  1. Crearemos una carpeta de backups y la compartiremos desde DC-01, gestionando los permisos para que se puedan guardar las copias.
  2. Instalaremos cifs-utils y smbclient para la conexión desde el servidor de monitorización.
  3. Crearemos una carpeta donde montar la carpeta compartida la carpeta y la montaremos con el comando sudo mount -t cifs //172.19.0.10/backups /mnt/backup -o username="administrador",password="abc123.",vers=3.0, podemos también pasar el usuario y contraseña por un fichero.
  4. Crearemos una entrada en fstab para que la ubicación este montada permanentemente.

  1. Comprobamos que si creamos una carpeta en Windows aparece en la ubicación de Linux.

  1. Crearemos el backup de InfluxDB con el comando

influx backup --org-id c184b96027631c2a --token 2TxN_pBWuIw5MsZDOeSViU2HZqHUKe0W6iCuxGUOXaAvnMtX8B2WJP_EowJ7oN7SQve1F9qYVoLLRPJG3NsKAQ== --skip-verify /mnt/backup

En caso de que quisiésemos solamente copiar el backup de Prometheus usaríamos el comando:

influx backup --org-id c184b96027631c2a --token 2TxN_pBWuIw5MsZDOeSViU2HZqHUKe0W6iCuxGUOXaAvnMtX8B2WJP_EowJ7oN7SQve1F9qYVoLLRPJG3NsKAQ== --bucket prometheus --skip-verify /mnt/backup

Tras ejecutarlo veremos que nos ha creado varios archivos.

Vamos a optimizar la creación de backups con un script:

#!/bin/bash
influx backup --org-id c184b96027631c2a --token 2TxN_pBWuIw5MsZDOeSViU2HZqHUKe0W6iCuxGUOXaAvnMtX8B2WJP_EowJ7oN7SQve1F9qYVoLLRPJG3NsKAQ== --skip-verify /opt/backup


BACKUP_SOURCE="/opt/backup"     
BACKUP_DEST="/mnt/backup"       
MAX_BACKUPS=7                       
DATE=$(date +%Y%m%d%H%M%S)        


tar -czf "$BACKUP_DEST/backup-$DATE.tar.gz" -C "$BACKUP_SOURCE" .

if [ $? -eq 0 ]; then
  
  rm -rf "$BACKUP_SOURCE"/*
else
  echo "Error"
  exit 1
fi

# Contar el número de backups y eliminar los más antiguos si es necesario
BACKUP_COUNT=$(ls "$BACKUP_DEST"/backup-*.tar.gz | wc -l)

if [ "$BACKUP_COUNT" -gt "$MAX_BACKUPS" ]; then
  # Eliminar los backups más antiguos
  OLDEST_BACKUP=$(ls "$BACKUP_DEST"/backup-*.tar.gz | sort | head -n 1)
  rm "$OLDEST_BACKUP"
fi

Y si lo comprobamos veremos que se ha creado en el servidor.

Si ahora borrásemos un bucket por error:

Sería tan fácil como descomprimir el comprimido y restaurarlo.

Volverá estar operativo con todos los datos a fecha del último backup-

Por último crearíamos la tarea en cron, y se ejecutaría todos los días a las 00:00.