InfluxDB es una base de datos de series temporales diseñada para métricas y monitoreo de sistemas.

¿Qué es InfluxDB?

InfluxDB es una base de datos de series temporales optimizada para almacenar y consultar métricas de sistemas, aplicaciones y servicios.

Características

Series Temporales

  • Time-series: Optimizada para series temporales
  • High Performance: Alto rendimiento
  • Scalability: Escalabilidad horizontal
  • Compression: Compresión de datos

Consultas

  • SQL-like: Consultas similares a SQL
  • Aggregations: Agregaciones de datos
  • Functions: Funciones de análisis
  • Real-time: Consultas en tiempo real

Integración

  • APIs: APIs REST y GraphQL
  • Clients: Clientes para múltiples lenguajes
  • Tools: Herramientas de integración
  • Ecosystem: Ecosistema de herramientas

Configuración

Instalación

1
2
3
4
5
# Instalar InfluxDB
wget https://dl.influxdata.com/influxdb/releases/influxdb2-2.7.1-linux-amd64.tar.gz
tar xvzf influxdb2-2.7.1-linux-amd64.tar.gz
sudo cp influxdb2-2.7.1/usr/bin/influxd /usr/local/bin/
sudo cp influxdb2-2.7.1/usr/bin/influx /usr/local/bin/

Configuración

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# influxdb.conf
[meta]
  dir = "/var/lib/influxdb/meta"
  retention-autocreate = true
  logging-enabled = true

[data]
  dir = "/var/lib/influxdb/data"
  wal-dir = "/var/lib/influxdb/wal"
  query-log-enabled = true
  cache-max-memory-size = "1g"
  cache-snapshot-memory-size = "25m"
  cache-snapshot-write-cold-duration = "10m"
  compact-full-write-cold-duration = "4h"
  max-series-per-database = 1000000
  max-values-per-tag = 100000

Inicialización

1
2
3
4
5
6
7
# Inicializar InfluxDB
influx setup \
  --username admin \
  --password password \
  --org myorg \
  --bucket mybucket \
  --force

Consultas

Básicas

1
2
3
4
5
6
7
8
-- Consultar métricas de CPU
SELECT * FROM cpu WHERE time > now() - 1h

-- Agregar métricas por tiempo
SELECT mean(usage_idle) FROM cpu WHERE time > now() - 1h GROUP BY time(5m)

-- Filtrar por tags
SELECT * FROM cpu WHERE host = 'server01' AND time > now() - 1h

Avanzadas

1
2
3
4
5
6
7
8
-- Consultas con funciones
SELECT derivative(mean(usage_idle), 1s) FROM cpu WHERE time > now() - 1h GROUP BY time(5m)

-- Consultas con joins
SELECT * FROM cpu c JOIN memory m ON c.time = m.time WHERE c.time > now() - 1h

-- Consultas con subconsultas
SELECT * FROM (SELECT mean(usage_idle) FROM cpu WHERE time > now() - 1h GROUP BY time(5m)) WHERE mean > 80

Casos de Uso

Monitoreo de Sistemas

  • Servidores: Métricas de servidores
  • Aplicaciones: Métricas de aplicaciones
  • Servicios: Métricas de servicios
  • Infraestructura: Métricas de infraestructura

Análisis

  • Performance: Análisis de rendimiento
  • Capacity: Análisis de capacidad
  • Trends: Análisis de tendencias
  • Forecasting: Predicción de tendencias

Alertas

  • Thresholds: Alertas por umbrales
  • Anomalies: Detección de anomalías
  • Trends: Alertas por tendencias
  • Custom: Alertas personalizadas

Integración

Herramientas

  • Grafana: Visualización de datos
  • Telegraf: Recopilación de métricas
  • Kapacitor: Procesamiento de datos
  • Chronograf: Interfaz web

APIs

  • REST API: API REST
  • GraphQL: API GraphQL
  • Client Libraries: Librerías de cliente
  • Webhooks: Webhooks

Mejores Prácticas

Diseño

  • Schema: Diseño de esquema
  • Tags: Uso de tags
  • Retention: Políticas de retención
  • Sharding: Particionado de datos

Consultas

  • Indexing: Uso de índices
  • Filtering: Filtrado eficiente
  • Aggregation: Agregación de datos
  • Caching: Caché de consultas

Mantenimiento

  • Backup: Respaldos regulares
  • Monitoring: Monitoreo de base de datos
  • Optimization: Optimización de consultas
  • Scaling: Escalabilidad

Conceptos Relacionados

  • Telegraf - Herramienta que alimenta InfluxDB
  • Dashboards - Visualización de datos de InfluxDB
  • Métricas - Medición que InfluxDB almacena
  • Registros - Logs que InfluxDB almacena
  • NPM - Monitoreo de red que InfluxDB almacena
  • Capturas de tráfico - Datos que InfluxDB almacena
  • SIEM - Sistema que puede integrar InfluxDB
  • SOAR - Automatización que puede usar InfluxDB
  • Firewall - Dispositivo que InfluxDB monitorea
  • VPN - Conexión que InfluxDB monitorea
  • VLAN - Segmento que InfluxDB monitorea
  • Routers - Dispositivos que InfluxDB monitorea
  • Switches - Dispositivos que InfluxDB monitorea
  • CISO - Rol que supervisa InfluxDB

Referencias