Руководство по переносу данных из Prometheus в VictoriaMetrics с помощью vmctl
Требования к переносу
-
Необходимые пакеты:
- kubectl
- curl
-
Включенный модуль rancher-monitoring
- Включенный модуль victoria-metrics
Алгоритм переноса
- Установка утилиты vmctl
- Создание снимка данных (snapshot) Prometheus из модуля rancher-monitoring
- Загрузка данных в victoria-metrics
Заметка
Пример выполнения алгоритма будет произведен на АРМ Администратора и каждый шаг будет выполняться исключительно с консоли АРМ Администратора.
Для простоты описание будет содержать в себе две активные сессии подключения к АРМ Администратора.
Установка vmctl
vmctl — это удобный инструмент для переноса исторических данных из Prometheus в VictoriaMetrics с использованием снимка данных (snapshot), который входит в пакет vmutils.
Для получения правильной версии проверьте версию вашей инсталяции victoria-metrics
kubectl get deployments vmsingle-victoria-metrics -n monitoring -o jsonpath='{.spec.template.spec.containers[].image}'
Пример вывода:
Установка:
Создание снимка данных Prometheus
-
Для создания снимка потребуется включить Admin API Prometheus:
- Откройте окно редактирования нужного кластера
- В списке аддонов найдите
rancher-monitoringи добавьте в него параметр:prometheus.prometheusSpec.enableAdminAPI=true
-
Сохраните изменения и дождитесь их применения в кластере
Заметка
Для применения изменений prometheus будет перезапущен.
Для выполнения дальнейших инструкций откройте, если еще не сделали, два она терминала(Далее по тексту будет комментарий "Окно 1 или Окно 2")
Дождитесь перезагрузки Prometheus из модуля rancher-monitoring -
Создание снимка данных
- Пробросьте порт prometheus на локальную машину:
-
Отправляем запрос в API Prometheus для создания снимка:
Заметка
При большом объеме данных, выполнение запроса займет некоторое время.
-
Ожидайте завершения.
Пример успешного создания: - Скопируйте снимок на АРМ Администратора
- Получите имя снимка для дальнейших действий
- Отключите проброс обычным прерыванием
Загрузка данных в victoria-metrics
- Пробросьте порт VictoraMetrics на локальную машину:
- Запустите миграцию:
-
Процесс миграции:
vmctlанализирует снимок и выводит статистику: количество блоков данных, временной диапазон, количество метрик и точек данных.Пример вывода:
# Окно 2 Prometheus import mode Prometheus snapshot stats: blocks found: 26; blocks skipped by time filter: 0; min time: 1753617600116 (2025-07-27T15:00:00+03:00); max time: 1753801690147 (2025-07-29T18:08:10+03:00); samples: 2144246801; series: 9249975. Found 26 blocks to import. Continue? [Y/n]- Нажмите
Y(или Enter), чтобы продолжить. Для отмены введитеn.
- Нажмите
-
Результат импорта:
После завершения вы увидите статистику, например:# Окно 2 2025/07/29 19:01:11 Import finished! 2025/07/29 19:01:11 VictoriaMetrics importer stats: idle duration: 2m40.609969986s; time spent while importing: 32m8.548525875s; total samples: 2144246801; samples/s: 1111844.88; total bytes: 42.5 GB; bytes/s: 22.0 MB; import requests: 10714; import requests retries: 0; 2025/07/29 19:01:11 Total time: 32m9.882366375s -
Отключите проброс обычным прерыванием
Фильтрация данных
Вы можете ограничить переносимые данные с помощью фильтров по времени или меткам:
Фильтрация по времени
Используйте флаги для указания временного диапазона:
--prom-filter-time-start: начало периода (например,2023-02-07T00:07:01Z).--prom-filter-time-end: конец периода (например,2025-07-20T00:07:01Z).
Пример команды:
./vmctl-prod prometheus \
--prom-snapshot=prom_snap/${SNAPSHOT_NAME} \
--vm-addr=http://localhost:8429 \
--prom-filter-time-start=2023-02-07T00:07:01Z \
--prom-filter-time-end=2025-07-20T00:07:01Z
Фильтр исключает блоки данных вне указанного диапазона и дополнительно фильтрует временные ряды внутри оставшихся блоков.
Фильтрация по меткам
Фильтрация по меткам позволяет выбрать данные по имени метки или её значению. Используйте флаги:
--prom-filter-label: имя метки, например,__name__(для имени метрики) илиinstance.--prom-filter-label-value: регулярное выражение для фильтрации значений метки (по умолчанию.*— все значения).
Пример команды для переноса метрик, начинающихся с promhttp:
./vmctl-prod prometheus \
--prom-snapshot=prom_snap/${SNAPSHOT_NAME} \
--vm-addr=http://localhost:8429 \
--prom-filter-label="__name__" \
--prom-filter-label-value="promhttp.*" \
--prom-filter-time-start=2023-02-07T00:07:01Z \
--prom-filter-time-end=2025-07-20T00:07:01Z
Настройка производительности
Что влияет на производительность:
- Скорость работы библиотеки Prometheus.
- Скорость чтения с диска (I/O).
- Значение параметра
--prom-concurrency.
Параметр --prom-concurrency:
Задаёт количество одновременно работающих процессов чтения данных. Для лучшей производительности установите значение, равное количеству ядер процессора.
Пример:
Заметка
По умолчанию используется 1 процесс.
Полный список основных флагов
`--prom-snapshot`: Путь к снимку данных Prometheus.
`--prom-concurrency`: Количество одновременных процессов чтения (по умолчанию: 1).
`--prom-filter-time-start`: Начало временного диапазона в формате RFC3339 (например, `2020-01-01T20:07:00Z`).
`--prom-filter-time-end`: Конец временного диапазона в формате RFC3339.
`--prom-filter-label`: Имя метки для фильтрации (например, `__name__`).
`--prom-filter-label-value`: Регулярное выражение для фильтрации значений метки (по умолчанию: `.*`).

