Pluto is a high-performance Prometheus remote write adapter that stores metrics in ClickHouse. It provides a scalable and efficient way to handle large volumes of time-series data from Prometheus.
- High Performance: Optimized for high-throughput ingestion and querying of metrics
- ClickHouse Integration: Leverages ClickHouse's columnar storage for efficient compression and querying
- Prometheus Compatible: Implements Prometheus remote write API and storage interface
- Sharding Support: Built-in support for horizontal scaling through sharding
- Downsampling: Automatic downsampling of historical data to reduce storage costs
- Debug Endpoints: Includes metrics and pprof endpoints for monitoring and profiling
- Web Interface: Built-in Prometheus web UI for querying and visualizing metrics
git clone https://github.com/lomik/pluto.git
cd pluto
go build -o pluto ./cmd/plutodocker build -t pluto .Pluto uses a YAML configuration file. See config.yaml for a complete example.
Key configuration sections:
- clickhouse: ClickHouse connection settings
- insert: Remote write receiver configuration
- prometheus: Prometheus storage interface settings
- debug: Debug endpoints (metrics, pprof)
- Start ClickHouse
- Create tables using the schema from
example/simple/init.sql - Configure Pluto with your ClickHouse connection
- Start Pluto
- Configure Prometheus to use Pluto as remote write endpoint
Pluto accepts Prometheus remote write requests at /api/v1/write on the configured insert port.
Pluto implements the Prometheus storage interface, allowing it to be used as a drop-in replacement for Prometheus storage.
See the example/ directory for complete setups:
- simple: Basic setup with single ClickHouse instance
- sharding: Horizontal scaling with multiple shards
- downsampling: Automatic data downsampling for long-term storage
The ClickHouse table schema is defined in example/simple/init.sql.
Licensed under the Apache License 2.0. See LICENSE for details.