Overview
This template provides a production‑ready QuestDB instance as a Monk runnable. You can:- Run it directly to get a managed high-performance time-series database with sensible defaults
- Inherit it in your own runnable to seamlessly add time-series data storage to your stack
What this template manages
- QuestDB container (
questdb/questdbimage, configurable tag) - Network services on ports 9000 (HTTP/Web Console), 8812 (PostgreSQL), 9009 (InfluxDB)
- Persistent volumes for database and configuration
- HTTP API and interactive web console
- PostgreSQL wire protocol support
- InfluxDB line protocol for high-speed ingestion
Quick start (run directly)
- Load templates
- Run QuestDB with defaults
- Access the services
- Web Console:
http://localhost:9000 - HTTP API:
http://localhost:9000 - PostgreSQL wire:
localhost:8812 - InfluxDB line protocol:
localhost:9009
Configuration
Key variables you can customize in this template:${monk-volume-path}/questdb on the host. Configuration files are mounted from files/ directory.
Use by inheritance (recommended for apps)
Inherit the QuestDB runnable in your application and declare a connection. Example:Ports and connectivity
- Service:
questdbon TCP ports9000(HTTP),8812(PostgreSQL),9009(InfluxDB) - From other runnables in the same process group, use
connection-hostname("\<connection-name>")to resolve the QuestDB host.
Persistence and configuration
- Data path:
${monk-volume-path}/questdb/db:/root/.questdb/db - Config path:
files/server.confandfiles/log.confmounted into the container - All tables and partitions are persisted to the data volume
Features
- High Performance: Millions of rows per second ingestion
- SQL Support: Full SQL with time-series extensions
- Multiple Protocols: PostgreSQL wire, InfluxDB line protocol, HTTP
- Real-Time: Query data as it arrives
- Efficient Storage: Column-oriented, time-partitioned
- Built-In Functions: Time-series aggregations and window functions
- Web Console: Interactive SQL editor and visualization
- PostgreSQL Compatible: Use standard PostgreSQL clients
SQL Examples
Create time-series table:InfluxDB Line Protocol
Send data via ILP (fastest ingestion method):PostgreSQL Client Access
Use any PostgreSQL client:Use cases
QuestDB excels at:- IoT sensor data collection
- Application metrics and monitoring
- Financial market data
- Real-time analytics
- Event logging
- Network monitoring
- Industrial telemetry
Related templates
- Use
pgadmin/for web-based database administration - Combine with
grafana/for time-series visualization - Integrate with
telegraf/for metrics collection
Troubleshooting
- Access Web Console at
http://localhost:9000to run SQL queries interactively - Check server status with
curl http://localhost:9000/status - Check logs:
- For ingestion issues, verify InfluxDB line protocol port (9009) is accessible
- For query performance, ensure proper indexing on SYMBOL columns and use SAMPLE BY for time-series aggregations
- Monitor disk space for time-partitioned tables
- Ensure the host volumes are writable by the container user