All Projects → pinterest → Yuvi

pinterest / Yuvi

Licence: apache-2.0
Yuvi is an in-memory storage engine for recent time series metrics data.

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Yuvi

Prometheus
The Prometheus monitoring system and time series database.
Stars: ✭ 40,114 (+114511.43%)
Mutual labels:  time-series, metrics
Warp10 Platform
The Most Advanced Time Series Platform
Stars: ✭ 227 (+548.57%)
Mutual labels:  time-series, metrics
Telegraf
The plugin-driven server agent for collecting & reporting metrics.
Stars: ✭ 10,925 (+31114.29%)
Mutual labels:  time-series, metrics
Whisper
Whisper is a file-based time-series database format for Graphite.
Stars: ✭ 1,121 (+3102.86%)
Mutual labels:  time-series, metrics
Ceres
Distributable time-series database (not actively maintained)
Stars: ✭ 351 (+902.86%)
Mutual labels:  time-series, metrics
Carbon
Carbon is one of the components of Graphite, and is responsible for receiving metrics over the network and writing them down to disk using a storage backend.
Stars: ✭ 1,435 (+4000%)
Mutual labels:  time-series, metrics
Hawkular Metrics
Time Series Metrics Engine based on Cassandra
Stars: ✭ 225 (+542.86%)
Mutual labels:  time-series, metrics
Filodb
Distributed Prometheus time series database
Stars: ✭ 1,286 (+3574.29%)
Mutual labels:  time-series, metrics
Nightingale
💡 A Distributed and High-Performance Monitoring System. Prometheus enterprise edition
Stars: ✭ 4,003 (+11337.14%)
Mutual labels:  time-series, metrics
Questdb
An open source SQL database designed to process time series data, faster
Stars: ✭ 7,544 (+21454.29%)
Mutual labels:  time-series, metrics
Nsdb
Natural Series Database
Stars: ✭ 49 (+40%)
Mutual labels:  time-series, metrics
Graphite Web
A highly scalable real-time graphing system
Stars: ✭ 5,384 (+15282.86%)
Mutual labels:  time-series, metrics
Snmpcollector
A full featured Generic SNMP data collector with Web Administration Interface for InfluxDB
Stars: ✭ 216 (+517.14%)
Mutual labels:  time-series, metrics
tsfeatures
Calculates various features from time series data. Python implementation of the R package tsfeatures.
Stars: ✭ 87 (+148.57%)
Mutual labels:  time-series, metrics
Influxdb
Scalable datastore for metrics, events, and real-time analytics
Stars: ✭ 22,577 (+64405.71%)
Mutual labels:  time-series, metrics
Akumuli
Time-series database
Stars: ✭ 754 (+2054.29%)
Mutual labels:  time-series, metrics
Prometheus Net
.NET library to instrument your code with Prometheus metrics
Stars: ✭ 944 (+2597.14%)
Mutual labels:  metrics
Nginx Lua Prometheus
Prometheus metric library for Nginx written in Lua
Stars: ✭ 964 (+2654.29%)
Mutual labels:  metrics
Sensu Plugins Network Checks
This plugin provides native network instrumentation for monitoring and metrics collection, including: hardware, TCP response, RBLs, whois, port status, and more.
Stars: ✭ 28 (-20%)
Mutual labels:  metrics
Vsphere2metrics
VMware vSphere Performance Metrics Integration with Graphite & InfluxDB
Stars: ✭ 28 (-20%)
Mutual labels:  metrics

Yuvi

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.

Architecture

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.

Sample code for using the library

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);

NOTE

This project is under active development. A dev version of OpenTSDB integration code can be found at: https://github.com/mansu/opentsdb/tree/yuvi-dev

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].