Big Data

Qué es InfluxDB y primeros pasos

Conoce las características y ventajas que ofrece InfluxDB como solución de monitoreo moderna, además de cómo comenzar a trabajar con esta base de datos.

Publicado el 25 de Febrero de 2022
Compartir

InfluxDB es una de las soluciones de monitoreo modernas que debes si o si, examinar, diferenciar e identificar sus mejores casos de uso, así que te invito a quedarte y conocer sobre esta herramienta.

El monitoreo ha existido desde los albores de la computación. Recientemente, sin embargo, ha habido una revolución en este campo. El monitoreo nativo en la nube ha introducido nuevos desafíos a una tarea antigua, haciendo que las soluciones anteriores no sean adecuadas para el trabajo.

Qué es InfluxDB

Es una base de datos de series temporales diseñada para el almacenamiento rápido y de alta disponibilidad y la recuperación de datos de series temporales. Puede funcionar como una solución independiente, o se puede utilizar para procesar datos de Graphite. Además de la supervisión, InfluxDB se puede utilizar para el Internet de las cosas, los datos de sensores y las soluciones de automatización del hogar.

Es de código abierto (TSDB) desarrollada por la empresa InfluxData. Está escrito en el lenguaje de programación Go (o Golang).

Por supuesto, si deseas conocer más de Go y el por qué lo han usado para desarrollar InfluxDB, te invito a echarle un vistazo al artículo que escribí comparando Go con Python, te sorprenderás.

Características de InfluxDB

InfluxDB fue construido desde cero para ser una base de datos de series temporales especialmente diseñada; es decir, no fue reutilizado para ser series temporales. El tiempo fue incorporado desde el principio. InfluxDB es parte de una plataforma integral que admite la recopilación, almacenamiento, monitoreo, visualización y alerta de datos de series temporales.

También cuenta con su propio lenguaje de consulta inspirado en SQL. Aunque la base de datos en sí es un proyecto de código abierto, implementa componentes de código cerrado para permitir la agrupación en clústeres.

Estas son algunas de las características que InfluxDB admite actualmente que lo convierten en una excelente opción para trabajar con datos de series temporales.

  • Almacén de datos personalizado de alto rendimiento escrito específicamente para datos de series temporales.
  • El motor TSM permite una alta velocidad de ingesta y compresión de datos
  • API HTTP de escritura y consulta simples y de alto rendimiento.
  • Los complementos son compatibles con otros protocolos de ingesta de datos como Graphite, collectd y OpenTSDB.
  • Lenguaje de consulta expresivo similar a SQL adaptado para consultar fácilmente datos agregados.
  • Las etiquetas permiten indexar series para consultas rápidas y eficientes.
  • Las políticas de retención caducan automáticamente de manera eficiente los datos obsoletos.
  • Las consultas continuas calculan automáticamente los datos agregados para que las consultas frecuentes sean más eficientes.
Aprende las técnicas más avanzadas en análisis de datos
Comienza 15 días gratis en OpenWebinars y accede a cursos, talleres y laboratorios prácticos de Hadoop, Spark, Power BI, Pandas, R y más.
Registrarme ahora

Lenguajes de consulta

InfluxDB admite varios lenguajes de consulta:

Flux

Flux es un lenguaje de scripting de datos diseñado para consultar, analizar y actuar sobre datos de series temporales. A partir de InfluxDB 1.8.0,Flux está disponible para uso de producción junto con InfluxQL.

Para aquellos familiarizados con InfluxQL, Flux está destinado a abordar muchas de las solicitudes de características pendientes que hemos recibido desde la introducción de InfluxDB 1.0. Para obtener una comparación entre Flux e InfluxQL, consulte Flux vs InfluxQL.

Flux es el lenguaje principal para trabajar con datos en InfluxDB OSS 2.0 e InfluxDB Cloud, una plataforma como servicio (PaaS) disponible con carácter general disponible en múltiples proveedores de servicios en la nube. El uso de Flux con InfluxDB 1.8+ le permite familiarizarse con los conceptos y la sintaxis de Flux y facilitar la transición a InfluxDB 2.0.

InfluxQL

InfluxQL es un lenguaje de consulta similar a SQL para interactuar con InfluxDB. Ha sido diseñado para que se sienta familiar para aquellos que provienen de otros entornos SQL o similares a SQL, al tiempo que proporciona características específicas para almacenar y analizar datos de series temporales. Sin embargo, InfluxQL no es SQL y carece de soporte para operaciones más avanzadas como, y a las que los usuarios avanzados de SQL están acostumbrados.

