Qué es Grafana y primeros pasos
Si no conoces Grafana, en este artículo te proponemos aprender más sobre esta potente herramienta, así como a dar los 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.
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.
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.
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.
Graphite
, collectd
y OpenTSDB
.InfluxDB admite varios lenguajes de consulta:
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 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.
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.
InfluxDB realmente no tiene el concepto de una tabla.
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.
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.
InfluxDB es un sistema basado en push. Requiere una aplicación para insertar activamente los datos en InfluxDB.
InfluxDB es mucho más adecuado para el registro de eventos.
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.
InfluxDB cuenta con más de cien integraciones, entre ellas están:
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:
foodships
park_id``planet
#_foodships
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.
¿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.
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.
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.
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
docker pull influxdb:2.1.1
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:
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.
También te puede interesar
Si no conoces Grafana, en este artículo te proponemos aprender más sobre esta potente herramienta, así como a dar los primeros pasos...
En este artículo abordamos qué es Telegraf y sus principales características y ventajas, así como una guía para realizar su implementación básica y un...
Este curso trata sobre como monitorizar aplicaciones, servicios o procesos utilizando Grafana y Prometheus además presentaremos y probaremos...