Как создать rrd файл с определенным временем? - PullRequest
0 голосов
/ 01 апреля 2019

Я создал rrd файл с определенным временем. Но когда я конвертирую его в xml, я обнаружил, что время начала не соответствует указанному времени.

Версия rrdtool - 1.5.5.

И код

> rrdtool create abc.rrd \ 
> step 15 --start 1554122342 \  DS:sum:GAUGE:120:U:U \  RRA:AVERAGE:0.5:1:5856 \  RRA:AVERAGE:0.5:4:20160 \ 
> RRA:AVERAGE:0.5:40:52704

Первые несколько строк похожи на

> <!-- 2019-03-31 20:15:15 CST / 1554034515 --> <row><v>NaN</v></row>
>           <!-- 2019-03-31 20:15:30 CST / 1554034530 --> <row><v>NaN</v></row>
>           <!-- 2019-03-31 20:15:45 CST / 1554034545 --> <row><v>NaN</v></row>
>           <!-- 2019-03-31 20:16:00 CST / 1554034560 --> <row><v>NaN</v></row>
>           <!-- 2019-03-31 20:16:15 CST / 1554034575 --> <row><v>NaN</v></row>
>           <!-- 2019-03-31 20:16:30 CST / 1554034590 --> <row><v>NaN</v></row>
>           <!-- 2019-03-31 20:16:45 CST / 1554034605 --> <row><v>NaN</v></row>
>           <!-- 2019-03-31 20:17:00 CST / 1554034620 --> <row><v>NaN</v></row>
>           <!-- 2019-03-31 20:17:15 CST / 1554034635 --> <row><v>NaN</v></row>
>           <!-- 2019-03-31 20:17:30 CST / 1554034650 --> <row><v>NaN</v></row>
>           <!-- 2019-03-31 20:17:45 CST / 1554034665 --> <row><v>NaN</v></row>
>           <!-- 2019-03-31 20:18:00 CST / 1554034680 --> <row><v>NaN</v></row>
>           <!-- 2019-03-31 20:18:15 CST / 1554034695 --> <row><v>NaN</v></row>
>           <!-- 2019-03-31 20:18:30 CST / 1554034710 --> <row><v>NaN</v></row>
>           <!-- 2019-03-31 20:18:45 CST / 1554034725 --> <row><v>NaN</v></row>
>           <!-- 2019-03-31 20:19:00 CST / 1554034740 --> <row><v>NaN</v></row>
>           <!-- 2019-03-31 20:19:15 CST / 1554034755 --> <row><v>NaN</v></row>

Я пробовал другие параметры, такие как значения по умолчанию (сейчас-10 с), но интервал составляет около одного дня.

1 Ответ

0 голосов
/ 02 апреля 2019

(Мой пример ниже протестирован с RRDTool 1.5.5)

Ваш RRA составляет приблизительно 1 год с интервалом в 10 минут; с 15-ю настройками RRD.

Когда вы создаете RRD, время start - это время самой последней точки данных или последнего обновления; Другими словами, вы не можете добавлять какие-либо данные за некоторое время до этого. RRA будет инициализироваться с unknown на всем протяжении.

Итак, когда вы создаете свой RRD с:

rrdtool create abc.rrd --step 15 --start 1554122342  \
    DS:sum:GAUGE:120:U:U RRA:AVERAGE:0.5:40:52704`

Вы можете увидеть это, используя rrdtool info (вывод обрезан для ясности):

$ rrdtool info abc.rrd 
filename = "abc.rrd"
...
last_update = 1554122342

Когда вы затем используете rrdtool dump для немедленного просмотра содержимого RRA, вы можете видеть, что он начинается примерно на год раньше:

$ rrdtool dump abc.rrd
...
<lastupdate>1554122342</lastupdate> <!-- 2019-04-02 01:39:02 NZDT -->
...
    <database>
        <!-- 2018-04-01 01:40:00 NZDT / 1522500000 --> <row><v>NaN</v></row>
        <!-- 2018-04-01 01:50:00 NZDT / 1522500600 --> <row><v>NaN</v></row>
...
        <!-- 2019-04-02 01:20:00 NZDT / 1554121200 --> <row><v>NaN</v></row>
        <!-- 2019-04-02 01:30:00 NZDT / 1554121800 --> <row><v>NaN</v></row>
    </database>

Но подожди минутку! Это заканчивается 1554121800, но наше последнее обновление (время начала) было 1554122342! Это разница 542. Почему это будет?

Причина в том, что, хотя ваш шаг составляет 15 с, интервал RRA составляет 40 шагов, то есть IE 600 с. Следующая запись не может быть добавлена ​​до тех пор, пока не будет 600 данных, а у нас только 542. Поэтому последняя запись в RRA выглядит так, как показано. Обратите внимание, что все интервалы нормализованы относительно UCT, и поэтому ваш RRA cdp (объединенные точки данных) всегда будет кратным размеру интервала - в данном случае 600 - независимо от того, когда вы установили «start». RRDTool просто выберет ближайший. Такое поведение становится намного более очевидным, когда вы переходите на большой период времени, например 1 день - и вы живете в более экстремальном часовом поясе - например, Окленд с UCT + 13.

Конечно, как только вы что-то напишите в RRD, lastupdate изменится, и RRA добавит, сколько потребуется новых точек (и, конечно, отбросит старые).

...