PDA

Bekijk de volledige versie : Установка RRDstorm на Asus RT-N66U



ryzhov_al
15-05-2012, 07:47
Допилил (http://github.com/ryzhovau/rrdstorm) скрипт RRDstorm до работоспособного состояния. Ничего нового, просто доработано для нового роутера.

http://s019.radikal.ru/i600/1205/81/36899e2f9ce5t.jpg (http://radikal.ru/F/s019.radikal.ru/i600/1205/81/36899e2f9ce5.jpg.html)http://s42.radikal.ru/i098/1205/1f/7ed90e81c73dt.jpg (http://radikal.ru/F/s42.radikal.ru/i098/1205/1f/7ed90e81c73d.jpg.html)http://s019.radikal.ru/i604/1205/28/85ba43474f6ct.jpg (http://radikal.ru/F/s019.radikal.ru/i604/1205/28/85ba43474f6c.jpg.html)http://s019.radikal.ru/i617/1205/ce/aba467ba04fbt.jpg (http://radikal.ru/F/s019.radikal.ru/i617/1205/ce/aba467ba04fb.jpg.html)http://i057.radikal.ru/1205/30/a88cc7875fc3t.jpg (http://radikal.ru/F/i057.radikal.ru/1205/30/a88cc7875fc3.jpg.html)http://s019.radikal.ru/i615/1205/ad/1a1c164636c8t.jpg (http://radikal.ru/F/s019.radikal.ru/i615/1205/ad/1a1c164636c8.jpg.html)http://s019.radikal.ru/i639/1205/fb/5c67cbb3767et.jpg (http://radikal.ru/F/s019.radikal.ru/i639/1205/fb/5c67cbb3767e.jpg.html)

Обмеру и визуализации подвергаются:

0 - Average system load (нагрузка на ОС),
1 - RAM usage (выделение RAM-памяти под процессы, буфера\кэши, свободное место),
2 - Wireless PHY's temperatures (температура каждого из двух датчиков в Wi-Fi модулях. Когда интерфейс отключен, будут выдаваться нулевые значения),
3 - CPU usage (использование CPU (system, user, idle, nice),
4 - WAN traffic statistics (исходящий\входящий интернет трафик),
5 - Disk space (свободное\занятое место на двух выбранных разделах),
6 - Wireless outgoing traffic (исходящий трафик для каждого из двух беспроводных интерфейсов (180МБит/с на 2,4ГГц ага, да^)).

Цифры 0..6 используются при вызове скрипта rrdstorm.sh, примеры ниже.

Для использования с новым репозиторием необходимо:
1) установить пакеты:

$ opkg install bash rrdtool coreutils-df
2) распаковать rrdstorm.sh из архива (http://github.com/downloads/ryzhovau/rrdstorm/rrdstorm.tgz) в /opt/bin,
3) создать html-файлы и инициализировать базы данных RRD: $ /opt/bin/rrdstorm.sh create 0 1 2 3 4 5 6
4) добавить задания cron:

$ /opt/bin/rrdstorm.sh update 0 1 2 3 4 5 6 - для выполнения каждую минуту,
$ /opt/bin/rrdstorm.sh graph_cron h 0 1 2 3 4 5 6 - для обновления графиков так часто как вам нужно. В этом примере обновляются графики за последние четыре часа работы роутера.

Всё! При работающем на роутере web-сервере открыв httр://myrouter/rrd/ можно созерцать статистику работы. Построение графиков за выбранный период занимает ~35 секунд. Абсолютно аналогично можно строить статистику за последний час, сутки, неделю и год. Вы можете строить графики за все возможные периоды сразу командой $ /opt/bin/rrdstorm.sh graph 0 1 2 3 4 5 6, построение займёт ~2,5 минуты.

Чтобы доработать скрипт под себя, измените при необходимости следующие строки в /opt/bin/rrdstorm.sh:
1) WAN traffic statistics. Если ваш интернет-интерфейс отличается от ppp0, то подставьте имя своего интерфейса в строку №369.
2) Disk space. Если необходимо отслеживать место на разделах диска отличных от sda1 и sda2, то подставьте правильные названия разделов в строчки №№435, 436.


Post scriptum

На время построения графиков процесс rrdtool «съедает» 100% CPU. У меня, например, даже FLAC-файлы по SAMBA переставали проигрываться! Выход в ограничении аппетитов процесса:
$ cat /opt/usr/sbin/rrd.4hourly.sh
#!/bin/sh

