VictoriaMetrics

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 17:29, 26 июня 2020.

VictoriaMetrics - проект для долгосрочного хранения метрик Prometheus, InfluxDB, OpenTSDB, Graphite[Источник 1].

VictoriaMetrics
1 5kiWRga1qH9GACIS DLUdQ.png
Разработчики: VictoriaMetrics
Постоянный выпуск: 1.37.3 / 26.06.2020 [Источник 2]
Состояние разработки: Обновляется
Написана на: Go
Платформа: кросс-платформенный
Лицензия: Apache-2.0
Веб-сайт victoriametrics.com

Назначение

Сначала необходимо понять, что такое Prometheus. Prometheus — это база данных временных рядов. Это система мониторинга, которая собирает метрики с заданных целей и сохраняет их в локальное хранилище. Prometheus умеет записывать метрики в удаленное хранилище, умеет генерировать alert'ы и recording rules. Prometheus мониторит самые разные системы: серверы, базы данных, отдельные виртуальные машины. Однако у Prometheus есть ряд проблем:

  • У него нет global query view. Это когда у вас есть несколько независимых экземпляров Prometheus. Они собирают метрики. И вы хотите сделать запрос поверх всех этих метрик, собранных с разных экземпляров prometheus. Prometheus это не позволяет.
  • У prometheus производительность ограничена только одним сервером. Prometheus автоматически не может масштабироваться на несколько серверов. Вы только можете вручную разделить ваши target'ы между несколькими Prometheus'ами.
  • Объем метрик в Prometheus ограничен только одним сервером по той же причине, по которой он автоматически не может автоматически масштабироваться на несколько серверов.
  • В Prometheus непросто организовать сохранность данных.

Для решения этих проблем при использовании Prometheus и используется VictoriaMetrics.

Кластерная версия

VictoriaMetrics - это быстрая, экономичная и масштабируемая база данных временных рядов. Его можно использовать в качестве долгосрочного удаленного хранилища для хранения метрик Prometheus, InfluxDB, OpenTSDB, Graphite. У VictoriaMetrics есть две версии - одноузловая и кластерная[Источник 3]. Рекомендуется использовать версию с одним узлом вместо версии кластера для скорости загрузки менее миллиона точек данных в секунду. Версия с одним узлом прекрасно масштабируется в зависимости от количества ядер ЦП, ОЗУ и доступного дискового пространства. Версия с одним узлом проще в настройке и эксплуатации по сравнению с версией кластера, поэтому разработчик советует подумать дважды, прежде чем придерживаться версии кластера.

Архитектура и особенности кластерной версии:

  • VM storage-хранит данные
  • VM insert-проксирует полученные данные в сегменты хранилища виртуальных машин с помощью последовательного хэширования
  • VM select-выполняет входящие запросы с использованием данных из хранилища виртуальной машины

Каждая служба может масштабироваться независимо и работать на наиболее подходящем оборудовании. узлы хранения виртуальных машин не знают друг о друге, не взаимодействуют друг с другом и не обмениваются никакими данными. Это общая архитектура. Это повышает доступность кластера, упрощает его обслуживание и масштабирование.

Преимущества и особенности VictoriaMetrics:

  • Простота эксплуатации. DBMS представляет из себя один исполняемый файл с минимальными настройками, передающимися через командную строку при запуске.
  • Поддержка языка запросов PromQL, используемого в системе мониторинга Prometheus. Поддерживаются подзапросы.
  • Возможность использования в качестве долговременного хранилища данных, подключенного к Prometheus.
  • Наличие режима обратного заполнения для загрузки исторических данных.
  • Высокая производительность и низкое потребление ресурсов по сравнению с конкурирующими системами. В некоторых тестах VictoriaMetrics опережает InfluxDB и TimescaleDB при выполнение операций вставки и выборки данных до 20 раз.
  • Имеется возможность обработки очень большого числа уникальных временных рядов. При обработке миллионов разных временных рядов VictoriaMetrics потребляет до 10 раз меньше ОЗУ, чем InfluxDB.
  • Высокая степень сжатия данных в дисковом хранилище. VictoriaMetrics по сравнению с TimescaleDB может уместить в том же объёме хранилища до 70 раз больше записей. Сравнение использования дискового пространства Victoriametrics и конкурентами приведено на Рисунке 1, а сравнение количества записей, хранимых Victoriametrics и конкурентами на диске с объёмом памяти 2 терабайта на Рисунке 2.
  • Наличие оптимизаций для хранилищ с большими задержками и низкой интенсивностью операций ввода/вывода (например, жёсткие диски и облачные хранилища).
  • Простая система резервного копирования.
  • Наличие средств для защиты целостности хранилища от повреждений данных, например, при экстренном отключении питания (хранилище имеет форму журнально-структурированного дерева со слиянием).
  • Реализация на языке Go, что обеспечивает компромисс между производительностью и сложностью кода по сравнению с Rust и C++.
  • Поддерживает горизонтальное масштабирование на несколько серверов и демонстрирует низкие накладные расходы.
  • Имеются средства обеспечения высокой доступности.
Рисунок 1 - Сравнение использования дискового пространства Victoriametrics и конкурентами
Рисунок 2 - Сравнение количества записей, хранимых Victoriametrics и конкурентами на диске с объёмом памяти 2 терабайта

Установка и начало использования

Загрузите последнюю версию VictoriaMetrics с официального Github разработчика[Источник 4]. Запустите двоичный файл с нужными флагами командной строки. Минимальные необходимые флаги для настройки:

-storageDataPath - путь к каталогу, где VictoriaMetrics хранит все данные
-retentionPeriod - сохранение данных в месяцах

Например:

./victoria-metrics-prod -storageDataPath = /var/lib/victoria-metrics-data -retentionPeriod = 3 - путь к каталогу, где VictoriaMetrics хранит все данные /var/lib/victoria-metrics-data, срок хранения данных 3 месяца

Публичные примеры внедрения в инфраструктуру

У VictoriaMetrics публичные примеры внедрения ПО в инфраструктуру крупных проектов[Источник 5]:

  • Wix.com- популярный конструктор сайтов
  • Adidas - крупный производитель спортивной одежды и аксессуаров
  • TrafficStars — самообслуживаемая премиальная рекламная сеть
  • Seznam.cz — популярный чешский поисковик.

Дополнительная информация

Источники

  1. How to import time series data // GitHub. Дата обновления: 26.06.2020 URL: https://github.com/VictoriaMetrics/VictoriaMetrics/blob/master/README.md#how-to-import-time-series-data (дата обращения: 26.06.2020).
  2. Releases // GitHub. Дата обновления: 26.06.2020 URL: https://github.com/VictoriaMetrics/VictoriaMetrics/releases (дата обращения: 26.06.2020).
  3. Cluster version // GitHub. Дата обновления: 26.06.2020 // GitHub. URL: https://github.com/VictoriaMetrics/VictoriaMetrics/tree/cluster (дата обращения: 26.06.2020).
  4. Quick Start // VictoriaMetrics. Дата обновления: 26.06.2020 URL: https://victoriametrics.github.io/Quick-Start.html (дата обращения: 26.06.2020).
  5. Case studies and talks. // VictoriaMetrics. Дата обновления: 26.06.2020 URL: https://victoriametrics.github.io/ (дата обращения: 26.06.2020).