Я хочу построить график памяти определенных процессов в windows с помощью rrdtool, который затем можно показать на простой веб-странице.
Итак, я дошел до этого. Не совсем уверен, что понимаю, как это работает, после некоторых руководств я получаю пустой результат.
rrdtool create psrvr-mem.rrd --start 1023654125 --step 300 DS:mem:GAUGE:600:0:U RRA:AVERAGE:0.5:12:24 RRA:AVERAGE:0.5:288:31
Сценарий обновления.
@ECHO OFF
:LOOP
FOR /F "tokens=*" %%g IN ('powershell "get-process psrvr | select -ExpandProperty PrivateMemorySize"') do (SET mem_usage=%%g)
rrdtool update psrvr-mem.rrd N:%mem_usage%
TIMEOUT /t 300
GOTO LOOP
И, наконец, график
rrdtool graph memory.png --start -1800 -a PNG -t "Memory" --vertical-label "" -w 1260 -h 400 -r DEF:mem=psrvr-mem.rrd:mem:AVERAGE AREA:mem#FF0000
К сожалению, результат - пустой график. Не знаю почему. И не совсем понимаю, особенно критично время старта или нет.
- edit - По-прежнему не создаются линии на графике. Однако я обнаружил одну проблему: ни на одной оси не было меток. Поскольку файл шрифта отсутствовал. Оказывается, предварительно скомпилированные двоичные файлы, загруженные с веб-сайта rrdtool, устарели на 15 лет для windows. Я нашел более новый двоичный файл, но если у меня это получится, я, вероятно, попробую скомпилировать его с последней версией. А пока я остановлюсь на том, что, кажется, работает лучше с 2013 года. rrdtool create psrvr-mem.rrd --start 1592774026 --step 60 DS: mem: GAUGE: 120: 0: U RRA: AVERAGE: 0.5: 1: 5
Затем заполните некоторыми значениями с помощью скрипта обновления выше.
А затем попробуйте снова построить график. rrdtool graph memory.png --start = now-300 -a PNG -t "Память" --vertical-label "Bytes" -w 800 -h 300 -r DEF: mem = psrvr.rrd: mem: AVERAGE LINE: mem # FF0000
Результатом является график, на котором линия не движется. Он может быть полностью нулевым.
введите описание изображения здесь