Configuración de InfluxDB con Docker para Manejo de Series Temporales

Para implementar InfluxDB, una base de datos especializada en series temporales, utilizando Docker, se requiere seguir una serie de pasos y comandos. A continuación, se detalla el proceso completo desde la instalación hasta las operaciones básicas.

Instalación de InfluxDB mediante Docker

Primero, se descarga la imagen oficial de InfluxDB desde Docker Hub. Se recomienda utilizar una versión estable para evitar problemas de compatibilidad.

docker pull influxdb:1.8

Posteriormente, se verifica que la imagen se haya descargado correctamente listando las imágenes disponibles en el sistema.

docker images --filter "reference=influxdb*"

A continuación, se ejecuta un contenedor a partir de la imagen, exponiendo los puertos necesarios para la interfaz web y la API. Se asigna un nombre descriptivo al contenedor para facilitar su gestión.

docker run -d --name temporal-db -p 8083:8083 -p 8086:8086 influxdb:1.8

Para confirmar que el contenedor está activo, se consulta el estado de los contenedores en ejecución.

docker ps --filter "name=temporal-db"

Uso del cliente de línea de comandos de InfluxDB

Una vez que el contenedor está corriendo, se accede a su interior para interactuar con InfluxDB a través de su CLI.

docker exec -it temporal-db bash

Dentro del contenedor, se localizan los ejecutables relacionados con InfluxDB en el directorio de binarios.

cd /usr/bin && ls | grep influx

Para familiarizarse con las opciones disponibles, se puede solicitar ayuda del comando influx.

influx --help

Opciones de conexión y configuración

Se puede verificar la versión instalada del cliente.

influx -version

Para conectarse a la base de datos, se especifican el host y el puerto. En este caso, se utiliza localhost y el puerto predeterminado 8086.

influx -host 127.0.0.1 -port 8086

Es posible conectra directamente a una base de datos específica durante el inicio de la sesión.

influx -host 127.0.0.1 -port 8086 -database metrics_db

Gestión de usuarios y autenticación

Dentro del shell de InfluxDB, se pueden crear usuarios y asignar permisos. A continuación, un ejemplo para configurar un usuario administrador.

-- Primero, listar los usuarios existentes
SHOW USERS

-- Crear un usuario con privilegios
CREATE USER admin_user WITH PASSWORD 'secure_pass' WITH ALL PRIVILEGES

-- Verificar la creación
SHOW USERS

Para iniciar sesión con credenciales específicas, se añaden los parámetros de usuario y contraseña al comando de conexión.

influx -host 127.0.0.1 -port 8086 -database metrics_db -username admin_user -password 'secure_pass'

Ejecución de consultas y formatos de salida

Se pueden ejecutar comandos directamente desde la línea de comandos sin entrar al shell interactivo.

influx -host 127.0.0.1 -port 8086 -database metrics_db -username admin_user -password 'secure_pass' -execute 'SELECT * FROM sensor_data'

El formato de salida puede ser configurado, por ejemplo, a JSON, y se puede mejorar la legibilidad con pretty printing.

influx -host 127.0.0.1 -port 8086 -database metrics_db -username admin_user -password 'secure_pass' -execute 'SELECT * FROM sensor_data' -format json -pretty

La precisión de las marcas de tiempo se puede ajustar según sea necesario.

influx -host 127.0.0.1 -port 8086 -database metrics_db -username admin_user -password 'secure_pass' -execute 'SELECT * FROM sensor_data' -format column -precision ms

Importación de datos desde archivos

InfluxDB permite importar datos desde archivos de texto que contengan definiciones y consultas. Un archivo de ejemplo podría tener la siguiente estructura.

-- Contenido del archivo datos_import.txt
CREATE DATABASE monitoring
CREATE RETENTION POLICY daily ON monitoring DURATION 24h REPLICATION 1

-- Datos a insertar
# CONTEXT-DATABASE: monitoring
# CONTEXT-RETENTION-POLICY: daily
metrics,sensor_id=dev01 temperature=22.5 1609459200000000000
metrics,sensor_id=dev02 temperature=18.7 1609459200000000000

La importación se realiza mediante el comando influx con la opción -import.

influx -import -path=datos_import.txt -precision=s

Para manejar archivos comprimidos, se puede utilizar la opción correspondiente.

gzip datos_import.txt
influx -import -path=datos_import.txt.gz -precision=s -compressed

Comandos internos del shell de InfluxDB

Una vez dentro del shell interactivo de InfluxDB, se dispone de varios comandos para administrar la base de datos.

Para obtener ayuda sobre los comandos disponibles.

HELP

La gestión de usuarios se puede realizar con comandos como CREATE USER, DROP USER y SHOW USERS.

SHOW USERS
CREATE USER viewer WITH PASSWORD 'view_only'
DROP USER viewer

La conexión y autenticación se pueden gestionar con los comandos CONNECT y AUTH.

CONNECT 127.0.0.1:8086
AUTH
username: admin_user
password: ****

Para ver la configuración actual del servidor.

SETTINGS

Listar todas las bases de datos.

SHOW DATABASES

Cambiar a una base de datos específica.

USE metrics_db

Mostrar las mediciones (tablas equivalentes) en la base de datos actual.

SHOW MEASUREMENTS

Para ver las etiquetas (tags) que actúan como índices.

SHOW TAG KEYS

Y los campos (fields) que contienen los valores medidos.

SHOW FIELD KEYS FROM sensor_data

Se puede establecer un formato de salida persistente, como JSON, y mejorar su visualización.

FORMAT JSON
PRETTY
SHOW DATABASES

El historial de comandos se puede revisar con el comando correspondiente.

HISTORY

Consultas y manipulación de datos

Para recuperar datos, se utiliza la sentencia SELECT.

SELECT * FROM sensor_data WHERE sensor_id = 'dev01' LIMIT 10

La inserción de nuevos datos se realiza con INSERT, siguiendo la sintaxis específica de InfluxDB para etiquetas y campos.

INSERT sensor_data,sensor_id=dev03 temperature=25.0

Para elimianr mediciones o bases de datos, se usan los comandos DROP.

DROP MEASUREMENT sensor_data
DROP DATABASE metrics_db

Etiquetas: Docker InfluxDB Series Temporales Base de Datos de Series Temporales CLI de InfluxDB

Publicado el 7-4 03:40