Единовременная проблема без данных - PullRequest
0 голосов
/ 30 декабря 2010

Я только начинаю использовать RRDtool для сбора климатических данных. Я не использую функциональность графика, а использую «выборку» для извлечения данных. Затем я использую другое графическое решение (flot) для отображения данных, и это, кажется, работает несколько. Но у меня возникли небольшие проблемы, и я решил проверить детали обновления и загрузки, и вдруг не был уверен, что все работает так, как я ожидал.

Итак, я создал крошечный сценарий оболочки, который создает базу данных, помещает в нее одно значение и затем печатает содержимое:

#!/bin/sh

RRD=test.rrd
STEP=300
HB=600

# Remove previous databse to be sure that
# old data does not affect the test
rm -f $RRD

# Create database
rrdtool create $RRD \
    --start 2999999999 --step $STEP \
    DS:a:GAUGE:$HB:U:U \
    RRA:AVERAGE:0.5:1:1000

# Do a single update
rrdtool update $RRD \
    3000000400:123

# Fetch data and print to stdout
rrdtool fetch $RRD \
    --start 3000000000 --end 3000000900 AVERAGE

Я ожидаю, что это напечатает три (или, может быть, четыре, не уверен насчет последнего) значения, подобные этому:

3000000000: -nan
3000000300: 123
3000000600: -nan
3000000900: -nan

Но вот что я получаю:

3000000300: -nan
3000000600: -nan
3000000900: -nan
3000001200: -nan

Итак, у меня три вопроса:

  1. Почему команда fetch начинается с 300, а не с 0?
  2. Почему команда fetch включает не только последний шаг (900), но и еще один (1200)?
  3. Почему не было принято обновленное значение?

1 Ответ

1 голос
/ 20 января 2011
  • Временной интервал b содержит информацию, действительную для b-шага до b, ИСКЛЮЧАЯ сам b.Следовательно, при запросе данных от 3000000000 до 3000000900 первая полученная вами запись - 3000000300.

  • Поскольку вы запрашиваете данные, заканчивающиеся на 3000000900, вы получаете запись как для 3000001200, так и для 3000000900.это начало этой записи.

  • В настоящий момент даже в режиме манометра вам понадобится известное значение для запуска ... так что ваше первое известное обновление просто вернет вас назадв известное состояние он еще ничего не устанавливает.Можно утверждать, что в режиме GAUGE это можно сделать по-другому.

...