Диаграммы временных рядов для больших объемов данных - PullRequest
0 голосов
/ 29 июня 2018

У меня есть пара тысяч временных рядов, охватывающих несколько лет со второй гранулярностью. Я хотел бы хранить данные в подходящей БД (то есть той, которая хорошо масштабируется и может сохранять все данные с исходной гранулярностью, например, Druid, openTSDB или аналогичные). Цель состоит в том, чтобы иметь возможность просматривать данные в браузере (например, путем ввода временного интервала и в идеале иметь функцию масштабирования / панорамирования).

Чтобы ограничить количество точек данных, которые должен обрабатывать мой веб-сервер, я хотел бы иметь функциональность, которая, кажется, работает из коробки для Graphite / Grafana (что, если я правильно понимаю, не является хорошим выбором в течение длительного времени срок хранения данных): диаграмма временных рядов в Grafana будет ограничивать данные путем запроса агрегации из графита (например, возвращать среднее значение более 30 м при масштабировании при отображении всех данных при увеличении).

Теперь вопросы:

  • Существуют ли инструменты визуализации для БД временных рядов, которые предоставляют эту функциональность?
  • Существуют ли существующие схемы построения диаграмм, которые позволяют мне настраивать данные для каждого уровня масштабирования?

Также приветствуются отзывы о выборе БД (предпочтительно с открытым исходным кодом).

Ответы [ 2 ]

0 голосов
/ 30 июня 2018

База данных временных рядов Axibase (ATSD) предоставляет встроенную библиотеку диаграмм, которая выполняет агрегацию периодов на лету в зависимости от интервала дат, отображаемого в браузере. Это контролируется настройкой period = auto, которую вы можете переопределить, чтобы задать период явно. Когда пользователь увеличивает или уменьшает масштаб времени, период агрегации корректируется автоматически.

Вот живой пример и скриншот ниже. Кстати, диаграмма «1 год» отображает 2 миллиона выборок, собранных во время запроса на сервере. Агрегаты не кэшируются, что делает реализацию устойчивой к ошибкам записи.

enter image description here

Ссылки:

0 голосов
/ 29 июня 2018

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

Одним из способов решения этой проблемы является использование агрегатора углерода для генерации нескольких выходных рядов с разными интервалами от входных рядов, чтобы вы могли иметь my.metric.raw, my.metric.10min, my.metric.1hr и т. Д. что с углеродной схемой, которая определяет интервал сопоставления и время хранения для каждой серии, поэтому my.metric.raw сохраняется с разрешением в 1 секунду, .1min - через 1 минуту и ​​т. д.

Если вы сделаете это, то в Grafana вы можете использовать переменную шаблона, чтобы выбрать интервал, из которого вы хотите построить график, поэтому вы определите переменную $aggregation с параметрами raw, 10min и т. Д. И напишите свой запросы типа my.metric.$aggregation.

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

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

...