Skip to main content
โšก Calmops

InfluxDB Use Cases: Production Applications Across Industries

Introduction

InfluxDB powers production applications across diverse industries, from monitoring millions of IoT sensors to tracking application performance in real-time. This article explores detailed production use cases with schema designs, query patterns, and implementation strategies.

IoT and Sensor Monitoring

IoT applications generate massive volumes of time-series data from sensors, actuators, and devices.

Smart Building Management

-- Smart building sensor data
-- Temperature sensors
temperature,building=building-a,floor=1,zone=office-1,sensor_id=sensor-001 temperature=72.5 1700000000

-- Humidity sensors
humidity,building=building-a,floor=1,zone=office-1,sensor_id=sensor-002 humidity=45.2 1700000000

-- Occupancy sensors
occupancy,building=building-a,floor=1,zone=office-1,count=25 1700000000

Query patterns:

-- Average temperature by floor
SELECT mean(temperature) FROM temperature 
WHERE time > now() - 24h 
GROUP BY building, floor

-- Detect zone overheating
SELECT * FROM temperature 
WHERE temperature > 78 
AND time > now() - 1h

-- Energy usage analysis
SELECT sum(energy_consumption) FROM power 
WHERE time > now() - 7d 
GROUP BY building, time(1h)

Industrial IoT

-- Machine sensor data
machine_metrics,machine_id=cnc-001,plant=factory-1,line=assembly-line-1 temperature=85.2,vibration=0.45,rpm=3500 1700000000

machine_metrics,machine_id=cnc-001,plant=factory-1,line=assembly-line-1 spindle_load=75.5,tool_wear=0.12 1700000000

-- Predictive maintenance queries
SELECT mean(temperature) FROM machine_metrics 
WHERE time > now() - 24h 
GROUP BY machine_id 
HAVING mean(temperature) > 90

Agriculture

-- Greenhouse monitoring
environmental,sensor_id=greenhouse-1,location=zone-a temperature=75.5,humidity=65.2,light_lux=12000,co2=800 1700000000

environmental,sensor_id=greenhouse-1,location=zone-a soil_moisture=42,soil_temp=68 1700000000

-- Optimal growing conditions
SELECT * FROM environmental 
WHERE temperature BETWEEN 70 AND 80 
AND humidity BETWEEN 60 AND 70 
AND time > now() - 1h

DevOps and Observability

InfluxDB is a popular choice for application and infrastructure monitoring.

System Metrics

-- CPU metrics
cpu,host=server01,region=us-west usage_user=25.5,usage_system=15.2,usage_idle=59.3 1700000000

-- Memory metrics
mem,host=server01,region=us-west total=16384,used=8192,free=8192,used_percent=50 1700000000

-- Disk metrics
disk,host=server01,device=sda total=500000,used=250000,free=250000,inodes_total=50000000,inodes_used=10000000 1700000000

Dashboard queries:

-- CPU utilization over time
SELECT mean(usage_user) FROM cpu 
WHERE host =~ /server.*/ 
GROUP BY time(5m), host 
ORDER BY time DESC

-- Memory pressure alert
SELECT * FROM mem 
WHERE used_percent > 90 
AND time > now() - 5m

-- Disk usage trend
SELECT derivative(used, 1d) FROM disk 
WHERE device = 'sda' 
GROUP BY time(1d)

Application Performance

-- Request metrics
http_requests,service=api,method=GET,endpoint=/api/users,status=200,region=us-west latency_p50=45.2,latency_p95=150.5,latency_p99=450.2,count=10000 1700000000

http_requests,service=api,method=POST,endpoint=/api/data,status=201,region=us-west latency_p50=120.5,latency_p95=350.0,latency_p99=800.0,count=5000 1700000000

Query patterns:

-- P95 latency by endpoint
SELECT percentile(latency_p95, 95) FROM http_requests 
WHERE time > now() - 1h 
GROUP BY endpoint, method

-- Error rate
SELECT count(latency_p50) FROM http_requests 
WHERE status >= 500 
GROUP BY service, time(1m)

-- Throughput
SELECT sum(count) FROM http_requests 
WHERE time > now() - 5m 
GROUP BY service, endpoint

Kubernetes Monitoring

-- Kubernetes metrics
kubernetes_pod,cluster=prod,namespace=default,pod=api-7b9f8d6c5-x2yz9 cpu_usage=500m,memory_usage=256Mi,network_rx=1000,network_tx=2000 1700000000

