#rrdtool #rrd
#rrdtool #rrd
Вопрос:
Я создал файл 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:
(Мой пример ниже протестирован с RRDTool 1.5.5)
Ваш RRA длится примерно 1 год с интервалами в 10 минут; с настройкой RRD на 15 секунд.
Когда вы создаете 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 шагов, ТО есть 600 секунд. Следующая запись не может быть добавлена, пока не будет 600 с данных, а у нас есть только 542. Таким образом, последняя запись в RRA выглядит так, как показано. Обратите внимание, что все интервалы нормализованы относительно UCT, и поэтому ваш RRA cdp (точки данных с консольным распределением) всегда будет кратен размеру интервала — в данном случае 600 — независимо от того, когда вы установили значение ‘start’ равным. RRDTool просто выберет ближайший. Это поведение становится намного более очевидным, когда вы переходите к большому периоду времени — например, 1 день — и живете в более экстремальном часовом поясе — например, в Окленде с UCT 13.
Конечно, как только вы запишете что-либо в RRD, lastupdate изменится, и RRA добавит столько новых точек, сколько потребуется (и, конечно, удалит старые).
Комментарии:
1. @wanncy — не забудьте отметить правильный ответ и проголосовать, если это полезно.