/opt/bin/cpulimit --limit=30 --background --exe=rrdtool
/opt/bin/rrdstorm.sh graph_cron h 0 1 2 3 4 5 6
/usr/bin/killall cpulimit

Rossi25
08-07-2012, 09:55
Спасибо за скрипт.
Может я, конечно, задам глупый вопрос, но можно ли сделать похожий скрипт без использования массивов и как? (Просто я сейчас на openwrt и там нет поддержки массивов в busybox). Мне вообще нужно только температуру строить с digitemp (до 3-х датчиков).

ryzhov_al
08-07-2012, 10:22
Спасибо за скрипт.
Может я, конечно, задам глупый вопрос, но можно ли сделать похожий скрипт без использования массивов и как?Конечно можно. Просто замените массивы на переменные. Три этапа работы с Round robin database:

инициализация базы: строка 559 скрипта,
ежеминутное пополнение базы: строки 219-267 на примере датчиков температуры,
построение графиков: строка 575 с ключами из строк 269-274.

Детальное описание rrdtool здесь (http://oss.oetiker.ch/rrdtool/doc/rrdtool.en.html).


(Просто я сейчас на openwrt и там нет поддержки массивов в busybox).Тогда вы странного хотите. Вам всё равно придётся ставить пакеты rrdtool зависимостями librrd, libart, libfreetype, libpng и прочими. Так почему же не поставить bash, в котором поддержка массивов есть?

Rossi25
11-07-2012, 21:04
Тогда вы странного хотите. Вам всё равно придётся ставить пакеты rrdtool зависимостями librrd, libart, libfreetype, libpng и прочими. Так почему же не поставить bash, в котором поддержка массивов есть?
Просто я новичок полный в этом деле и не увидел, что есть пакет bash для openwrt. Пока получился скрипт отправки на почту, который работает без bash - http://wl500g.info/showthread.php?18254-%D0%EE%F3%F2%E5%F0-%F1%EB%E5%E4%E8%F2-%E7%E0-%F2%E5%EC%EF%E5%F0%E0%F2%F3%F0%EE%E9-(digitemp-amp-owfs)&p=252854#post252854

Leon977
13-12-2012, 09:55
Роутер WL500gp установлен скрипт новая редакция прошивка WL500gp-1.9.2.7-rtn-r4667 все работает кроме RRDTool Traffic Graph Page
http://my.router/rrd-new что и где нужно подправить ? Help ???

BraVo123
15-12-2012, 01:47
Роутер WL500gp установлен скрипт новая редакция прошивка WL500gp-1.9.2.7-rtn-r4667 все работает кроме RRDTool Traffic Graph Page
http://my.router/rrd-new что и где нужно подправить ? Help ???
Там в верхнем правом углу, Update Data

Gaku
20-08-2013, 08:00
Ещё такой вопрос по rrdtool

Воспользовался инструкцией и скриптом отсюда https://github.com/ryzhovau/rrdstorm/
http://192.168.1.1/rrd/ показывает пустую страницу с пустыми фреймами. Подскажите пожалуйста, что сделать чтобы стандартный http-сервер показывал html-файлы, сгенерированные скриптом?

В каком пакете есть cpulimit, позволяющий ограничить прожорливость генератора png?

Спасибо!

ryzhov_al
21-08-2013, 11:54
Ещё такой вопрос по rrdtool

В каком пакете есть cpulimit, позволяющий ограничить прожорливость генератора png?В пакете limitcpu. Такова была прихоть автора: назвать программу limitcpu, а бинарник — cpulimit.

Gaku
21-08-2013, 12:33
Спасибо!
http-сервер пока использую из busybox на отдельном порту. Обидно, что не получилось обойтись одним сервером.

Очень инетресно было бы прикрутить детализацию к статистике: какие сайты генерируют больше всего траффика и какие процессы больше всего едят процессорного времени. Возможно ли такое с rrdtool?

Подскажите пожалуйста, возможно ли на RT-N16 увидеть "Wireless PHYs temperature graphs" и "Disk space graphs"?

ryzhov_al
21-08-2013, 12:39
Очень инетресно было бы прикрутить детализацию к статистике: какие сайты генерируют больше всего траффика и какие процессы больше всего едят процессорного времени. Возможно ли такое с rrdtool?Пожалуйста. Это RRD базы данных, как вы захотите, так и будете использовать. Только примеров не просите, я — пас:).
Статистику по сайтам проще всего посмотреть с помощью darkstat.


