RRDtools - установка и использование FreeBSD

RRDtools - установка и использование FreeBSD

RRD — это кольцевая база данных. Главная особенность данной БД заключается в том, что она всегда имеет фиксированный размер. То есть когда, будет достигнут конец в каком-нибудь поле в такой БД, то данные будут записываться в самое начало, тем самым, затирая предыдущие. В RRD вместо таблиц, колонок и полей вводятся другие понятия. В ней есть так называемые источники данных (DS), которые сами по себе ничего не хранят. Для простоты их можно интерпретировать как обычные колонки в таблице. Хранение же данных возлагается на кольцевые архивы (RRA). RRA привязывается к источнику данных и обладает такими свойствами как: количество ячеек; применяемая функция консолидации; интервал времени, после которого к данным применяется функция консолидации, и результат ее работы записывается в очередную ячейку. Пожалуй, это все, что требуется знать о структуре данных в RRD.

Установка RRDTools

Используемая система:

uname -v
FreeBSD 9.1-RELEASE #0: Mon Jan 14 22:10:38 KRAT 2013     root@f02.24srv.ru:/usr/obj/usr/src/sys/GEN140113

Используемая версия порта:

rrdtool-1.4.7_2     Round Robin Database Tools

Обновляем порты:

portsnap fetch  && portsnap update

Если порты ранее не обновлялись — то рекомендуется запустить так:

portsnap fetch && portsnap extract && portsnap update

Конфигурируем, устанавливаем порт:

cd /usr/ports/databases/rrdtool
make config
make install clean

Параметры сборки я оставил как есть. Единственное замечание — если вы хотите подписывать графики русскими буквами, то необходимо поставить галочку на опцию DEJAVU, иначе у вас вместо русских букв будут кракозябры. К небольшому сожалению порт тянет за собой не мало зависимостей, например библиотеки glib, cairo, x11. После установки порта будет установлен необходимый для работы набор утилит.

О работе с пакетом

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

rrdtool [options] command command_options

Далее я опишу некоторые команды (за более подробной информацией обращайтесь в документацию):

Создание кольцевой базы данных

rrdtool create filename [--start|-b start time]
[--step|-s step]
[--no-overwrite|-O]
[DS:ds-name:DST:dst arguments]
[RRA:CF:cf arguments]

Описание параметров:

  • filename — имя файла.
  • —start, -b — время в секундах, прошедших с начала эпохи Unix (1970-01-01 UTC), с которого происходит сбор статистики. RRDtool не будет принимать данные старее указанного здесь времени. По умолчанию: now — 10 секунд.
  • —step, -s — интервал, через который данные поступают в базу. По умолчанию: 300 секунд.
  • —no-overwrite, -O — не перезаписывать существующий файл с таким же именем.
  • DS:ds-name:DST:dst arguments — источник данных или проще — колонка в БД, в которой хранятся данные.
    • ds-name — имя колонки (не может быть длиннее 19 символов; допустимые символы: [a-zA-Z0-9_]).
    • DST — тип источника данных. Может принимать значения:
      • GAUGE — подходит для данных типа: температуры, загрузки процессора, объема памяти.
      • COUNTER — предназначен для хранения данных с счетчиков, например трафика. Подразумевается, что значение счетчика никогда не уменьшается, за исключением случая его переполнения.
      • DERIVE — счетчик, который может уменьшаться.
      • ABSOLUTE — тоже счетчик, только он сбрасывается после чтения.
      • COMPUTE — позволяет задать rpn-формулу для обработки данных.
    • heartbeat — максимальное кол-во секунд ожидания данных для ячейки, после которого значение помечается как UNKNOWN. Рекомендуется устанавливать в 2*step.
    • min — минимально допустимое значение. Если ограничений нет, то указывайте здесь U.
    • max — максимально допустимое значение. Если ограничений нет, то указывайте здесь U.
  • RRA:CF:xff:steps:rows — параметры кольцевых архивов (RRA). Каждый такой архив может содержать некоторые значения или статистику для DS за определенный период. Прежде чем попасть в архив, данные обрабатываются функцией консолидации (CF). Доступны следующие функции консолидации:xff — определяет долю неопределённых значений в интервале консолидации, при которой консолидированное значение ещё считается определённым (0..1).steps — определяет количество значений, для которых будет использована функция консолидации, после чего результат ее работы записывается в архив.
    rows — количество ячеек, используемое для хранения консолидированных данных.
    • AVERAGE — среднее значение за определенный период
    • MIN — минимальное значение
    • MAX — максимальное значение
    • LAST — последнее значение

Занесение данных в базу

rrdtool update filename
[--template|-t ds-name:ds-name:...]
[--daemon]
time|N:value[:value...]
at-time@value[:value...]
[ time:value[:value...] ..]

Описание параметров:

  • filename — имя файла.
  • —template, -t — с помощью этой опции задается шаблон, который позволяет вам указать в какие источники данных и в каком порядке необходимо произвести запись в базу. Если указанных здесь источников данных нет в файле, то запись будет отменена и прога выкинет ошибку.
  • —daemon — если задан, то rrdtool будет пытать подключиться к демону rrdcached. Если попытка будет неудачной, то выдается сообщение об ошибке.
  • time|N:value[:value…] — данные, связанные со временем, которые пишутся в базу. Если во времени указать N, то будет подставлено текущее время. Время так же можно задавать в секундах с начала эпохи Unix или в стиле AT (за подробностями в документацию).

