como-instalar-influxdb-en-raspberry-pi

Cómo instalar y usar InfluxDB en Raspberry Pi

InfluxDB es una base de datos de series temporales (TSDB) diseñada para manejar una gran cantidad de datos de series temporales con alta eficiencia

Es ideal para aplicaciones que requieren almacenar y analizar datos que cambian con el tiempo, como métricas de rendimiento, datos de sensores y registros de eventos.

Algunas de las características clave de InfluxDB incluyen,

  • Optimización para Series Temporales: Especialmente diseñada para manejar datos con marcas de tiempo.
  • Consultas de Alta Velocidad: Capaz de realizar consultas complejas en grandes volúmenes de datos de manera eficiente.
  • Retención de Datos: Permite definir políticas de retención para manejar datos históricos.
  • Integración con Herramientas de Visualización: Compatible con herramientas como Grafana para la visualización de datos.

InfluxDB se utiliza ampliamente en aplicaciones de monitoreo de infraestructura, análisis de datos de IoT y análisis de registros de eventos. Por lo que encaja muy bien con Raspberry Pi.

Cómo Instalar InfluxDB en Raspberry Pi

Configurar el repositorio

Primero, nos aseguramos de que nuestra Raspberry Pi esté actualizada. Ejecutamos los siguientes comandos para actualizar los paquetes y el sistema operativo:

sudo apt update
sudo apt upgrade

A continuación, para instalar InfluxData, que no está incluido en los repositorios estándar de Raspberry Pi OS, necesitamos agregar el repositorio adecuado.

# Instalamos las dependencias necesaria
sudo apt install -y gnupg

# Descargamos e instalamos la clave pública del repositorio de InfluxDB
wget -qO - https://repos.influxdata.com/influxdb.key | sudo apt-key add -

# Creamos un archivo de lista para InfluxData
echo "deb https://repos.influxdata.com/debian buster stable" | sudo tee /etc/apt/sources.list.d/influxdb.list

Nota: La distribución buster es para Debian 10, que es compatible con Raspberry Pi OS basado en Debian. Ajusta si usas una versión diferente.

Instalar InfluxDB

Con el repositorio agregado, instalamos InfluxDB. Primero actualizamos la lista de paquetes,

sudo apt update

Finalmente instalamos instalar InfluxDB

sudo apt install influxdb2

Después de completar la instalación, necesitamos configurar y habilitar InfluxDB para que se ejecute como un servicio.

# Ensure influxdb config is picked up
sudo systemctl daemon-reload

# Tell systemd to run influxdb on reboot
sudo systemctl unmask influxdb
sudo systemctl enable influxdb

# Start up influxdb
sudo systemctl start influxdb

Finalmente, verificamos el estado del servicio para confirmar que MongoDB está funcionando correctamente con:

sudo systemctl status influxdb

Deberíamos ver una salida que indique que el servicio está activo y en funcionamiento.

Configuración del Servicio HTTP

Por defecto, InfluxDB v2 debería tener habilitada la interfaz HTTP. Pero no está de más asegurarnos. Para ello hacemos,

sudo nano /etc/influxdb/influxdb.conf

Y nos aseguramos de que en la sección [http] y enabled está a true. Si no es así, lo ponemos, guardamos y salimos del fichero.

Ahorra desde el navegador podemos acceder a la dirección localhost:8086 y veremos la ventana de configuración de InfluxDB.

influxdb-screenshot

Usar InfluxDB

Una vez que hemos instalado y puesto en funcionamiento InfluxDB, podemos empezar a gestionarlo para nuestros datos de series temporales.

El proceso es muy sencillo. InfluxDB incluye asistentes para las principales plataformas y lenguajes de programación.

influx-db-get-started

Por ejemplo, si la queremos usar con Python tenemos que instalar el cliente de Influx

pip3 install influxdb-client

InfluxDB nos proporcionará un Token que debemos exportar como variable de sistema

export INFLUXDB_TOKEN=tu_token_largisimo

Finalmente, podemos conectarnos con un Script así

import influxdb_client, os, time
from influxdb_client import InfluxDBClient, Point, WritePrecision
from influxdb_client.client.write_api import SYNCHRONOUS

token = os.environ.get("INFLUXDB_TOKEN")
org = "casa"
url = "http://localhost:8086"

write_client = influxdb_client.InfluxDBClient(url=url, token=token, org=org)