альтернативный инструмент для большого объема - PullRequest
7 голосов
/ 03 марта 2009

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

Из того, что я прочитал на эту тему, rrdtool связан с вводом / выводом, когда вы поражаете его большими объемами данных. Поскольку я предполагаю, что это масштабируется до очень большого количества устройств для мониторинга, мне любопытно, есть ли какая-либо альтернатива, которая не душит ввод / вывод. Предпочтительно на основе SQL, но не обязательно.

Спасибо

Ответы [ 4 ]

5 голосов
/ 25 августа 2011

Существуют базы данных временных рядов, которые имеют высокую доступность и / или масштабируемость в качестве целей.

Может быть, посмотрите на

  • rrdcached , слой кэширования поверх rrd
  • шепот , ядро ​​базы данных позади графит
  • opentsdb - это распределенная масштабируемая база данных временных рядов (TSDB), написанная поверх HBase
  • разведчик хотя основное внимание уделяется мониторингу
4 голосов
/ 04 февраля 2010

Если производительность ввода / вывода является основной проблемой, то вам нужно рассмотреть что-то вроде rrdcached , которое доступно в текущей версии (1.4) RRDTools.

Затраты на ввод / вывод не являются функцией записываемых данных, после каждого значения 8 байтов на источник данных. Пропускная способность ввода / вывода определяется тем, что перед записью необходимо прочитать весь сектор (обычно 4 КБ). Внезапно для записи 8 байтов вы прочитали / записали 8k байтов.

rrdcached объединяет все эти записи вместе, поэтому при обновлении RRD отношение полезных данных (фактических значений DS) к потерянным данным (резервным байтам в секторе) уменьшается.

Все RRDTools будут автоматически работать с rrdcached при обнаружении его запуска (через переменную окружения). Это позволяет им запускать сбросы при необходимости, например, при создании графика из данных.

При переходе на решение на основе SQL может помочь учесть дополнительный ввод / вывод, который потребуется для поддержки SQL. Учитывая, что вы не склонны использовать RRD-данные в такого рода шаблонах произвольного доступа, база данных является кувалдой для решения этой проблемы. Придерживаясь RRDTool, вы сохраните доступ ко всей экосистеме инструментов, которые понимают и могут работать с файлами, что полезно, особенно если вы уже знакомы с ним.

2 голосов
/ 03 марта 2009

Мой друг некоторое время назад работал над бэкэндом SQL для хранения данных циклического перебора: http://rrs.decibel.org

Однако я подозреваю, что, поскольку вы спрашиваете об «устройствах для мониторинга», возможно, вы ищете более полное решение.

1 голос
/ 12 июля 2013

Если ваши операции ввода-вывода в секунду являются вашим главным узким местом, и вы используете Linux, существует простой способ, который стоит только вашей памяти. Используйте монтирование tmpfs для создания записей RRD.

Все операции ввода-вывода будут выполняться в памяти и не повлекут за собой каких-либо узких мест, возникающих при выполнении дискового ввода-вывода (это даже быстрее, чем при использовании твердотельных дисков). Затем вы можете использовать задание cron и rsync для копирования только измененных RRD на диск каждые несколько минут.


Создание каталогов

bash-4.2# mkdir /mnt/rrd-reads
bash-4.2# mkdir /mnt/rrd-writes

Создание файловой системы ОЗУ не более 500 МБ с соответствующими параметрами

bash-4.2# mount -t tmpfs -o size=500m,mode=0750,uid=collectd,gid=collectd none /mnt/rrd-writes
bash-4.2# echo "none /mnt/rrd-writes tmpfs size=500m,mode=0750,uid=collectd,gid=collectd 1 2" >> /etc/fstab

Скопируйте старые файлы RRD в новую точку монтирования

bash-4.2# cp -a /var/lib/collectd/rrd/* /mnt/rrd-writes

Сконфигурируйте ваше приложение для записи rrd для записи в новую точку монтирования

bash-4.2# sed -i -e 's/DataDir "\/var\/lib\/collectd\/rrd"/DataDir "\/mnt\/rrd-writes"/' /etc/collectd/collectd.conf

Настройка задания cron для синхронизации только измененных RRD на диске один раз каждые 2 минуты

bash-4.2# echo "*/2 * * * * collectd rsync -a /mnt/rrd-writes/* /mnt/rrd-reads/ ; sync" > /etc/cron.d/rrd-sync

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

Если в какой-то момент вам нужно изменить размер монтирования tmpfs, вы можете сделать это на лету:

bash-4.2# mount -t tmpfs -o remount,size=850m /mnt/rrd-writes
...