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:

[email protected]:~$ wget https://dl.influxdata.com/influxdb/releases/influxdb_1.5.0_amd64.deb
[email protected]:~$ sudo dpkg -i influxdb_1.5.0_amd64.deb

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

 

[email protected]:~$ systemctl status influxdb

● influxdb.service - InfluxDB is an open-source, distributed, time series database
Loaded: loaded (/lib/systemd/system/influxdb.service; enabled; vendor preset: enabled)
Active: inactive (dead)
Docs: https://docs.influxdata.com/influxdb/

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.

[email protected]:~$ systemctl start influxdb
[email protected]:~$ systemctl status influxdb
● influxdb.service - InfluxDB is an open-source, distributed, time series database
Loaded: loaded (/lib/systemd/system/influxdb.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2018-03-14 20:05:12 CET; 6s ago
Docs: https://docs.influxdata.com/influxdb/
Main PID: 5729 (influxd)
Tasks: 7 (limit: 4915)
CGroup: /system.slice/influxdb.service
└─5729 /usr/bin/influxd -config /etc/influxdb/influxdb.conf

Parar la base de datos

[email protected]:~$ sudo systemctl stop influxdb

Reiniciar el servicio

[email protected]:~$ sudo systemctl restart influxdb

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.

[email protected]:~$ sudo systemctl restart influxdb

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

[email protected]:~$ 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

CREATE DATABASE nociones;

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.

> show databases
name: databases
name
----
_internal
nociones

Empezar a trabajar con una base de datos

> use nociones
Using database nociones
>

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:

<medida>[,<etiqueta-key>=<etiqueta-value>...] <campo-key>=<campo-value>[,<campo2-key>=<campo2-value>...] [unix-nano-timestamp]

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

cpu,host=serverA,region=us_west value=0.64
payment,device=mobile,product=Notepad,method=credit billed=33,licenses=3i 1434067467100293230
stock,symbol=AAPL bid=127.46,ask=127.48
temperature,machine=unit42,type=assembly external=25,internal=37 1434067467000000000

¿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:

> select * from temperatura
name: temperatura
time externa interna laboratorio tipo
---- ------- ------- ----------- ----
2018-03-14T21:34:35.840308804Z 25 37 análisis ambiente
2018-03-14T21:35:18.008490765Z 25 37 análisis ambiente
2018-03-14T21:35:26.304416097Z 29 36 análisis ambiente

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:

> select min(interna) from temperatura
name: temperatura
time min
---- ---
2018-03-14T21:35:26.304416097Z 36
> select mean(externa) from temperatura
name: temperatura
time mean
---- ----
1970-01-01T00:00:00Z 26.333333333333332

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 11.564 vecess, 5 visitas hoy)
¡Comparte este articulo!

6 comentarios en «Instalación y primeros pasos con InfluxDB en Ubuntu 18.04»

  • el 25/02/2021 a las 5:44 pm
    Enlace permanente

    Hola!
    Quería agradecerte la cantidad de conocimiento que compartes. Gracias. Me está sirviendo de mucha ayuda con Influx.

    Respuesta
  • el 16/08/2018 a las 10:13 pm
    Enlace permanente

    Hola muy buen articulo me interesa mucho lo de grafana y telegraf en especial como se maneja la base de datos te agradeceria mucho si me ayudas bueno a todos los interesados en eso. Nuevamente muchas gracias

    Respuesta
  • el 12/05/2018 a las 11:39 am
    Enlace permanente

    Buenas tardes, buen artículo, para cuando esos proyectos interesantes con la base de datos ? Gracias por compartir con nosotros

    Respuesta
    • el 25/05/2018 a las 8:36 am
      Enlace permanente

      Hola, gracias por tu comentario. Tenemos algunos artículos en el tintero en los que leemos sensores y guardamos sus datos con la raspberry, y algún otro para monitorizar parámetros del sistema u otras aplicaciones en combinación con grafana y telegraf. ¿Te interesa algún ámbito en concreto?

      Respuesta
  • Pingback: Monitoriza tu sistema con telegraf, grafana e influxdb - Nociones.de

Deja una respuesta

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