Yuvi is an in-memory storage engine for recent time series metrics data. It has the following features:
- Implemented in Java.
- Supports OpenTSDB metric ingestion and OpenTSDB queries.
- Uses delta-of-delta encoding from Facebook Gorilla to store metrics data.
- Stores tag metadata in an inverted index for fast look ups during queries.
- Stores tag data and older metrics off heap to minimize GC pauses.
- Metrics data older than a few hours is rolled over.
Yuvi consists a chunk manager that stores the metrics data the last few hours. A chunk manager manages several chunk, which consists of 2 hours of metrics data. Each chunk consists of a tag store to store metrics metdata and a metric store to store the metrics data. For efficiency, several chunks can also share a tag store. Once the data in a chunk is older than a configured amount of time, it is removed.
import com.pinterest.yuvi.chunk.ChunkManager;
ChunkManager chunkManager = new ChunkManager("test", 1000);
chunkManager.addMetric("put metricName.cpu.util 1489647603 30 host=host1 cluster=c1");
List<TimeSeries> ts = chunkManager.query(Query.parse("metricName.cpu.util host=*"), 1489647600, 1489649600, QueryAggregation.NONE);
This project is under active development. We are currently integrating Yuvi with OpenTSDB.