Различия в использовании rrdtool RRD PDP или функции консолидации RRA для вычисления среднего значения?

#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, соответствующие обычным сводным данным отображения, чтобы свести к минимуму количество вычислений «на лету».