Я сгенерировал несколько графиков успешно с помощью классного приложения RRDTool. Тем не менее, у меня есть некоторые проблемы с опцией VRULE при построении графиков.
Я генерирую графики с помощью сценария Bash. Сейчас я пытаюсь нарисовать вертикальную красную линию в полночь (в UTC+02:00).
Код для получения последних 2 часов ночи в эпоху:
NOW=`date +%s`
DAY=86400
ZONE=7200
LDAY=$((NOW/DAY))
MID=$((LDAY*DAY))
SAST=$((MID-ZONE))
YEST=$((SAST-DAY))
Так что, если я echo
либо $SAST
или $YEST
это даст мне время , эпоха в полночь прошлой ночью или днем раньше.
Вот рабочий фрагмент (одного из) графиков:
$RRDTOOL graph /var/www/images/graphs/wdata36h.png \
--title 'Pi Traffic Count (wlan0)' \
--watermark "Graph Drawn `date`" \
--vertical-label 'Bytes' \
--lower-limit '0' \
--rigid \
--alt-autoscale \
--units=si \
--width '700' \
--height '200' \
--full-size-mode \
--start end-36h \
'DEF:wrx=/usr/local/bin/system/data.rrd:wrx:AVERAGE' \
'DEF:wtx=/usr/local/bin/system/data.rrd:wtx:AVERAGE' \
'AREA:wtx#0000FFFF:Upload\:' \
'GPRINT:wtx:LAST:\:%8.2lf %s]' \
'STACK:wrx#00CC00FF:Download\:' \
'GPRINT:wrx:LAST:\:%8.2lf %s]'
Как вы можете видеть, график охватывает последние 36 часов, который включает в себя 2 ночи. Я попытался добавить переменные $SAST
и $YEST
несколькими способами, но он продолжает читать их как имена переменных, а не как значения переменных.
Я попытался добавить:
'VRULE:$YEST#FF0000' \
'VRULE:$SAST#FF0000' \
а также
'VDEF:yest=$YEST' \
'VDEF:sast=$SAST' \
'VRULE:yest#FF0000' \
'VRULE:sast#FF0000' \
Но кавычки приводят к тому, что переменные интерпретируются как имена переменных.
Я действительно не хочу воссоздавать файл data.rrd
как в нем много исторических данных. Это означает, что мне нужно рисовать эти вертикальные линии на этапе graph
а не на этапе update
.