Clusters
Provision and manage InfluxDB 3 clusters with Docker-based container orchestration.
Overview
Clusters are the storage backbone of FacilFlow. Each cluster is an InfluxDB 3 deployment that can scale from a single node to a multi-node topology with dedicated querier, ingester, compactor, and router nodes.
Cluster List
Navigate to Infrastructure > Clusters to see all clusters:
| Column | Description |
|---|---|
| Name | Cluster identifier |
| Status | Running, stopped, provisioning, error |
| Nodes | Number of container nodes |
| Uptime | Time since last start |
| Storage | Disk usage |
Provisioning a Cluster
- Click Create Cluster
- Choose a name and configuration preset
- Select node types to include
- Configure resources (CPU, memory limits)
- Click Provision
FacilFlow uses the Docker SDK to create and manage containers for each node.
Node Types
| Node | Role |
|---|---|
| Router | Accepts writes and queries, routes to appropriate nodes |
| Ingester | Handles incoming data writes, buffers to WAL |
| Querier | Executes SQL queries against stored data |
| Compactor | Compacts Parquet files for query performance |
For small deployments, a single all-in-one node handles all roles.
Container Lifecycle
Each node runs as a Docker container. Available operations:
| Action | Description |
|---|---|
| Start | Start a stopped container |
| Stop | Gracefully stop a container |
| Restart | Stop and start a container |
| Remove | Delete the container and its data |
| View Logs | Stream container logs in real-time |
Logs
Container logs stream via Server-Sent Events (SSE):
- Click a node and open the Logs tab
- Logs stream live as the container produces output
- Filter by severity
- Scroll through historical logs
Stats
Each node reports resource usage:
- CPU utilization
- Memory usage
- Network I/O
- Disk usage
Data Explorer
Each cluster includes a built-in data explorer:
- Select a cluster
- Open the Data Explorer tab
- Write SQL queries against the cluster’s data
- View results as tables or charts
- Set time ranges with the time picker
Example Queries
-- Recent sensor data
SELECT * FROM sensor_data
WHERE time > now() - INTERVAL '1 hour'
ORDER BY time DESC
LIMIT 100;
-- Aggregated averages
SELECT
date_bin('5 minutes', time) AS bucket,
avg(temperature) AS avg_temp
FROM sensor_data
WHERE time > now() - INTERVAL '24 hours'
GROUP BY bucket
ORDER BY bucket;