#rrdtool
#rrdtool
Вопрос:
Я обновляю rrdtool
базу данных циклического перебора с интервалом в 1 минуту. Я хочу сохранить среднее значение пяти обновлений как одну запись RRA в rrdtool
RRD. Один из способов сделать это выглядит следующим образом:
$ rrdtool create foo.rrd --start 1000000500 --step 60
> DS:ping:GAUGE:120:0:1000 RRA:AVERAGE:0.5:5:12;
> rrdtool update foo.rrd 1000000560:10 1000000620:20
> 1000000680:30 1000000740:40 1000000800:50
Он накапливает пять значений и сохраняет среднее из них как запись в RRA. Тем не менее, можно было бы достичь того же с помощью этого:
$ rrdtool create bar.rrd --start 1000000500 --step 300
> DS:ping:GAUGE:600:0:1000 RRA:AVERAGE:0.5:1:12;
> rrdtool update bar.rrd 1000000560:10 1000000620:20
> 1000000680:30 1000000740:40 1000000800:50
Как видно выше, step
это 300 секунд, но поскольку RRD PDP принимает значения между интервалами и вычисляет среднее значение, то оба примера сохраняют 30 ( (10 20 30 40 50)/5
) в RRA. Одно отличие, которое я могу сказать, заключается в том, что в первом примере требуется по крайней мере три обновления для сохранения записи в RRA, в то время как во втором примере достаточно одного обновления в течение 300 секунд. шаг. Есть ли какие-либо другие различия?
Ответ №1:
Эти два примера на самом деле не одно и то же, хотя в некоторых обстоятельствах они могут выглядеть одинаково.
В первом случае у вас есть шаг в 60 секунд, и ваш RRA сохраняет среднее значение в 5 PDP в каждом CDP.
Во втором случае у вас есть шаг в 300 секунд, и ваш RRA сохраняет каждый PDP как CDP.
Вот некоторые различия:
- В первом случае вам понадобится по крайней мере одна выборка (PDP) каждые 2 минуты; таким образом, три для покрытия каждого CDP в RRA. Во втором случае вам нужен один образец для каждого CDP.
- В первом случае нормализация данных каждой выборки происходит в течение 60-секундного окна. Во втором случае это происходит в течение 300-секундного окна. Это заставит вещи выглядеть по-другому, когда выборки поступают нерегулярно.
- В первом случае у вас может быть до 120 секунд без данных, прежде чем вы получите неизвестное; во втором — до 600 секунд.
Хотя результат RRA в обоих случаях практически одинаков, выбор будет зависеть от характера ваших входящих данных (как часто вы получаете выборки, насколько они нерегулярны), а также ваших требований к хранению и отображению (если вам нужно сохранить или отобразить более высокую степень детализации). Первый вариант более точен, если у вас частые выборки; второй требует меньшего объема памяти и меньше работы, но может привести к потере некоторых данных, если обновления выполняются чаще, чем step.
Обратите внимание, что, если у вас есть другие типы RRA, а не просто AVG, меньший шаг сделает вычисления более точными.
В общем, я бы рекомендовал вам установить шаг, близкий к ожидаемой средней частоте выборки, с настройкой задержки в зависимости от того, насколько регулярны данные. Настройте консоль RRA в зависимости от того, как вам нужно просматривать данные и как долго вам требуется хранить историю. Создайте RRA, соответствующие обычным сводным данным отображения, чтобы свести к минимуму количество вычислений «на лету».