Instalación y primeros pasos con InfluxDB en Ubuntu 18.04

¿Qué es InfluxDB?

InfluxDB, desarrollada por influxdata,  es una base de datos basada en series de tiempo (time-series database). Este tipo de bases de datos ha experimentado un crecimiento exponencial los últimos años, con la popularización de IoT, Big Data y otras tecnologías que recogen mucha información en el tiempo. Se necesita un sistema que maneje de forma eficiente esas series de datos, con miles de datos por segundo, y de los que necesitamos hacer cálculos y agregar información de manera eficiente, tales como medias, máximos, búsquedas en el tiempo, etc, y todo ello en tiempo real. Dentro de esta categoría, InfluxDB es una base de datos que supera a los esquemas SQL y NoSQL, permitiendo hacer análisis de miríadas de datos en tiempo real y dando una ventaja competitiva a las empresas que la emplean.

Esta base de dastps te permite trabajar con millones de puntos de datos, clasificados en el tiempo, y gracias a trabajar en clúster puede devolver resultados en tiempo real con una alta precisión en el tiempo. Además, en su versión comunitaria, es una base de datos de código abierto (open source), lo que permite a la comunidad trabajar con ella de manera gratuita. Algunas características, sin embargo, dependen de la versión empresarial, y como todas las bases de datos comerciales tienen un precio elevado, pero aun así permiten a las empresas ahorrar en costes de almacenamiento y procesamiento, por lo cual esta base de datos está en el mercado para quedarse. Posee un completo ecosistema que permite recoger, almacenar y tomar decisiones en base a los datos que recibe, con posibilidad de generar gráficos, alertas y notificaciones en tiempo real.

Instalando InfluxDB

En la página https://portal.influxdata.com/downloads podremos descargar esta base de datos y algunas herramientas asociadas, como Telegraf (para adquirir información de nuestros servidores), Chronograf (para visualizar nuestras series de datos) y Kapacitor (para procesar las series de datos de manera inteligente, generando alertas y eventos).

Si bien nos centraremos en su instalación y manejo en Ubuntu, los contenidos de este artículo se pueden utilizar para otros sistemas operativos, tales como OS X, Debian, RedHat, CentOS, Windows, cualquier “flavour” de Linux e incluso contenedores Docker. La imagen siguiente te dará una idea de su instalación en los distintos sistemas.

Los comandos para la instalación son muy sencillos, y están descritos en la página de instalación:

Una vez instalada, la base de datos está aún parada, y necesitaremos arrancarla. En el siguiente apartado te mostramos las operaciones más comunes:

Operaciones más comunes con InfluxDB

Ver el estado en el que está la base de datos

 

Poner la base de datos en marcha

Es recomendable después de lanzar el comando para arrancarla, que hagamos un “status” para ver que ha arrancado correctamente.

Parar la base de datos

nociones@nociones:~$ sudo systemctl stop influxdb

Reiniciar el servicio

Recargar la configuración

En el momento que escribimos estas líneas, influxdb no implementa un “reload” de la configuración sin detener la base de datos, por lo que la forma más común para recargar la configuración es reiniciar el servicio.

Fichero de configuración

El fichero de configuración de influxdb se encuentra en /etc/influxdb/influxdb.conf

Primeros pasos con InfluxDB

Vamos a hacer un pequeño recorrido por el acceso a la consola de InfluxDB, y como podemos crear una base de datos, acceder a ella, insertar algunos puntos de datos y hacer un query sobre ellos.

Conectar con la consola de influx

nociones@nociones:~$ influx -precision rfc3339
Connected to http://localhost:8086 version 1.5.0
InfluxDB shell version: 1.5.0
>

Crear una base de datos para almacenar información

Mostrar las bases de datos

Observarás que, junto con nuestra base de datos creada, existe una base de datos _internal, que se emplea para manejo interno y estadísticas de la propia base de datos.

Empezar a trabajar con una base de datos

Cómo se organizan los datos en InfluxDB

La información en InfluxDB está organizada en series de datos (“time series), que contienen un valor de medición, tales como cpu_load, temperatura, altitud, presión, etc. Cada serie de datos puede tener cero o más puntos de datos, uno por cada muestra. Los puntos se definen por un timestamp (si no introducimos ningún timestamp, la base de datos tomará la hora actual del servidor, por lo que es recomendable tener nuestro Ubuntu conectado a un servidor de tiempo ntp), una medida (“temperatura”, por ejemplo), al menos un campo “key-value”(clave y valor), que representan la medida en sí misma (por ejemplo, “temperatura_dentro=21.2”) y etiquetas (opcionales), que contienen metadata dobre el valor (por ejemplo, “edificio=Valencia”, “laboratorio=análisis”).

Si estás acostumbrado al esquema SQL, puedes pensar conceptualmente en una medida como una tabla SQL, donde la clave primaria es siempre el tiempo, y las etiquetas y los campos son columnas en la tabla. Los campos  están indexados, mientras que los campos no lo están.

La diferencia con SQL es que, con InfluxDB, puedes tener millones de mediciones, no necesitas definir esquemas por adelantado, y los valores “null” no se almacenan. Los puntos se almacenan siquiendo el protocolo “line”, que sigue el siguiente formato:

Mira algunos ejemplos sacados de la página de documentación de InfluxDB:

¿Aún no te queda claro? ¡No te preocupes! Vamos a realizar un ejemplo paso a paso para que veas qué sencillo es almacenar los valores. Si bien lo realizaremos desde la consola, estas mismas llamadas se pueden realizar por http, o con algún cliente basado en los lenguajes de programación más populares (Java, Python, Go, JavaScript, Scala, Ruby, Python, .Net, etc).

Almacenar los primeros valores

Ahora que estamos conectados a una base de datos, podemos empezar a almacenar datos y realizar consultas.

Vamos a almacenar la temperatura interna y externa de un laboratorio

INSERT temperatura,laboratorio=análisis,tipo=ambiente externa=25,interna=37

Ya has insertado un valor. Ahora, cambia los valores de temperatura externa e interna y vuélvelos a insertar, y así un par de veces. ¿Ves qué sencillo le resultaría a una aplicación externa almacenar los datos?

Mostrar los valores

El sistema de consulta es similar al SQL, si bien está un poco más orientado a series de datos. Para nuestro ejemplo, realicemos una consulta muy sencilla:

Observa cómo el timestamp se ha añadido automáticamente.

Usemos un par de funciones, máximo y media, para ilustrar lo sencillo que es hacer cálculos:

De momento eso es todo, en futuros artículos realizaremos algunos proyectos interesantes con esta base de datos.

¿Te ha quedado alguna duda? ¡Te esperamos en los comentarios!

(Visto 207 vecess, 1 visitas hoy)

Un comentario sobre “Instalación y primeros pasos con InfluxDB en Ubuntu 18.04

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *