InfluxDB
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