Victoriametrics: Миграция с influxdb на victoriametrics c telegraf, в качестве коллектора

Created on 29 Oct 2019  ·  7Comments  ·  Source: VictoriaMetrics/VictoriaMetrics

Хочу переехать с influxdb на victoriametrics оставив при этом telegraf в качестве коллектора.

Раньше останавливало два фактора:

  • нет готовых дашбордов для графаны
  • не понято как перенести исторические данные

Убил кучу времени на первый пункт и написал скрипт для конвертации дашбордов, благодаря ему сконвертировал топовые дашборды, которые я использую (#61 и #928), чтобы они работали с victoriametrics вместо influxdb.
Остался второй пункт. У вас нет скрипта для переноса данных (можно с даумсемплингом)? Очень не хотелось бы писать его самостоятельно. Если дадите скрипт, то с меня статья на хабре :)
Сейчас приходится писать данные в influxdb и в victoriametrics, хотелось бы полностью перейти на victoriametrics и забыть про influxdb как про страшный сон.

Сконвертированные дашборды для victoriametrics с телеграфом в качестве коллектора:
https://grafana.com/grafana/dashboards/11050
https://grafana.com/grafana/dashboards/11051

question

Most helpful comment

После переноса всех метрик размер базы на диске уменьшился более чем в 2 раза:

>du -hs /var/lib/influxdb/
20G /var/lib/influxdb/
>du -hs /var/lib/victoria-metrics-data/
8,2G /var/lib/victoria-metrics-data/

All 7 comments

Привет @morozovsk!

Я не знаю как скоро мы предложим свою утилиту для миграции и пока такого скрипта нет - см #158
Перенос данных может выглядеть следующим образом:

  • экспортировать данные в line protocol из influxdb
  • написать утилиту, которая могла бы построчно считывать данные и собирать их в батчи
  • собранный батч записывать в VictoriaMetrics по HTTP протоколу
  • при успешной записи батча запоминать самый старый timestamp из батча (возможно сохранять его в файле на диске на случай перезапусков)
  • считать новый батч и повторить вставку

Если перезаливка прерывалась, утилита должно прочитать последний успешно записанный таймстамп и продолжить считывать данные после него.
Если данных много, можно разбить экспортированные данные на несколько файлов и записывать их в несколько потоков.

Перенос данных может выглядеть следующим образом:

Привет, пробовал, проблема возникает на первом шаге:

экспортировать данные в line protocol из influxdb

База в influxdb занимает на диске всего 30gb при этом во время экспорта файл с данными только одной метрики превышал 200gb и конца и края этому не было видно, пришлось остановить процесс. Возможно нужно делать запросы напрямую в influxdb без экспорта (возможно с даунсемплингом), самостоятельно формировать батчи и писать их в victoriametrics.

Вообщем, попробую когда будет свободное время. Спасибо.

@morozovsk, согласно документации, есть возможность "включить" сжатие. Так же поддерживаются -start -end флаги, с помощью которых можно сразу разбить данные на части (например, по дням).

Hi @morozovsk! Pls check the tool for importing data from InfluxDB to VM - https://github.com/VictoriaMetrics/vmctl. Would really appreciate any feedback!

See also #93 (comment).

Спасибо, подправил скрипт под себя, сделал по дням 2017-05-16 по 2019-10-23.
Один день импортируется за 1 минуту и файл экспорта весит около 100Mb.

start=2017-05-16
while [ "$start" != 2019-10-23 ]; do 
  echo $start
  end=$(date -I -d "$start + 1 day")

  influx_inspect export -datadir /var/lib/influxdb/data -waldir /var/lib/influxdb/wal/ -database telegraf -retention autogen -start "${start}T00:00:01+00:00" -end "${end}T00:00:00+00:00" -compress -out export.gz && curl -u telegraf:telegraf -X POST -H 'Content-Encoding: gzip' http://localhost:8428/write?db=telegraf -T export.gz

  start=$(date -I -d "$start + 1 day")
done

После переноса всех метрик размер базы на диске уменьшился более чем в 2 раза:

>du -hs /var/lib/influxdb/
20G /var/lib/influxdb/
>du -hs /var/lib/victoria-metrics-data/
8,2G /var/lib/victoria-metrics-data/

Was this page helpful?
0 / 5 - 0 ratings