Подскажите пожалуйста, возможно ли на RT-N16 увидеть "Wireless PHYs temperature graphs" и "Disk space graphs"?Картинки temperature graph появятся сразу как только в RT-N16 будет обнаружен датчик температуры, а Disk space graphs — сразу после того, как вы вставите в скрипт метки своих USB-дисков. В Issues на github'е я вам всё расписал.

Gaku
21-08-2013, 14:07
Disk space graphs — сразу после того, как вы вставите в скрипт метки своих USB-дисков. В Issues на github'е я вам всё расписал.
Я исправил на:

RRDuVAL[5]='
SP=$(/opt/bin/df "-B1")
echo -n $(echo "$SP"|grep disca_1|awk "{print \$3\":\"\$2}")
echo
'

перегенарция графиков не дала результатов.


$ df -B1 | grep disca_1
/dev/discs/disca/part1 3875524608 104370176 3574288384 3% /tmp/mnt/disca_1


Где может быть ошибка?

ryzhov_al
21-08-2013, 14:12
перегенарция графиков не дала результатов. И не даст. Картинки генерируются по собранной статистике. Много ли вы её собрали после этой правки? Убедитесь, что ежеминутные задания cron'а отрабатывают без ошибок.


Где может быть ошибка?Насколько помню, в скрипте идёт сбор статистике с двух выбранных разделов. Имя метки одного из них вы поправили, но как насчёт второго?

Gaku
21-08-2013, 14:55
Но у меня всего один раздел. Вторую метку надо было всеравно прописывать?

$ df -B1
Filesystem 1B-blocks Used Available Use% Mounted on
rootfs 4718592 4718592 0 100% /
/dev/root 4718592 4718592 0 100% /
devfs 102400 4096 98304 4% /dev
tmpfs 64917504 487424 64430080 1% /tmp
/dev/discs/disca/part1 3875524608 104366080 3574292480 3% /tmp/mnt/disca_1
/dev/discs/disca/part1 3875524608 104366080 3574292480 3% /opt


По ошибкам

Убедитесь, что ежеминутные задания cron'а отрабатывают без ошибок.



Updating (0) /opt/var/rrd_storm/load.rrd with 0.84:0.89:0.69 ..
Updating (1) /opt/var/rrd_storm/mem.rrd with 16636:22524:66460:126796:0:0 ..
/usr/sbin/wl: Unsupported
/opt/bin/rrdstorm.sh: line 638: /2 + 20: syntax error: operand expected (error token is "/2 + 20")
Updating (2) /opt/var/rrd_storm/temp.rrd with ..
RRDtool 1.2.30 Copyright by Tobi Oetiker, 1997-2008

Usage: rrdupdate filename
[--template|-t ds-name:ds-name:...]
time|N:value[:value...]

at-time@value[:value...]

[ time:value[:value...] ..]

ERROR: expected 2 data source readings (got 1) from N:
Updating (3) /opt/var/rrd_storm/cpu.rrd with 3270857:0:243227:7018368 ..
Updating (4) /opt/var/rrd_storm/wan.rrd with 2431529847:673432360 ..
Updating (5) /opt/var/rrd_storm/hdd.rrd with 104366080:3875524608 ..
RRDtool 1.2.30 Copyright by Tobi Oetiker, 1997-2008

Usage: rrdupdate filename
[--template|-t ds-name:ds-name:...]
time|N:value[:value...]

at-time@value[:value...]

[ time:value[:value...] ..]

ERROR: expected 4 data source readings (got 2) from N:104366080:3875524608
Updating (6) /opt/var/rrd_storm/wlan.rrd with 1897178260: ..


Непонятно, что с hdd...

ryzhov_al
21-08-2013, 15:23
Зачем вы пытаетесь собирать данные с отсутствующего датчика? Вы можете их просто не трогать. Исключите соответствующее число (2) при сборе данных и построении графиков:

/opt/bin/rrdstorm.sh graph_cron h 0 1 3 4 5 6
В начале самого скрипта я всё расписал.

Но у меня всего один раздел. Вторую метку надо было всеравно прописывать?Конечно, иначе будут повторяться приведённые ошибки. Пропишите вместо второго раздела замер /tmp или другого раздела и всё будет в порядке.

Gaku
22-08-2013, 08:32
Спасибо! Работает отменно. Единственное что, если у Вас будет минутка - добавьте пожалуйста в инструкцию два пункта:
1. Запуск http-сервера (у кого ещё не раскочегарен кастомный):

busybox_httpd -h /opt/share/www/rrd -p 8080
2. Монтирование диска (если у кого один раздел) с нулевым размером:
md /tmp mfs rw,-s0M,noatime 0 0
Правда где взять memory disc я пока не понял...