Conceptos claves de InfluxDB

¿Es InfluxDB una base de datos?

InfluxDB es la plataforma de series temporales En su corazón se encuentra una base de datos diseñada específicamente para manejar los volúmenes épicos e innumerables fuentes de datos con marca de tiempo producidos por sensores, aplicaciones e infraestructura. Si el tiempo es relevante para sus datos, necesita una base de datos de series temporales.

Qué es una tabla en InfluxDB

InfluxDB realmente no tiene el concepto de una tabla.

  • Los datos se estructuran en series, que se componen de medidas, etiquetas y campos.
  • Las medidas son como tablas SQL.
  • Las etiquetas son valores indexados.
  • Los campos son los datos reales.

Ventajas de InfluxDB

InfluxDB es similar a una base de datos SQL, pero diferente en muchos aspectos. InfluxDB está diseñado específicamente para datos de series temporales. Las bases de datos relacionales pueden manejar datos de series temporales, pero no están optimizadas para cargas de trabajo de series temporales comunes. InfluxDB está diseñado para almacenar grandes volúmenes de datos de series temporales y realizar rápidamente análisis en tiempo real de esos datos.

El tiempo lo es todo

En InfluxDB, una marca de tiempo identifica un solo punto en cualquier serie de datos dada. Esto es como una tabla de base de datos SQL donde la clave principal es preestablecida por el sistema y siempre es el tiempo.

InfluxDB también reconoce que las preferencias del esquema pueden cambiar con el tiempo. En InfluxDB no es necesario definir esquemas por adelantado. Los puntos de datos pueden tener uno de los campos en una medición, todos los campos en una medición o cualquier número intermedio. Puede agregar nuevos campos a una medición simplemente escribiendo un punto para ese nuevo campo. Si necesita una explicación de los términos medidas, etiquetas y campos, consulte la siguiente sección de una base de datos SQL para el cruce de terminología de InfluxDB.

Recogida de datos

InfluxDB es un sistema basado en push. Requiere una aplicación para insertar activamente los datos en InfluxDB.

Almacenamiento

InfluxDB es mucho más adecuado para el registro de eventos.

Visualización y dashboards

InfluxDB cuenta con visualizaciones y paneles básicos. Para brillar realmente, deben implementarse junto con soluciones dedicadas de visualización y tablero, como Grafana o Chronograf.

Si te interesa conocer sobre uno de los mejores sistemas de monitorización, te invito a una lectura rápida de Grafana y primeros pasos con la herramienta.

Integraciones

InfluxDB cuenta con más de cien integraciones, entre ellas están:

  • Amazon Web Services
  • Microsoft Azure
  • Docker
  • Elasticsearch
  • Cisco
  • Apache
  • Cassandra
  • GitHub
  • Grafana
  • Google Data Studio
  • Jenkins
  • Otros que puedes seguir conociendo por aquí.

Terminología

La siguiente tabla es un ejemplo (muy) simple de una tabla llamada foodships en una base de datos SQL con la columna no indexada #_foodships y las columnas indizadas park_id, planet, y time.

+---------+---------+---------------------+--------------+
| park_id | planet  | time                | #_foodships  |
+---------+---------+---------------------+--------------+
|       1 | Earth   | 1429185600000000000 |            0 |
|       1 | Earth   | 1429185601000000000 |            3 |
|       1 | Earth   | 1429185602000000000 |           15 |
|       1 | Earth   | 1429185603000000000 |           15 |
|       2 | Saturn  | 1429185600000000000 |            5 |
|       2 | Saturn  | 1429185601000000000 |            9 |
|       2 | Saturn  | 1429185602000000000 |           10 |
|       2 | Saturn  | 1429185603000000000 |           14 |
|       3 | Jupiter | 1429185600000000000 |           20 |
|       3 | Jupiter | 1429185601000000000 |           21 |
|       3 | Jupiter | 1429185602000000000 |           21 |
|       3 | Jupiter | 1429185603000000000 |           20 |
|       4 | Saturn  | 1429185600000000000 |            5 |
|       4 | Saturn  | 1429185601000000000 |            5 |
|       4 | Saturn  | 1429185602000000000 |            6 |
|       4 | Saturn  | 1429185603000000000 |            5 |
+---------+---------+---------------------+--------------+

