У меня есть несколько баз данных RRD каждый с неполными данными о доступности сервиса, как наблюдается от различных местоположений. Они просто записывают 100
если сервис закончился, или 0
если это снижается.
Я хочу сделать график, показывающий, был ли сервис доступен от какого-либо местоположения, просто путем проверки, есть ли у меня любые данные в одном из RRDs в течение рассматриваемого периода времени.
Я пытаюсь сделать это с 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, и взяв максимальный результат.