Saludos amigos, ya os conté el otro día como la nueva Raspberry Pi 8GB era un lugar perfecto para desplegar Telegraf, InfluxDB, y Grafana, ya que con la capacidad extra de memoria RAM nos permitía ingerir miles de métricas sin apenas despeinarse.
Una vez estaba con el proyecto entre mis manos, mi buen amigo Germán me abrió los ojos sobre proteger las cargas de trabajo que tenemos en Raspberry Pi:
Take care, SD cards are unreliable.
— Germán Moya (@pbacterio) May 30, 2020
Germán tiene toda la razón, hasta ahora estaba usando Veeam Backup & Replication sin ningún tipo de problema, ya que tenía todo en una VM, pero pasándome al mundo de ARM me quedo sin esta protección, ya que Veeam no soporta ARM de momento.
Script sencillo y útil para proteger Telegraf, InfluxDB, y Grafana
Pensando sobre qué proteger, pues tenemos lo siguiente:
- Los Dashboards de Grafana con sus correspondientes versiones.
- Los Scripts adicionales que tengamos sobre Veeam, y otras cosas como Cloudflare, WordPress, etc.
- Los ficheros de configuración de Telegraf, InfluxDB, y Grafana
Adicionalmente, os recomendaría tener protegidos los shard, database, etc. Para ello, ya os conté cómo hacerlo aquí:
Podríais añadir eso al script, solamente tener en cuenta el tamaño del backup, etc. En mi caso no lo he añadido a este script, continuemos.
El script puede ser descargado desde GitHub, de manera sencilla y cómoda:
Una vez descargado, hay ciertas partes que tenemos que editar, están todas arriba y son variables muy sencillas:
## Variables KEY=YOURAPIKEY #Create a new API key, read-only from your Grafana HOST=http://YOURGRAFANAFQDNORIP:3000 #Use https in case you are using SSL BACKUP_DIR="/mnt/backup" #Change it for your desired NFS mount point DASH_DIR="dashboards" TELEGRAF_DIR="/home/oper" #Change it for your path, where your telegraf scripts are (the ones for veeam for example, or wordpress, etc.) TELEGRAF_CONF="/etc/telegraf" INFLUX_CONF="/etc/influxdb" GRAFANA_CONF="/etc/grafana"
Si no conocemos nuestra API Key de Grafana, podemos crear una en apenas unos segundos, desde nuestro Grafana, nos iremos a Configuration – API Keys:
Pondremos un nombre descriptivo, y más allá de esto, le diremos role Viewer:
Con estos pasos, ya tendremos nuestra API Key para introducir en el Script:
Es la hora de hacer el script ejecutable:
chmod +x raspberrypi_backup.sh
Y lanzarlo por primera vez, si todo ha ido bien, podremos ver lo siguiente:
|-------------------------------------------------------------------------| |24 dashboards were saved| |-------------------------------------------------------------------------| |-------------------------------------------------------------------------| |10 Files have been sync| |-------------------------------------------------------------------------| |-------------------------------------------------------------------------| |25 Config Files have been sync| |-------------------------------------------------------------------------| |-------------------------------------------------------------------------| |------------------------------ FINISHED ---------------------------------| |-------------------------------------------------------------------------|
Muy elegante ¿verdad?
Esto nos ha creado el siguiente output en la carpeta que hayamos seleccionado, en mi caso es un NFS que tengo en un QNAP:
/mnt/backup/
├── config
│ ├── grafana
│ │ ├── grafana.ini
│ │ ├── ldap.toml
│ │ ├── provisioning
│ │ │ ├── dashboards
│ │ │ │ └── sample.yaml
│ │ │ ├── datasources
│ │ │ │ └── sample.yaml
│ │ │ └── notifiers
│ │ │ └── sample.yaml
│ │ └── ssl
│ │ ├── cert.pem
│ │ ├── chain.pem
│ │ ├── fullchain.pem
│ │ ├── privkey.pem
│ │ └── README
│ ├── influxdb
│ │ ├── influxdb.conf
│ │ └── ssl
│ │ ├── cert.pem
│ │ ├── chain.pem
│ │ ├── fullchain.pem
│ │ ├── privkey.pem
│ │ └── README
│ └── telegraf
│ ├── telegraf.conf
│ └── telegraf.d
│ ├── http_response.conf
│ ├── influx.conf
│ ├── ipmi.conf
│ ├── ping.conf
│ ├── rasberry.conf
│ ├── ssl.conf
│ ├── system.conf
│ └── vsphere.conf
├── dashboards
│ ├── Grafana_Dashboard_for_Cloudflare_Analytics_and_Overview_v1.json
│ ├── Grafana_Dashboard_for_Veeam_Availability_Console_-_Tenant_Overview_v1.json
│ ├── Grafana_Dashboard_for_Veeam_Backup_for_AWS_v1.json
│ ├── Grafana_Dashboard_for_Veeam_Backup_for_Azure_v1.json
│ ├── Grafana_Dashboard_for_Veeam_Backup_for_Microsoft_Office_365_v3.0_-_Security_and_Performance_v1.json
│ ├── Grafana_Dashboard_for_Veeam_Backup_for_Microsoft_Office_365_v4_v1.json
│ ├── Grafana_Dashboard_for_Veeam_Enterprise_Manager_v1.json
│ ├── Grafana_Dashboard_for_Veeam_Service_Provider_Console_-_SP_Overview_v1.json
│ ├── Grafana_Dashboard_for_Veeam_Service_Provider_Console_-_Tenant_Overview_v1.json
│ ├── Grafana_Dashboard_for_Wordpress.com_Jetpack_Analytics_v1.json
│ ├── Grafana_Dashboard_to_monitor_Owl_USB_CM160_Electricity_Consumption_v1.json
│ ├── HTTP_Response_Monitoring_v1.json
│ ├── Internet_Uptime_Monitor_v1.json
│ ├── Microsoft_Azure_Storage_v1.json
│ ├── Raspberry_Pi_Monitoring_v2.json
│ ├── SSL_Monitoring_(x509_cert)_v1.json
│ ├── Veeam_Worldwide_Dashboard_v1.json
│ ├── VMware_vSphere_-_Datastore_v1.json
│ ├── VMware_vSphere_-_Hosts_IPMI_-_INT_v2.json
│ ├── VMware_vSphere_-_Hosts_IPMI_v1.json
│ ├── VMware_vSphere_-_Hosts_v1.json
│ ├── VMware_vSphere_-_Overview_v1.json
│ ├── VMware_vSphere_-_VMs_v1.json
│ └── Zimbra_Collaboration:_System_Dashboard_v1.json
└── scripts
└── oper
├── cloudflare-analytics.sh
├── veeam_aws.sh
├── veeam_azure.sh
├── veeamenterprisemanager.sh
├── veeam-service-provider-console.sh
├── veeamvac.sh
├── veeamvbo4.sh
└── wordpress_grafana.sh
15 directories, 60 files
Si todo ha ido bien, podemos añadirlo a nuestro crontab, para que se ejecute cada x minutos, horas o días, con crontab -e, mi configuración luce así:
*/30 * * * * /home/oper/raspberrypi_backup.sh >> /var/log/rpibackup.log 2>&1
Fantástico, ahora ya con esto en un NFS, podremos usar Veeam Backup & Replication con el nuevo NAS Backup.
Proteger los ficheros de InfluxDB, Telegraf, y Grafana de Raspberry Pi con Veeam
Una vez que tenemos ya todo salvado en un NFS, podemos irnos a Veeam y añadir esta misma share NFS, de la siguiente manera, desde Inventory, en File shares, añadiremos una nueva NFS Share:
Y ahora añadiremos el path a nuestro NFS, es un poco particular y tiene que ser de la siguiente manera, igual que si lo montaramos en Linux:
Ya con todo listo, podremos crear un nuevo trabajo de copia de seguridad, de tipo File share:
Introduciremos un nombre y descripción que nos guste:
Y ya podremos seleccionar nuestra Share, con todas sus carpetas:
Seleccionaremos donde queremos guardarlo, y los días de los que queremos versiones:
Por último cada cuanto queremos lanzar el job, si estamos lanzando nuestro script cada 30 minutos, tiene sentido que pongamos el trabajo de copia cada 30 minutos también:
Y ya estaría todo, podremos ver el trabajo copiando todo:
Con esto hemos terminado esta entrada, tenemos todo ya protegido de manera muy potente, en caso de que nuestra Raspberry Pi falle, podremos restaurar todo rápidamente en otra máquina al tener las configuraciones, los Dashboards, etc.
Antes de despedirme, os quiero enseñar todas las pruebas que hice antes de este script, intentando crear un backup de la imagen completa de la Raspberry Pi 4b 8GB.
Pruebas rápidas y fallidas de intentar proteger Raspberry Pi con Veeam
Como esto es un blog educativo, y por probar, me metí de lleno a intentar proteger mi nueva carga de trabajo con Veeam.
Primer intento – Protection Groups para usar Veeam Agent for Linux
Mi primer intento fué añadir mi Raspberry Pi 4B 8GB a un Protection Group que tengo con otras Linux, puse la IP, y el usuario y contraseña bien, pero obtuve un extraño error que realmente tiene que ver con el Agent de Veeam Linux no está para ARM:
Una pena, vamos a probar otra cosa.
Segundo intento – Añadir Raspberry Pi como Managed Server
Si conocéis Veeam un poco, sabéis que podemos añadir Linux, arquitectura Intel o AMD, como Managed Servers, y desde ellos podemos luego hacer File Backups, por ejemplo, pero esto tampoco funcionó como esperaba, ya que los paquetes que Veeam instala para hacer de Transport Mode, no se ejecutan correctamente:
Ese ha finalizado con Warnings no tiene nada de buena pinta, igualmente, si nos vamos a crear un File Backup Job, después de los 10 minutos reglamentarios obtendremos el siguiente mensaje:
Tercer intento – Añadir Raspberry Pi como Fileserver para el nuevo NAS Backup
Con el nuevo Veeam Backup & Replication v10, Veeam incluye NAS Backup, que como opción puede user un Linux, Intel o AMD, y usarlo como Transport mode para el nuevo NAS Backup, más o menos como el paso anterior, pero con mejor versionado de los ficheros, y mejor almacenamiento. Bueno, como Veeam no puede instalar el Transporte service, no sabe si es 64-bit o 32-bit, con lo que intentando añadirlo como NAS Backup, también falla:
Espro que os guste esta entrada, dejar vuestros comentarios aquí abajo.


[…] ya podemos hacer nuestro upgrade sin problema, recordar que os conté cómo hacer un backup de todo Grafana, sus dashboards y demás, muy importante estar seguros antes de hacer […]