Skip to content

SINTEF/rusty-chunkenc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

rusty-chunkenc

Crates.io Documentation License

A Rust implementation of Prometheus' chunkenc library.

Features

  • 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, and varbit_xor numbers.

Why?

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.

License

Apache 2.0. Check the LICENSE file for more details.

Contributing

Feel free to report issues, contribute, or ask questions about this project.

Acknowledgements

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.