A Rust implementation of Prometheus' chunkenc
library.
- Parse Prometheus XOR-encoded chunks (that are heavily inspired by Gorilla).
- Serialise time series to Prometheus XOR-encoded chunks.
- Read Prometheus' cold data directly from the disk.
- Also comes with utilities to read and write
varint
,uvarint
,varbit
,varbit_ts
, andvarbit_xor
numbers.
Prometheus uses XOR Chunks in its remote read API, and I wanted to understand how they work in detail. This crate enables SensApp to stream data to Prometheus. SensApp is written in Rust, and I wanted a chunkenc Rust implementation.
Also, writing a parser and a serialiser did sound fun.
Apache 2.0. Check the LICENSE
file for more details.
Feel free to report issues, contribute, or ask questions about this project.
This project is ported from Prometheus' chunkenc
, that used go-tzs
, that is based on the Gorilla paper. The parsing heavily relies on nom
.
The project supports the Smart Building Hub research infrastructure project, which is funded by the Norwegian Research Council.