System Design Space
Граф знанийНастройки

Обновлено: 2 марта 2026 г. в 19:35

VictoriaMetrics: история и архитектура

mid

Разбор VictoriaMetrics в стиле системного дизайна: история, архитектура по слоям, write/read path и практическая DDL-like/DML-like модель для мониторинга.

Источник

VictoriaMetrics docs

Официальная документация по архитектуре, компонентам и operational-модели VictoriaMetrics.

Перейти на сайт

VictoriaMetrics — высокопроизводительная TSDB, ориентированная на экономичное хранение метрик и масштабируемый observability-контур. В практической TSDB-карте VictoriaMetrics часто рассматривают рядом с Prometheus как backend для long retention и high-cardinality профиля.

История: ключевые вехи

2018

Публичный запуск проекта

VictoriaMetrics выходит в open source как специализированная TSDB для эффективного хранения метрик.

2019

Фокус на performance и плотность хранения

Проект закрепляется как low-resource альтернатива для Prometheus-совместимых сценариев.

2020

Стабилизация cluster-профиля

Укрепляется архитектура vmselect/vminsert/vmstorage для горизонтального масштабирования.

2021

Рост экосистемы компонентов

Расширяется практическое использование vmagent, vmalert и multi-tenant паттернов.

2023

Массовые production-паттерны

Становятся типовыми миграции из Prometheus-контуров в VictoriaMetrics для long retention.

2024+

Эволюция observability-стека

Укрепляются практики cluster deployment, cost-оптимизации и интеграции в enterprise мониторинг.

Специфика VictoriaMetrics

Prometheus-совместимый интерфейс

Поддержка Prometheus API и remote_write/read упрощает интеграцию в существующий мониторинг-контур.

Эффективное хранение метрик

Оптимизации хранения и merge-процессы позволяют держать большие retention-периоды с меньшими ресурсами.

Cluster-архитектура

Разделение на vmagent/vminsert/vmstorage/vmselect дает ясный write/read path и scale-out профиль.

Rule-driven мониторинг

vmalert и интеграция с Alertmanager формируют управляемый контур recording/alerting rules.

Архитектура VictoriaMetrics по слоям

На high-level уровне pipeline можно читать так: ingest -> write routing -> storage parts/merge -> query fan-out -> rules/alerts -> внешние интеграции.

Ingestion слой
vmagentPrometheus scraperemote_write ingestRelabeling
Переход между слоями
Write routing
vminsertShard routingTenant routingReplication fan-out
Переход между слоями
Storage слой
vmstorageCompressed partsBackground mergeRetention cleanup
Переход между слоями
Query execution
vmselectFan-out readsDeduplicationMetricsQL/PromQL
Переход между слоями
Rules и alerting
vmalertRecording rulesAlerting rulesAlertmanager
Переход между слоями
Интеграции и эксплуатация
Single-node/clusterGrafanavmauthBackup/restore

Ключевые особенности

VictoriaMetrics оптимизирована под экономичное хранение метрик, Prometheus-совместимые API и масштабирование от single-node к cluster deployment.

Сжатие и хранение

Высокая плотность храненияMerge of partsLong retention profile

Prometheus-совместимость

PromQL-compatible APIremote_write/readЭкспорт в Grafana

Масштабирование

Cluster modeTenant isolationГоризонтальный scale-out

DDL vs DML: модель для VictoriaMetrics

Как и у большинства TSDB, в VictoriaMetrics нет классического SQL-DDL/DML. Для системного анализа полезно разделять DDL-like операции (изменение topology/configuration) и DML-like операции (движение samples и query read path).

Как работает модель DDL/DML в VictoriaMetrics

DDL-like: обновление topology/config. DML-like: движение samples и query read path.

Интерактивный прогонШаг 1/5

1. Ingest samples

Samples + queries

vmagent или remote_write отправляет новые метрики в write endpoint.

2. Parse and relabel

Samples + queries

Сэмплы парсятся, обогащаются labels и подготавливаются к маршрутизации.

3. vminsert shard routing

Samples + queries

vminsert распределяет поток по vmstorage узлам по hash/tenant policy.

4. vmstorage append + merge

Samples + queries

vmstorage пишет точки в локальные части и фоново объединяет их для чтения.

5. vmselect read path

Samples + queries

vmselect fan-out читает shards, делает dedup/aggregation и возвращает результат.

Активный шаг

1. Ingest samples

vmagent или remote_write отправляет новые метрики в write endpoint.

Поток данных и запросов

  • DML-like путь покрывает ingestion, хранение, compaction и query execution.
  • В cluster mode write/read path масштабируется горизонтально по shard-узлам.
  • Кардинальность labels и skew по tenant-ам определяют latency и стоимость системы.

Источник

Prometheus docs

Сравнительный контекст для Prometheus-совместимого observability стека.

Перейти на сайт

VictoriaMetrics vs Prometheus

Базовый контур

VictoriaMetrics: Сильный акцент на экономичное хранение, масштабируемый write/read path и Prometheus-совместимость.

Prometheus: Канонический мониторинг-стек с pull-моделью, PromQL и встроенным TSDB для оперативного контура.

Язык и запросы

VictoriaMetrics: Поддержка PromQL-совместимых запросов и расширений MetricsQL для production-аналитики.

Prometheus: PromQL как базовый язык time-series анализа с фокусом на alert-driven сценарии.

Масштабирование

VictoriaMetrics: Cluster mode (vminsert/vmstorage/vmselect) для больших объёмов и long-term retention.

Prometheus: Чаще single-node + federation/remote storage для масштабирования и длительного хранения.

Операционная модель

VictoriaMetrics: Часто используется как consolidated metrics backend в больших observability-платформах.

Prometheus: Часто выступает как primary scrape/rule engine с интеграцией внешнего long-term хранилища.

Почему VictoriaMetrics часто выбирают в production

Практическая интерпретация для system design контекста:

  • VictoriaMetrics часто выбирают за высокую эффективность хранения и предсказуемую стоимость long retention.
  • Prometheus-совместимость снижает цену миграции и позволяет переиспользовать существующие дашборды и алерты.
  • Явный write/read path через vmagent/vminsert/vmstorage/vmselect хорошо масштабируется по shard-модели.
  • Гибкий выбор между single-node и cluster профилем упрощает рост от небольшой инсталляции к large-scale deployment.

References

Связанные главы

Чтобы отмечать прохождение, включи трекинг в Настройки

System Design Space

© 2026 Александр Поломодов