// Engineering Log
Мониторинг: Часть 5 — VictoriaMetrics
Опубликовано 22.09.2026
// Быстрый маршрут
Эта статья относится к теме Деплой и стабильная работа.
VictoriaMetrics — база данных временных рядов, совместимая с Prometheus. Её используют как долговременное хранилище метрик для Prometheus или целиком вместо него — вместе со сборщиком vmagent и модулем оповещений vmalert. Основная редакция распространяется под лицензией Apache 2.0; часть возможностей (например, понижение детализации старых данных и разные сроки хранения для разных наборов данных) доступна только в платной редакции Enterprise.
Зачем она нужна
Prometheus хранит данные на локальном диске одного сервера, по умолчанию 15 дней. Когда нужно хранить метрики год, собирать данные с нескольких Prometheus в одном месте или экономить диск, появляется отдельное хранилище. VictoriaMetrics принимает данные по протоколу remote write, отвечает на запросы через тот же HTTP API, что и Prometheus, поэтому Grafana подключает её как обычный источник типа Prometheus без переделки панелей.
Редакции и режимы работы
- Single-node — один исполняемый файл, который принимает, хранит и отдаёт данные. Подходит для большинства небольших и средних установок и проще всего в обслуживании.
- Кластер — отдельные компоненты
vminsert(приём),vmstorage(хранение) иvmselect(запросы). Масштабируется горизонтально, поддерживает несколько арендаторов на одной установке.
MetricsQL
Язык запросов VictoriaMetrics называется MetricsQL. Он обратно совместим с PromQL: панели Grafana, построенные для Prometheus, работают без изменений. Сверх этого MetricsQL умеет:
- не указывать окно в квадратных скобках —
rate(node_network_receive_bytes_total)подберёт его сам по шагу запроса и интервалу сбора; - выносить повторяющиеся части запроса в шаблоны
WITH (...); - использовать дополнительные функции:
range_median,range_linear_regression,range_trim_outliersи другие.
Стек без Prometheus: vmagent, VictoriaMetrics и vmalert
Схема, в которой все компоненты — от VictoriaMetrics:
- vmagent на сервере сбора читает привычный
prometheus.yml(разделыglobalиscrape_configs), опрашивает цели и отправляет данные в хранилище. Если хранилище недоступно, он складывает данные в буфер на диске и досылает после восстановления связи. - VictoriaMetrics single-node хранит данные и отвечает на запросы на порту 8428.
- vmalert выполняет правила оповещений и правила записи в формате Prometheus и отправляет сработавшие оповещения в Alertmanager.
- Grafana подключается к VictoriaMetrics как к источнику Prometheus.
Пример запуска компонентов на одном сервере:
# хранилище: данные в /var/lib/victoria-metrics, хранить 12 месяцев
victoria-metrics -storageDataPath=/var/lib/victoria-metrics -retentionPeriod=12
# сборщик: цели из prometheus.yml, отправка в хранилище
vmagent -promscrape.config=/etc/vmagent/prometheus.yml \
-remoteWrite.url=http://localhost:8428/api/v1/write
# оповещения: правила в формате Prometheus, уведомления через Alertmanager
vmalert -rule='/etc/vmalert/rules/*.yml' \
-datasource.url=http://localhost:8428 \
-notifier.url=http://localhost:9093 \
-remoteWrite.url=http://localhost:8428 \
-remoteRead.url=http://localhost:8428Параметр -retentionPeriod задаёт срок хранения; число без суффикса означает месяцы, по умолчанию хранится один месяц. Можно указывать и другие единицы, например -retentionPeriod=90d. Флаги -remoteWrite.url и -remoteRead.url у vmalert нужны, чтобы сохранять состояние оповещений и результаты правил записи; для одних только оповещений достаточно -datasource.url и -notifier.url.
Шаблон пути в -rule берут в кавычки, иначе оболочка сама раскроет его в список файлов. Правила оповещений из Prometheus переносятся без изменений: vmalert понимает тот же формат файлов.
Если Prometheus уже работает
Переходить целиком не обязательно. В prometheus.yml добавляют отправку копии данных:
remote_write:
- url: http://192.0.2.30:8428/api/v1/writePrometheus продолжает работать как прежде, а в VictoriaMetrics накапливается долгая история. Срок локального хранения в Prometheus после этого можно сократить.
Достоинства
- Экономия диска и памяти. Разработчики и многие пользователи отмечают, что тот же объём метрик занимает заметно меньше места, чем в Prometheus; точный выигрыш зависит от данных, его стоит проверить на своих метриках.
- Простота single-node. Один процесс, один каталог с данными, резервное копирование через снимки (
/snapshot/create) и утилитуvmbackup. - Совместимость. Экспортеры, панели Grafana и правила Prometheus работают без изменений.
- Приём данных в разных форматах: remote write Prometheus, InfluxDB line protocol, Graphite, OpenTSDB.
Недостатки
- Отдельные компоненты. VictoriaMetrics — хранилище; сбор, оповещения и визуализация — это vmagent, vmalert, Alertmanager и Grafana, каждый со своей конфигурацией.
- Часть функций только в Enterprise. Прежде чем строить схему, стоит сверить нужные возможности со списком Enterprise-функций в документации.
- Небольшие расхождения с PromQL. Совместимость обратная, но отдельные функции ведут себя иначе; сложные запросы при переносе стоит проверить.
Типичные ошибки
- Не задан срок хранения. По умолчанию данные хранятся месяц, и при переходе с «хранилища для долгой истории» это становится неприятной неожиданностью.
- Порт 8428 открыт наружу. API хранилища позволяет и читать, и записывать, и удалять данные. Доступ ограничивают сетью или обратным прокси с авторизацией.
- Буфер vmagent на маленьком диске. При долгой недоступности хранилища буфер заполняет диск сервера сбора; его размер ограничивают параметром
-remoteWrite.maxDiskUsagePerURL. - Высокая кардинальность. Как и в Prometheus, уникальные значения в метках быстро увеличивают число рядов и потребление ресурсов.
// Похожая задача
Если у вас похожая ситуация
Эта статья относится к одной из рабочих тем. Можно продолжить чтение по теме, перейти на главную, чтобы понять, чем я занимаюсь, или сразу открыть услуги.
Тема статьи
Деплой и стабильная работа
Docker, CI/CD, релизы, мониторинг, observability и разбор инцидентов.
Часто с этим приходят
- Настроить деплой без ручных действий и хаоса
- Подключить мониторинг, алерты и базовую observability
- Разобрать инциденты и стабилизировать production
// Следующий шаг
Если вам нужна не только статья, а помощь по этой теме, удобнее сразу перейти в услугу. Главная и подборка материалов остаются рядом.
Открыть услуги// Contact
Нужна помощь?
Свяжись со мной и я помогу решить проблему
Написать в TelegramОтвечаю в течение рабочего дня (03:00–13:00 GMT)
Или оставьте заявку здесь:
// Related