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)