Использование RRDtool без функции консолидации

Я хочу использовать rrdtool в качестве кольцевого буфера, который просто забывает самое старое значение, если поступает новое значение, а RRA заполнен. Это вообще возможно?

Пример:

rrdtool create database.rrd --step 1  DS:data1:GAUGE:5:U:U RRA:<CF>:0.5:1:1200 

Через 20 минут самое старое значение заменяется.

Спасибо и привет,

Питер


person PeterFox    schedule 27.06.2016    source источник


Ответы (1)


Вы можете сделать функцию консолидации нулевой, используя одноэтапный RRA типа AVG, как в вашем примере.

Однако то, что вы не можете сделать, это просто аннулировать временные ряды и нормализацию данных.

Ваши данные должны поступать точно на границу шага, иначе они будут скорректированы, чтобы соответствовать одному, изменяя их значение. В вашем примере используется шаг в 1 с, что делает его намного проще; однако возникает следующая проблема...

RRDTool всегда будет сохранять значение в RRA на каждом консолидированном шаге. Если нет доступных данных, вы получите Неизвестно, или значение будет экстраполировано на основе предыдущих данных. В вашей настройке у вас есть XFF = 0,5, что означает, что вы получите неизвестное, когда данные не были сохранены.

Итак, это возможно, но в RRA ВСЕГДА будет 1200 значений. Если образец не прибыл в течение определенной секунды, то будет сохранено Неизвестное. Образцы будут удалены, как только им исполнится 20 минут, независимо от того, сколько новых образцов было собрано за это время; когда вы запрашиваете RRA, вы получите «неизвестно», если в течение этой секунды ничего не было собрано.

Соответствует ли это поведение требованиям вашего варианта использования или нет, зависит от вас.

person Steve Shipway    schedule 28.06.2016
comment
Хорошо. Поэтому я выбрал: rrdtool create database.rrd --step 1 DS:data1:GAUGE:20:U:U RRA:AVERAGE:0.99:1:1200 с долгим пульсом и большим xff 99%-›не следует хранить неизвестное. Проблема в том, что если я заполню RRD целыми числами, я получу числа с плавающей запятой. Я получил базу данных с помощью: rrdtool fetch database.rrd AVERAGE, и он возвращает 3,8084940000e+00 для 4. Я сделал что-то не так. Похоже, что rrdtool все еще консолидирует значения. Я отправляю данные ровно каждую секунду. Может ли этот rrd вычислять/связывать каждое значение с каждым значением (шаг в ) в rrd, включая nans. Но спасибо ^^ - person PeterFox; 01.07.2016
comment
Большой xff не имеет никакого значения, поскольку ваш RRA содержит только 1pdp=1cdp, поэтому доля неизвестных компонентов обязательно составляет либо 0%, либо 100%. Когда вы отправляете данные, используйте rrdtool update $file.rrd $value:`date +%s`, чтобы вы сохраняли их в целочисленное время, чтобы избежать нормализации данных. - person Steve Shipway; 05.07.2016