Esos mismos datos se ven así en InfluxDB:

name: foodships
tags: park_id=1, planet=Earth
time                           #_foodships
----                           ------------
2015-04-16T12:00:00Z     0
2015-04-16T12:00:01Z     3
2015-04-16T12:00:02Z     15
2015-04-16T12:00:03Z     15

name: foodships
tags: park_id=2, planet=Saturn
time                           #_foodships
----                           ------------
2015-04-16T12:00:00Z     5
2015-04-16T12:00:01Z     9
2015-04-16T12:00:02Z     10
2015-04-16T12:00:03Z     14

name: foodships
tags: park_id=3, planet=Jupiter
time                           #_foodships
----                           ------------
2015-04-16T12:00:00Z     20
2015-04-16T12:00:01Z     21
2015-04-16T12:00:02Z     21
2015-04-16T12:00:03Z     20

name: foodships
tags: park_id=4, planet=Saturn
time                           #_foodships
----                           ------------
2015-04-16T12:00:00Z     5
2015-04-16T12:00:01Z     5
2015-04-16T12:00:02Z     6
2015-04-16T12:00:03Z     5

Haciendo referencia al ejemplo anterior, en general:

  • Una medición de InfluxDB es similar a una tabla de base de datos SQL.foodships
  • Las etiquetas InfluxDB son como columnas indexadas en una base de datos SQL. park_id``planet
  • Los campos InfluxDB () son como columnas no indexadas en una base de datos SQL. #_foodships
  • Los puntos InfluxDB son similares a las filas SQL. 2015-04-16T12:00:00Z 5

Sobre la base de esta comparación de la terminología de la base de datos, las consultas continuas (Consulta InfluxQL que se ejecuta de forma automática y periódica en una base de datos) de InfluxDB y las políticas de retención (Describe cuánto tiempo InfluxDB conserva los datos, cuántas copias de los datos se van a almacenar en el clúster (factor de replicación) y el intervalo de tiempo cubierto por los grupos de particiones) son similares a los procedimientos almacenados en una base de datos SQL. Se especifican una vez y luego se realizan de forma regular y automática.

Por supuesto, existen algunas disparidades importantes entre las bases de datos SQL e InfluxDB.

Los SQL no están disponibles para las mediciones de InfluxDB; el diseño del esquema debe reflejar esa diferencia. Y, como mencionamos anteriormente, una medición es como una tabla SQL donde el índice primario siempre está preestablecido en el tiempo.

Las marcas de tiempo de InfluxDB deben estar en la época de UNIX (GMT) o formateadas como una cadena de fecha y hora válida bajo RFC3339.

InfluxDB vs MySQL

¿Cuál es la diferencia entre InfluxDB y MySQL?

Los desarrolladores describen InfluxDB como “Una base de datos de series temporales distribuida de código abierto sin dependencias externas”. InfluxDB es un almacén de datos escalable para métricas, eventos y análisis en tiempo real. … El software MySQL ofrece un servidor de base de datos SQL (Structured Query Language) muy rápido, multiproceso, multiusuario y robusto.

InfluxDB vs Prometheus

Ventajas de InfluxDB Ventajas de Prometheus
Base de datos de series temporales DBMS de series temporales totalmente integrado y sistema de monitoreo
Almacena datos de series temporales numéricas Raspado, almacenamiento, consulta, gráficos y alertas basadas en datos de series temporales; proporciona puntos de enlace de API para los datos que contiene
Manejan tipos de datos numéricos Manejan tipos de datos numéricos
Año de lanzamiento: 2013 Año de lanzamiento: 2012
Instalable en Linux y MacOS Instalable en Linux y Windows
Los lenguajes que soporta son: C++, Erlang, Elixir, Go, Haskell, Java, JavaScript, LISP, MATLAB, .Net, Perl, PHP, Python, R, Ruby, Rust, Scala Los lenguajes que soporta son: .NET, C++, Go, Haskell, Java, JavaScript (Node.js), Python, Ruby
Se admite particionamiento por fragmentación Se admite particionamiento por fragmentación
Se admite replicación por ingesta y después de la ingesta, permitiendo copias de seguridad y restauración Se admite replicación por federación
Recogida de datos: Push o pull Recogida de datos: Activo o pull (configurable)

Estas fueron algunas comparaciones de herramientas similares o alternativas a InfluxDB, y como pudieron observar, también son poderosas y con cualquiera de ellas no estarán equivocándose al implementarlas en sus proyectos.