kubernetes_node,cluster=prod,node=worker-1 cpu_allocatable=4000m,memory_allocatable=8Gi,CPU_usage=2500m,memory_usage=6Gi 1700000000

Financial Applications

Time-series data is essential for financial analytics.

Stock Market Data

-- Tick data
stock,Symbol=AAPL,exchange=NASDAQ price=185.50,volume=50000000 1700000000000000000
stock,Symbol=GOOGL,exchange=NASDAQ price=142.25,volume=25000000 1700000000000000000

-- Aggregated bars
stock_1m,Symbol=AAPL,exchange=NASDAQ open=185.00,high=186.00,low=184.50,close=185.50,volume=50000000 1700000000000000000

Analytics queries:

-- Price statistics
SELECT max(high), min(low), last(close) FROM stock_1m 
WHERE Symbol = 'AAPL' 
GROUP BY time(1h)

-- Volume alerts
SELECT * FROM stock 
WHERE volume > 100000000 
AND time > now() - 1h

Cryptocurrency

-- Crypto prices
crypto,pair=BTC/USD,exchange=coinbase price=45000.00,bid=44990.00,ask=45010.00,volume_24h=50000 1700000000

crypto,pair=ETH/USD,exchange=coinbase price=2500.00,bid=2499.00,ask=2501.00,volume_24h=150000 1700000000

Network Monitoring

-- Network interface stats
network,host=router-01,interface=eth0 rx_bytes=1000000,tx_bytes=500000,rx_packets=15000,tx_packets=12000,errors=0 1700000000

-- Latency measurements
ping,source=monitor-01,destination=8.8.8.8 latency_ms=25.5,jitter_ms=2.1,packet_loss_percent=0.0 1700000000

Alerting queries:

-- High latency alert
SELECT * FROM ping 
WHERE latency_ms > 100 
AND time > now() - 5m

-- Packet loss detection
SELECT * FROM ping 
WHERE packet_loss_percent > 1 
AND time > now() - 5m

Healthcare and Wearables

-- Patient vitals
vitals,patient_id=p001,device=wearable-01 heart_rate=72,blood_oxygen=98,temperature=98.6,steps=150 1700000000

vitals,patient_id=p001,device=wearable-01 sleep_stage=light,resting_heart_rate=58,hrv=45 1700000000

Monitoring queries:

-- Heart rate anomaly
SELECT * FROM vitals 
WHERE heart_rate < 50 OR heart_rate > 120 
AND time > now() - 1h

-- Activity summary
SELECT mean(heart_rate), sum(steps) FROM vitals 
WHERE time > now() - 24h 
GROUP BY patient_id

Automotive and Transportation

-- Vehicle telemetry
vehicle,vehicle_id=car-001,model=tesla-3 speed=65,acceleration=2.5,brake_force=0,heading=270,latitude=37.7749,longitude=-122.4194 1700000000

vehicle,vehicle_id=car-001,model=tesla-3 battery_percent=75,charging=false,range_remaining=200,motor_rpm=4500 1700000000

-- Fleet management
fleet_location,company=fleet-a,vehicle_id=truck-001 latitude=37.7749,longitude=-122.4194,speed=55,driver_id=d001 1700000000

Best Practices Summary

Schema Design

-- Good: specific tags
cpu,host=server01,region=us-west,env=production value=0.5

-- Bad: too many tags
cpu,host=server01,ip=192.168.1.1,process_id=1234,user=john value=0.5

Query Optimization

-- Always use time filters
SELECT * FROM cpu WHERE time > now() - 1h

-- Limit fields when possible
SELECT host, value FROM cpu

-- Use aggregation to reduce data
SELECT mean(value) FROM cpu GROUP BY time(5m), host

Data Retention

-- Create appropriate retention policies
CREATE RETENTION POLICY "realtime" ON "mydb" DURATION 1d SHARD DURATION 1h
CREATE RETENTION POLICY "hourly" ON "mydb" DURATION 30d SHARD DURATION 1d
CREATE RETENTION POLICY "daily" ON "mydb" DURATION 365d SHARD DURATION 1d

Conclusion

InfluxDB powers production applications across virtually every industry. The use cases demonstrated here show common patterns: high-volume IoT sensor data, DevOps monitoring, financial analytics, network monitoring, and healthcare wearables. These patterns form the foundation for building robust time-series applications.

With this article, we’ve completed the InfluxDB tutorial series covering basics, operations, internals, trends, AI applications, and production use cases. You now have comprehensive knowledge to design, implement, and operate InfluxDB in your own applications.

Resources

Comments