Draft:VictoriaMetrics

VictoriaMetrics is a free and open source time series database (TSDB) and monitoring solution. It is designed to collect, store and process real-time metrics. It supports the Prometheus pull model and various push protocols (Graphite, InfluxDB, OpenTSDB) for data ingestion. For reading the data and evaluating alerting rules VictoriaMetrics supports the MetricsQL and Graphite query languages. The project is written in Go and licensed under the Apache 2 License, with its source code available on GitHub.

History
VictoriaMetrics was created by Aliaksandr Valialkin in response to scalability issues with the Prometheus monitoring solution used at his previous place of work. Inspired by the performance and architecture of ClickHouse, a free software analytical database, Aliaksandr decided to implement a storage for efficient processing of time series data. He started working on a project he later named VictoriaMetrics, after his wife.

The initial, proprietary version of VictoriaMetrics was released in September, 2018.

Later, in May 2019, the open source version of VictoriaMetrics was released.

Architecture
VictoriaMetrics is distributed as a single-node or cluster version.


 * Single-node version: a single binary executable capable of scraping metrics, accepting write requests or executing reading queries.
 * Cluster version: extended version of a single node split into three components:
 * vminsert: for processing write requests, data sharding, routing and replication
 * vmselect: for processing read requests, deduplication, caching
 * vmstorage: for storing and processing data on disk

Additional Components
There are additional components in the VictoriaMetrics product ecosystem for various purposes:


 * vmagent: a lightweight application for metrics collection, transformation and forwarding to the storage. Acts as a proxy between clients and VictoriaMetrics
 * vmalert: an application for evaluating alerting and recording rules
 * vmbackup/vmrestore: a set of tools for backup and recovery
 * vmauth: an authentication proxy used for extra protection and routing
 * vmctl: an utility for migrating from other systems such as Prometheus, InfluxDB or OpenTSDB
 * vmanomaly: an anomaly detection service

Limitations

 * No data update support
 * Limited data deletion support
 * Supports only numeric values as time series data point value
 * Does not accept data with timestamps set in the future

Integrations
VictoriaMetrics supports data ingestion via the following protocols:


 * Prometheus remote write protocol
 * Prometheus exposition and OpenMetrics protocol
 * InfluxDB line protocol
 * OpenTSDB Put protocol
 * Graphite plaintext protocol
 * OpenTelemetry
 * DataDog v2 data ingestion protocol
 * NewRelic agent data ingestion

Use Cases

 * Kubernetes and cloud-native monitoring
 * APM (Application Performance Monitoring)
 * IoT sensors, connected cars, industrial telemetry
 * Financial markets data

Usage

 * VictoriaMetrics is used by CERN for real-time monitoring of CMS
 * Grammarly uses VictoriaMetrics for internal monitoring of the infrastructure
 * Percona Monitoring and Management (PMM) solution uses VictoriaMetrics
 * Open Cosmos has integrated VictoriaMetrics into its mission-critical satellite control and data distribution platform
 * Other organizations using VictoriaMetrics include Semrush, Ably, Roblox, Cloudflare, Criteo and more.