Frequently Asked Questions
General
What is IceGate?
IceGate is an observability data lake engine that stores logs, traces, metrics, and events in Apache Iceberg tables. It provides Loki- and Tempo-compatible APIs for querying, plus Arrow Flight SQL. A Prometheus-compatible API is planned but not implemented yet - see the Loki and Tempo references for what is served today.
What makes IceGate different?
- Open Standards: Built entirely on Apache Iceberg, Arrow, Parquet, and OpenTelemetry
- Cost-Effective: Uses object storage (S3 or RustFS) instead of expensive databases
- ACID Transactions: Full transaction support without a dedicated OLTP database
- Compute-Storage Separation: Scale processing and storage independently
What is the current status?
IceGate is in alpha development. Core features work, but APIs may change.
What license is IceGate under?
Apache 2.0.
Getting Started
What are the minimum requirements?
- Rust 1.92.0+
- Docker (for development environment)
- S3-compatible object storage
How do I get started?
See the Installation guide and Quick Start.
Do I need Kubernetes?
No. IceGate can run with Docker Compose for smaller deployments. Kubernetes is recommended for production.
Data and Storage
Where is data stored?
All data is stored in S3-compatible object storage:
- WAL (Write-Ahead Log) for recent data
- Iceberg tables for historical data
- Catalog metadata in Nessie
What data formats are used?
- Storage: Apache Parquet with ZSTD compression
- In-memory: Apache Arrow
- Table Format: Apache Iceberg v2
How is data organized?
Data is partitioned by:
tenant_id- Multi-tenancy isolationaccount_id- Optional sub-tenant partitioningday(timestamp)- Time-based partitioning
What is the data retention?
Configurable per table. Default: 30 days for logs, 14 days for traces.
Querying
What query languages are supported?
- LogQL: For querying logs (Grafana Loki compatible)
- PromQL: Planned for metrics
- TraceQL: Planned for traces
What LogQL features are implemented?
See Querying Guide for the full feature matrix.
Implemented:
- Log stream selectors
- Line filters (contains, regex)
- Range aggregations (count_over_time, rate, bytes_rate)
- Vector aggregations (sum, avg, min, max)
Not yet implemented:
- Pipeline parsers (json, logfmt)
- Unwrap aggregations
- Binary operations
Can I use Grafana?
Yes. IceGate provides Loki-compatible APIs that work with Grafana's Loki data source, and Tempo-compatible APIs for the Tempo data source. Both implement a subset of the upstream API, so check the Loki and Tempo references if a panel depends on a specific endpoint. The Prometheus data source will not work yet - that API is planned.
Multi-Tenancy
How does multi-tenancy work?
Tenants are identified by the X-Scope-OrgID HTTP header. All data is partitioned by tenant_id.
Is tenant data isolated?
Yes. Queries only access data for the tenant specified in the header. Data is physically partitioned.
Can I have multiple tenants in one deployment?
Yes. IceGate is designed as a multi-tenant system.
Performance
How does IceGate scale?
- Ingest: Horizontal scaling for write throughput
- Query: Horizontal scaling for concurrent queries
- Storage: Object storage scales independently
What query performance can I expect?
Performance depends on:
- Time range of query
- Partition pruning (filter on tenant_id, timestamp)
- Query complexity
Typical sub-second response for filtered queries over recent data.
How is data compacted?
The Ingest service's built-in shift process automatically compacts WAL files into optimized Iceberg tables with larger file sizes and better statistics.
Operations
How do I monitor IceGate?
- Prometheus metrics exposed on each service
- Health check endpoints
- Query explain endpoint for debugging
What about high availability?
- Ingest and Query services can run multiple replicas
- Object storage provides durability
- Nessie catalog stores metadata
How do I backup data?
- Enable S3 versioning for point-in-time recovery
- Iceberg supports time-travel queries
- Export Nessie catalog metadata
Integration
What ingestion protocols are supported?
OpenTelemetry Protocol (OTLP):
- HTTP (port 4318)
- gRPC (port 4317)
Can I use existing OTEL collectors?
Yes. Any OpenTelemetry-compatible collector can send data to IceGate.
What about Prometheus remote write?
Planned for future releases.
Troubleshooting
My queries return empty results
- Check tenant ID is correct
- Verify time range includes your data
- Wait for data compaction or query WAL directly
Data is not appearing after ingestion
- Verify 200 OK response from ingest endpoint
- Check WAL files in object storage
- Check Ingest service logs
Query timeout
- Add time range filters
- Filter on partition columns (tenant_id)
- Reduce result limit
See Troubleshooting for more.
Contributing
How can I contribute?
See Contributing Guide. We welcome:
- Bug reports
- Feature requests
- Pull requests
- Documentation improvements
Where do I report issues?
GitHub Issues: https://github.com/icegatetech/icegate/issues