Поскольку в ядре 2.6.хх.хх используемой в прошивках RTN ветки файлы /proc/stat и /proc/meminfo имеют несколько отличный формат от версии ядра 2.4, то пришлось несколько изменить скрипт для работоспособности.
Выкладываю тут обновлённую версию.
Инструкция и описание скрипта находится в этой же ветке в посте 84
Обновления:
1. Изменена обработка /proc/stat и /proc/meminfo
2. Немножко обновлено построение графиков.
3. Выравнены числовые значения величин под графиками.
4. Теперь скрипт рисует график по ICMP всех типов
Установка:
1. После установки, нужно удалить файлы
/opt/traffic/mem.rrd
/opt/traffic/cpu.rrd
/opt/traffic/ports.rrd
2. Запустить /opt/traffic/rrd.sh
3. Перезагрузить роутер
4. Подождать полчасика (пока накопится статистика)
5. Зайти на страницу статистики и посмотреть графики.
PS:
ошибка
часто возникает из-за конфликта в предыдущих и последующих настроек скрипта.Code:/opt/traffic/rrd.sh: /opt/traffic/rrd.sh: 587 (620): RRDtool: not found
Лечится рестартом роутера.
Если после рестарта ошибка осталась, а графики рисуются и статистика считается, то наплевать на неё.
Разобраться с этим времени пока что нет.
Last edited by SerGri; 31-08-2010 at 16:00. Reason: Добавление информации про ошибку /opt/traffic/rrd.sh: 587 (620): RRDtool: not found
Hardware:
RT-N16 1.9.2.7-rtn-r2775 | 2Gb USBFlash
WL-500gPV1 1.9.2.7-d-r1825 | 299Mhz | 128Mb | Console port | 4 USB 2.0 port | 2Gb USBFlash (резерв)
Link's:
WAN: Radio 60 Mbit/sec HalfDuplex (Static IP) || LAN: Wi-Fi + LAN
Software:
nShaper | lighgttpd + php-fcgi | vnStat | RRD | syslog-ng | MC | ...
Last edited by SerGri; 31-08-2010 at 18:41.
Hardware:
RT-N16 1.9.2.7-rtn-r2775 | 2Gb USBFlash
WL-500gPV1 1.9.2.7-d-r1825 | 299Mhz | 128Mb | Console port | 4 USB 2.0 port | 2Gb USBFlash (резерв)
Link's:
WAN: Radio 60 Mbit/sec HalfDuplex (Static IP) || LAN: Wi-Fi + LAN
Software:
nShaper | lighgttpd + php-fcgi | vnStat | RRD | syslog-ng | MC | ...
Hardware:
RT-N16 1.9.2.7-rtn-r2775 | 2Gb USBFlash
WL-500gPV1 1.9.2.7-d-r1825 | 299Mhz | 128Mb | Console port | 4 USB 2.0 port | 2Gb USBFlash (резерв)
Link's:
WAN: Radio 60 Mbit/sec HalfDuplex (Static IP) || LAN: Wi-Fi + LAN
Software:
nShaper | lighgttpd + php-fcgi | vnStat | RRD | syslog-ng | MC | ...
Добрый день! Посоветуйте пожалуйста решение. Есть роутер, ненаглядный асус 500gp, несколько компов к нему и минисервачок с линуксом. Хочется реализовать следилку-мониторилку. т.е. весь трафик http-шный, забредалки с компов в и-нет параллельно сохранять и на сервачке. В том числе и переписку с однокласников и т.д. Подскажите пожалуйста, как реализовать?
Статья 137. Нарушение неприкосновенности частной жизни
1. Незаконное собирание или распространение сведений о частной жизни лица, составляющих его личную или семейную тайну, без его согласия либо распространение этих сведений в публичном выступлении, публично демонстрирующемся произведении или средствах массовой информации -
наказываются штрафом в размере до двухсот тысяч рублей или в размере заработной платы или иного дохода осужденного за период до восемнадцати месяцев, либо обязательными работами на срок от ста двадцати до ста восьмидесяти часов, либо исправительными работами на срок до одного года, либо арестом на срок до четырех месяцев, либо лишением свободы на срок до двух лет с лишением права занимать определенные должности или заниматься определенной деятельностью на срок до трех лет.
2. Те же деяния, совершенные лицом с использованием своего служебного положения, -
наказываются штрафом в размере от ста тысяч до трехсот тысяч рублей или в размере заработной платы или иного дохода осужденного за период от одного года до двух лет, либо лишением права занимать определенные должности или заниматься определенной деятельностью на срок от двух до пяти лет, либо арестом на срок от четырех до шести месяцев, либо лишением свободы на срок от одного года до четырех лет с лишением права занимать определенные должности или заниматься определенной деятельностью на срок до пяти лет.
Если кто пользуется скриптом (ведь предыдущую версию скачали 16 человек... ), то выкладываю финальную на данный момент версию - rrd.sh v.12 final
Список изменений:
- Изменены цвета графиков.
- Добавлен годовой мониторинг по портам (не проверена работа на периоде более 1 месяца)
- Изменён вид графика "Ports detail:"
- Фрагментированные пакеты считаются (оставлено на всякий случай) , но графики по ним больше не строятся (У меня за месяц работы значения так и остались равными 0.)
- Улучшен внешний вид HTML страницы.
- Добавлены данные об использовании памяти ядром системы в график "Memory Utilization".
- Все графики теперь рисуются полями (в более ранних версиях поле и линия)
- Добавлена новая переменная graph_w=550 она отвечает за ширину графиков (min=550 ; max=950)
- Мелкие изменения и доработки.
Установка с "нуля" :
1. Для работы скрипта необходимо установить cron, rrdtool, lighttpd:
2. Проверить установленную у Вас версию BusyBox (Если версия выше или равна v1.1.3, то всё в порядке, если ниже - обновите прошивку или установите самостоятельно BusyBox более свежей версии, чем v1.1.3):Code:ipkg install cron ipkg install rrdtool ipkg install lighttpd
3. Создаём требуемые для работы скрипта каталоги:Code:busybox
4. Скачиваем скрипт и распаковываем его:Code:mkdir /opt/traffic mkdir /opt/share/www/rrd mkdir /opt/share/www/rrd/traffic
Если ранее Вы уже использовали предыдущие версии скрипта.Code:wget http://wl500g.info/attachment.php?attachmentid=7090 -O /opt/traffic/rrd.sh.gz gunzip /opt/traffic/rrd.sh.gz chmod +x /opt/traffic/rrd.sh
Вам еобходимо удалить в каталоге /opt/traffic файл mem.rrd .
Он пересоздастся заново при запуске скрипта.
Настройка:
1. Редактируем файл /opt/etc/lighttpd/lighttpd.conf:
раскомментируем следующие строки:
далее добавляем в качестве индексного файла index.cgi:Code:server.modules = ( ... "mod_access", "mod_fastcgi", "mod_cgi", ... "mod_accesslog" )
в разделе CGI дописываем:Code:# files to check for if .../ is requested index-file.names = ( "index.php", "index.html", "index.htm", "default.htm", "lighttpd/index.html, index.cgi" )
2. В скрипте задаем значения следующих переменных:Code:#### CGI module cgi.assign = ( ".pl" => "/opt/bin/perl", ".cgi" => "/bin/sh", ".php" => "/opt/bin/php" )
RRDDATA=/opt/traffic - директория (без завершающего /), где лежит rrd базы, по умолчанию так же сам скрипт, его конфиг, файлы со списком ip и портов.
RRDIMG=/opt/share/www/rrd/traffic - директория с картинками.
cgi=/opt/share/www/rrd/ - директория, где лежит файл index.cgi и update.cgi.
IMG_WWW="/rrd/traffic" - директория отностительно $cgi.
graph_w=550 - ширина графиков (min=550 ; max=950)
script="${RRDDATA}/rrd.sh" - имя файла скрипта
f_conf="${RRDDATA}/config" - имя файла конфига
log_ip="${RRDDATA}/ip.list" - имя файла в котором перечислены IP, которве вы собираетесь мониторить.
log_ports="${RRDDATA}/ports.list" -имя файла в котором перечислены порты, которые вы собираетесь мониторить.
(Не рекомендую указывать более 20-25 портов/диапазонов, будет большая нагрузка на роутер.)
MONIT=2 - задает номер правила, куда вставлены правила для статистики по ip и портам. (По умолчанию, MONIT=2, т.к. 1-ое правило обычно - "-A FORWARD -i br0 -o br0 -j ACCEPT" - локалка. Если вам нужна суммарная статистика (локалка+инет), то MONIT=1.)
Monit_Ports=1 (1- включить статистику по портам, любое значение, отличное от 1 -отключить статистику по портам.)
3. В каталоге /opt/traffic создаем следующие файлы:
ip.list - список ip-ков, в этом файле перечислять их можно в любом порядке, в строку или столбиком, можно указывать подсети через маску или префикс. Например:
192.168.2.3
192.168.2.2
192.168.2.1
192.168.2.1/24
ports.list - список портов, которые хотите мониторить в строчку, диапазон указывается через двоеточие. Например: 20:21 23 25 53 67:68 80 110 123 137:139 445 143 161:162 220
4. Запускаем скрипт.
Там где он лежит должен появиться файл config, примерное его содержимое:Code:/opt/traffic/rrd.sh
WANIF - интерфейс WAN, (WANIF=ppp0 или vlan0(WL-500GP) или vlan2(RT-N16)).Code:WANIF=eth1 LANIF=eth0 WLANIF=eth2 WLINT=br0 ip="192.168.2.3 192.168.2.2 192.168.2.1 192.168.2.0/255.255.255.0" ip_l="192.168.2.3_32 192.168.2.2_32 192.168.2.1_32 192.168.2.0_24" ports_l="20:21 23 25 53 67:68 80 110 123 137:139 445 143 161:162 220"
LANIF - интерфейс проводной внутренней сети LAN,
WLANIF - интерфейс беспроводной внутренней сети WLAN,
WLINT - интерфейс внутренней сети LAN+WLAN (br0).
Если что-то из этого не определилось можно вручную дописать.
ip - список IP адресов.
ip_l - список IP адресов с масками подсети (одиночный - *_32, сеть - *_24)
ports_l - список портов и диапазонов портов.
Так же должны появиться в папке RRDDATA файлы с расширением .rrd Размер этих файлов не меняется.
Структура файла ports.rrd зависит от перечисленных портов, по этому если захотите добавить/убрать какой либо порт нужно после изменения файла ports.list удалить файл ports.rrd и config (так же если список ip-ков меняется необходимо удалить файл config).
Теперь в браузере набираем [ip-роуретара]:[порт]/index.cgi. Картинки генерятся при нажатии "update data" и только для той категории где сейчас находитесь.
5. В crontab или в cron прописываем запуск этого скрипта каждые 5 минут.
Для чего в каталогe /opt/etc/cron.5mins создаём файл update_stat.sh примерно такого содержания:
После этого делаем его исполняемым командой:Code:#!/bin/sh PATH=/opt/sbin:/opt/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin echo "==== Update RRD statistic's START ====" /opt/traffic/rrd.sh >> /dev/null echo "==== Update RRD statistic's STOP ===="
Скриншоты:Code:chmod +x /opt/etc/cron.5mins/update_stat.sh
Важные замечания.
1. Если появляется файл .rrd это значит проблемы с ipcalc (не поддерживает какую либо из опций -pmn или вывод у него отличный от запланированного в скрипте. ipcalc должен поддерживать опции -pnm и выводить результат аналогичный:
красным выделено, то что должно быть.Code:ipcalc -pmn 10.10.10.10/24 NETMASK=255.255.255.0 NETWORK=10.10.10.0 PREFIX=24
Если вывод другой, то либо в скрипте необходимо корректировать функции get_ip, либо попробовать установить более свежий BusyBox.
2. Ошибка
часто возникает из-за конфликта в предыдущих и последующих настроек скрипта.Code:/opt/traffic/rrd.sh: /opt/traffic/rrd.sh: 587 (620): RRDtool: not found
Лечится рестартом роутера.
Если после рестарта ошибка осталась, а графики рисуются и статистика считается, то можно ещё раз рестартовать роутер и скорее всего она пропадёт.
3. Замечание для тех, кто пользовался скриптом "Установка программ для чайника"
У Вас каталог для WWW странички rrd от "Установка программ для чайника" совпадает с каталогом этого скрипта.
В настройках скрипта измените значения переменных RRDIMG, cgi и IMG_WWW на приведённые ниже:
Естественно, адрес странички будет:Code:RRDIMG=/opt/share/www/rrd-new/traffic cgi=/opt/share/www/rrd-new/ IMG_WWW="/rrd-new/traffic"
http://192.168.xxx.xxx:[порт lighttpd]/rrd-new/index.cgi
Last edited by SerGri; 18-02-2011 at 01:05.
Hardware:
RT-N16 1.9.2.7-rtn-r2775 | 2Gb USBFlash
WL-500gPV1 1.9.2.7-d-r1825 | 299Mhz | 128Mb | Console port | 4 USB 2.0 port | 2Gb USBFlash (резерв)
Link's:
WAN: Radio 60 Mbit/sec HalfDuplex (Static IP) || LAN: Wi-Fi + LAN
Software:
nShaper | lighgttpd + php-fcgi | vnStat | RRD | syslog-ng | MC | ...
А как поставить вместо rdtool которая есть в "Установка программ для чайника".Сделал как написано,все равно загружается старая версия rdtool.
Скорее всего у Вас каталог для WEB странички rrd от "Установка программ для чайника" совпадает с каталогом этого скрипта.
Исправить это можно следующим образом:
В настройках скрипта измените значения переменных:
RRDIMG=/opt/share/www/rrd-new/traffic - директория с картинками.
cgi=/opt/share/www/rrd-new/ - директория, где лежит файл index.cgi и update.cgi.
IMG_WWW="/rrd-new/traffic" - директория отностительно $cgi.
Естественно, адрес странички будет:
http://192.168.xxx.xxx:[порт lighttpd]/rrd-new/index.cgi
Hardware:
RT-N16 1.9.2.7-rtn-r2775 | 2Gb USBFlash
WL-500gPV1 1.9.2.7-d-r1825 | 299Mhz | 128Mb | Console port | 4 USB 2.0 port | 2Gb USBFlash (резерв)
Link's:
WAN: Radio 60 Mbit/sec HalfDuplex (Static IP) || LAN: Wi-Fi + LAN
Software:
nShaper | lighgttpd + php-fcgi | vnStat | RRD | syslog-ng | MC | ...
огромное спасибо всем за все 9 страниц
SerGri
наверное лучше подправить инструкцию и в скобки как раз поставить про ipcalc, а основным написать что ставить надо busybox там уже содержится ipcalc, который нужен, просто маленько вводит в заблуждение.
Ок. Верное замечание.
Сейчас поправлю.
Hardware:
RT-N16 1.9.2.7-rtn-r2775 | 2Gb USBFlash
WL-500gPV1 1.9.2.7-d-r1825 | 299Mhz | 128Mb | Console port | 4 USB 2.0 port | 2Gb USBFlash (резерв)
Link's:
WAN: Radio 60 Mbit/sec HalfDuplex (Static IP) || LAN: Wi-Fi + LAN
Software:
nShaper | lighgttpd + php-fcgi | vnStat | RRD | syslog-ng | MC | ...
Тут вот какая загогулина :
Флешка имеет ограничения на количество циклов перезаписи, а HDD - практически нет.
При установки в кронтабе 5 минутного интервала обновления мы получаем возрастание срока жизни флешки.
Для USB HDD оптимально - 1 минута - так статистика точнее будет.
Hardware:
RT-N16 1.9.2.7-rtn-r2775 | 2Gb USBFlash
WL-500gPV1 1.9.2.7-d-r1825 | 299Mhz | 128Mb | Console port | 4 USB 2.0 port | 2Gb USBFlash (резерв)
Link's:
WAN: Radio 60 Mbit/sec HalfDuplex (Static IP) || LAN: Wi-Fi + LAN
Software:
nShaper | lighgttpd + php-fcgi | vnStat | RRD | syslog-ng | MC | ...
Вобщем да, с этим трудно не согласиться, как-то сразу не пришло в голову. Только у меня каждые 5 минут, при отработке четырёх 5-минутных CRON-овских скриптов (info_collector, rrd, vnstat, rrd2), загрузка процессора возрастает до 100%, секунд на 30-40. Пока не удалось отследить, какая из задач даёт такую нагрузку. Возможно придется пожертвовать точностью измерений, чтобы позволить роутеру работать в менее напряженном режиме, будем экспериментировать. Еще раз спасибо за разъяснения!
Перенёс скрипт в ежеминутное обновление статистики и вот что получилось с загрузкой ЦПУ (с 17:30). Вернул обратно, меня и так вполне устраивает
Last edited by genred; 03-10-2010 at 21:15. Reason: Провёл эксперимент
ASUS RT-N16 + USB HDD 80Gb + HP LaserJet 1020, Firmware: 1.9.2.7-rtn-r2196
SerGri
возник один вопрос, может подскажите куда копать, при обновлении графиков, не пойму почему роутер вешается и вообще не отвечает, вешает не всегда правда, но все же, и ни как не зависит от того какие графики обновляются(по разному бывает)
может подскажите где можно посмотреть
PS сам пока писал подумал что было бы не плохо логи глянуть но вдруг вы чего умнее скажите