Назад | Перейти на главную страницу

Использование MAXNAN для объединения нескольких баз данных rrd

У меня есть несколько баз данных RRD, в каждой из которых есть неполные данные о доступности службы, наблюдаемые из разных мест. Они просто записывают 100 если служба запущена, или 0 если он не работает.

Я хочу построить график, показывающий, была ли услуга доступна из любой местоположение, просто проверив, есть ли у меня какие-либо данные в одном из RRD за рассматриваемый период времени.

Я пытаюсь сделать это с помощью CDEF, который использует MAXNAN для поиска максимального значения моих усредненных источников данных - вот упрощенный пример:

rrdtool graph /tmp/graph.png -a PNG \
--start=1427213255 \
--end=1427224055 \
--upper-limit=100 \
--lower-limit=0 \
--rigid \
DEF:d0=/tmp/location1.rrd:available:AVERAGE \
DEF:d1=/tmp/location2.rrd:available:AVERAGE \
CDEF:agg=d0,d1,MAXNAN \
AREA:agg#00DD00:availability

Это вызывает ошибку

ERROR: invalid rpn expression in: d0,d1,MAXNAN

Где я ошибаюсь?

Обычно я пишу вопрос на StackOverflow и нахожу ответ перед отправкой. В данном случае ответ пришел сразу после этого. MAXNAN добавлен в rrdtool 1.4.9, а я использую 1.4.7

Я могу сделать что-то вроде этого, что подходит для моего случая использования

CDEF:agg=d0,0,ADDNAN,d1,0,ADDNAN,MAX 

Здесь я просто рассматриваю NaN как 0 и беру максимальный результат.