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.
Comments