Получение данных из базы

rrdtool fetch filename.rrd CF
[-r|--resolution resolution]
[-s|--start start] [-e|--end end]
[--daemon]

Описание параметров:

  • filename — имя файла.
  • CF — функция консолидации применяемая к данным, которые вы хотите получить.
  • -r, —resolution — требуемый интервал значений.
  • -s, —start — время, с которого выводить данные. По умолчанию: end-1day.
  • -e, —end — время, до которого выводить данные. По умолчанию: now.
  • —daemon — адрес демона rrdcached.

Получение информации о структуре базы данных в удобном формате

rrdtool info filename.rrd

Изменение размера RRA

rrdtool resize filename rranum GROW|SHRINK rows
  • filename — имя файла.
  • rranum — номер RRA. Номер можно узнать с помощью команды rrdtool info.
  • GROW|SHRINK — действие к RRA: увеличить/уменьшить.
  • rows — количество добавляемых/удаляемых ячеек.

Изменение некоторых характеристик базы данных

rrdtool tune filename [options]

С помощью данной команды можно изменить характеристики базы или отдельно взятого DS (например, переименовать его). За информацией обращайтесь в документацию.

Рисование графиков

rrdtool graph filename [options]

Вот описание некоторых опций (за полным списком обращайтесь в документацию):

  • filename — имя графического файла.
  • -s, —start seconds — время, с которого начать строить график. По умолчанию: end — 1 день.
  • -e, —end seconds — время, до которого строить график. По умолчанию: now.
  • -o, —logarithmic — логарифмическое масштабирование оси ординат.
  • -z, —lazy — генерировать новый графический файл, если предыдущий устарел или его не существует.
  • -g, —no-legend — не выводить описания графиков.
  • —legend-position=(north|south|west|east) — позиция для вывода описания графиков. По умолчанию: south.
  • —legend-direction=(topdown|bottomup) — выводить описание графиков по вертикали, с указанным здесь направлением.
  • —daemon — адрес демона rrdcached.
  • -j, —only-graph — вывести только график, без какого-либо текста.
  • -T, —tabwidth width — ширина табуляции в пикселях. По умолчанию: 40.
  • -E, —slope-mode — может немного улучшить внешний вид картинки.
  • -a, —imgformat PNG|SVG|EPS|PDF — формат графического файла.
  • -t, —title string — заголовок, помещаемый вверху графика.
  • -v, —vertical-label — вертикальный текст, слева от графика.
  • -w, —width — длина картинки в пикселях. По умолчанию: 400.
  • -h, —height — высота картинки в пикселях. По умолчанию: 100.
  • DEF:vname=rrd:ds-name:CF — данный параметр позволяет выдернуть данные из определенного источника данных (а точнее из кольцевого архива, связанного с ним) в базе и использовать эти данные для построения графика.
    • vname=rrd — vname — имя переменной, через которую можно обращаться к данным, а rrd — путь до базы данных.
    • ds-name — имя источника данных в БД.
    • CF — функция консолидации, чтобы тулза знала из какого RRA выдергивать данные.
  • CDEF:vname=rpn-expression — позволяет задать новую переменную, которая будет содержать результат математического выражения, записанного в обратной польской нотации.
  • VDEF:vdefname=rpn-expression — позволяет задать переменную, которая будет содержать результат применяемой функции к данным. Функции могут быть такими: AVERAGE, MAXIMUM, MINIMUM, LAST.
  • PRINT:vdefname:format — выводит строку в раздел описания графика(ов). Как правильно оформить поле format смотрите в документации.
  • GPRINT:vdefname:format — работает так же, как и PRINT.
  • COMMENT:text — выводит обычный текст.
  • TEXTALIGN:{left|right|justified|center} — выравнивание текста в разделе описания графиков.
  • LINE[width]:vname[#rrggbb[aa][:[legend][:STACK]]] — рисует линию графика, определенной толщины (width) и для определенной переменной (vname). Можно задать цвет и описание (которое будет выводится в разделе описания графиков). Ключевое слово STACK значит, что данная линия будет рисоваться над предыдущей LINE или AREA.
  • AREA:vname[#rrggbb[aa][:[legend][:STACK]]] — данная опция аналогична LINE, только все параметры задаются для внутренней области графика (то есть для того, что под LINE)

Части статей взяты тут и тут

Примеры использования

RRDTools мониторинг температуры процессора
Тут вкратце опишу как сделать графики мониторинга температуры процессора с помощью RRDTools. 1. Если не установлен пакет RRDTools — читаем здесь. 2. Все используемые скрипты приложены к данному посту. 3. Инструкция короткая, как записка, просто на память. Используемая система uname -v FreeBSD 9.1-RELEASE #0: Mon Jan 14 22:10:38
RRDTools мониторинг загрузки процессора
Тут вкратце опишу как сделать графики мониторинга загрузки процессора с помощью RRDTools. 1. Если не установлен пакет RRDTools – читаем здесь. 2. Все используемые скрипты приложены к данному посту. 3. Инструкция короткая, как записка, просто на память. Используемая система uname -v FreeBSD 9.1-RELEASE #0: Mon Jan 14 22:10:38