Analiza los datos para tomar mejores decisiones en tu empresa
Cursos y talleres para formar a tus científicos de datos e ingenieros en las herramientas más utilizadas: Hadoop, Spark, Power BI, Pandas, R y más.
Solicitar más información

Primeros pasos con InfluxDB

Con InfluxDB tiene todo lo que necesita de una plataforma de series temporales en un solo binario: una base de datos de series temporales de múltiples inquilinos, herramientas de interfaz de usuario y tableros, procesamiento en segundo plano y agente de monitoreo. Todo esto hace que la implementación y la configuración sean muy fáciles de asegurar.

La plataforma InfluxDB también incluye API, herramientas y un ecosistema que incluye 10 bibliotecas de clientes y servidores, complementos de Telegraf, integraciones de visualización con Grafana, Google Data Studio e integraciones de fuentes de datos con Google Bigtable, BigQuery y más.

Si estás interesado en conocer sobre Telegraf y primeros pasos, te invito a leer al respecto.

Instalación en Ubuntu o Debian

Se extraen los paquetes de InfluxDB, integrando las fuentes de donde lo bajará.

wget -qO- https://repos.influxdata.com/influxdb.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/influxdb.gpg > /dev/null
export DISTRIB_ID=$(lsb_release -si); export DISTRIB_CODENAME=$(lsb_release -sc)
echo "deb [signed-by=/etc/apt/trusted.gpg.d/influxdb.gpg] https://repos.influxdata.com/${DISTRIB_ID,,} ${DISTRIB_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/influxdb.list > /dev/null

Se actualizan los repositorios y se procede a instalar el paquete de influxdb2.

sudo apt-get update && sudo apt-get install influxdb2

Verificación de que el servicio está arrancado:

$ 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 Fri 2022-01-20 17:43:54 -03; 55min ago
       Docs: https://docs.influxdata.com/influxdb/
   Main PID: 750 (influxd)
      Tasks: 7 (limit: 1067)
     Memory: 33.8M
     CGroup: /system.slice/influxdb.service
             └─750 /usr/bin/influxd

InfluxDB en una imagen de Docker

docker pull influxdb:2.1.1

InfluxDB en Windows desde PowerShell

Ejecutar las siguientes instrucciones desde línea de comandos PowerShell.

wget https://dl.influxdata.com/influxdb/releases/influxdb2-2.1.1-windows-amd64.zip -UseBasicParsing -OutFile influxdb2-2.1.1-windows-amd64.zip
Expand-Archive .\influxdb2-2.1.1-windows-amd64.zip -DestinationPath 'C:\Program Files\InfluxData\influxdb\'

También existe otra forma y es usando Chocolatey, con la simple instrucción:

choco install influxdb

Ejemplo de cómo funciona la base de datos en InfluxDB.

Los datos se escriben en InfluxDB a través del protocolo de línea. La estructura del protocolo de línea es la siguiente:

<medidas>,<etiqueta>[,<etiquetas>] <campo>[,<campo>] <timestamp>

Un ejemplo de un protocolo de punto en línea:

clima,localidad=us-midwest temperatura=82 1465839830100400200

Siendo:

  • Medidas = Tablas en SQL
  • Etiquetas = Columnas indexadas
  • Campos = Culumnas no indexadas

Conclusión

Se ha hecho un recorrido de InfluxDB desde los conceptos hasta comprender los primeros pasos y pasar a la acción. Los puntos fuertes de esta herramienta como motor de base de datos para series temporales, son muchos, por lo que no debes dejar de aprender si te adentras en temas de monitorización de sistemas y así como hay otras alternativas, esta no deja de ser una de las mejores y de la cuál puedes complementar con otras para controlar y monitorizar mejor tus sistemas con un Stack limpio y elegante.


Compartir este post

También te puede interesar...

Tecnología

Qué es Grafana y primeros pasos

27 Diciembre 2021 Jerson Martínez
Tecnología

Qué es Telegraf y primeros pasos

14 Enero 2022 Jerson Martínez
Monitorización con Grafana y Prometheus

Curso de Monitorización con Grafana y Prometheus

1 hora y 22 minutos · Curso

Este curso trata sobre como monitorizar aplicaciones, servicios o procesos utilizando Grafana y Prometheus además presentaremos y probaremos algunos exporters que tenemos disponibles para recoger …

  • Virtualización
Artículos
Ver todos