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