gvan Posted November 28, 2016 Share Posted November 28, 2016 (edited) Collectd - это простой и легкий сервис, который собирает данные о производительности системы и приложений и предоставляет механизмы для хранения полученных значений в различных форматах, например в RRD файлах. Сбор статистики производится с помощью подключаемых плагинов. В данном примере будет рассмотрена возможность использования плагина для работы с SNMP (получения данных со встроенного в роутер SNMP-сервера), плагина для работы с дисковой подсистемой и плагина для записи полученных данных в RRD БД. Задача collectd только собирать данные. Отрисовка графиков производится с помощью rrdcgi, который позволяет использовать некое подобие шаблонов, упрощающих формирование html-файлов и облегчающих процесс их настройки. Создание графиков выполняется только по запросу пользователя (при обращении к веб-скриптам), соответственно, нагрузка на систему незначительная. До графических возможностей netdata, недавно включенного в состав готовых пакетов, конечно, далеко, но здесь в первую очередь обеспечивается задача долговременного хранения данных статистики. Примеры отображения полученной информации: Скрытый текст Индексная страница с динамически формирующимися превьюшками собираемой статистики Некоторые примеры графиков Этим возможности программы не ограничиваются. Существует дополнительные плагины, открывающие другие варианты сбора статистики (в том числе с определенных сервисов). Например, плагин iptables, позволяющий собирать данные по помеченным цепочкам правил (в планах отрисовывать графики по определенным клиентам wi-fi), плагин ping, формирующий данные по задержкам до определенного хоста и т.п.. Также есть возможность формирования нотификаций при достижении определенных значений полученной информации с помощью плагина threshold. Этап 1. Формирование данных статистики. Включаем через CLI поддержку snmp на роутере: service snmp system configuration save Ставим в entware SNMP-утилиты и проверяем работу протокола SNMP на роутере: opkg install snmp-utils snmp-mibs snmpwalk -c public 127.0.0.1 . >/opt/tmp/snmp.txt Если все прошло успешно, то должен создаться файл, содержащий все возможные OID роутера. Распаковываем содержимое приложенного архива files.zip во временную папку и устанавливаем collectd c необходимыми для нашего примера плагинами: opkg install collectd collectd-mod-logfile collectd-mod-disk collectd-mod-snmp collectd-mod-rrdtool Создаем каталог для rrd файлов: mkdir -p /opt/var/lib/collectd/rrd Копируем файл кастомных типов из архива share/custom-types.db в /opt/share/collectd Заменяем конфигурационный /opt/etc/collectd.conf на файл conf/collectd.conf Некоторые пояснения по конфигурационному файлу. Вначале указываются рабочие каталоги, а также подключается файл с кастомными типами (в нем описывается хранение характерных для keenetic данных: оперативной памяти и CPU). Далее указывается интервал (в примере 180 сек.) сбора статистики для плагинов (в настройках плагина snmp д.б. такой же интервал). Изменение интервала в дальнейшем допускается только при удалении всех rrd файлов (обнуление статистики). Но также можно выполнить их тюнинг вручную. В противном случае получим некорректную статистику. Плагин logfile нужен для записи журналов самого сервиса collectd. В нем и будем смотреть возникающие при настройке и работе сервиса ошибки. Плагин disk пишет информацию о работе выбранных дисков (разделов). В примере указаны только хардварные диски (производительность отдельных разделов не учитываю, т.к. у меня в этом необходимости нет). Информация начинает записываться в БД через 3*интервал_опроса после запуска collectd. Плагин rrdtool собственно и обеспечивает сохранение данных в БД RRD. Размер каждого созданного файла БД фиксированный, информация записывается по кругу, переписывая устаревшие данные. Наибольшая точность данных получается для статистики за последние сутки (в примере точность до 3 минут). Данные за неделю, месяц и год усредняются и хранятся с большими интервалами времени. Но при этом существует возможность считывания максимальных значений статистики, которые были в указанные периоды (эти данные не усредняются, и в отрисовке графиков мы их также будем отображать). Значение “RRARows 480” определяет количество записей для каждого раздела данных (сутки, неделя, месяц, год). 480 соответствует точности для записи данных за сутки с интервалом три минуты (24*60/3). Плагин snmp выполняет сбор статистики по протоколу SNMP. В разделе Host указывается узел, с которого собираются данные, а также имена разделов с данными для опроса определенных OID (информацию по нужным мне OID брал из временного файла /opt/tmp/snmp.txt). Запускаем collectd /opt/etc/init.d$ /opt/etc/init.d/S??collectd start Проверяем лог /opt/var/log/collectd.log на наличие ошибок. Если все прошло успешно, то через несколько минут в БД RRD можно посмотреть вносимые сервисом данные, например по uptime системы. Для этого установим rrdtool: opkg install rrdtool rrdtool dump /opt/var/lib/collectd/rrd/localhost/snmp/uptime.rrd | less На этом данный этап закончен. Можно спокойно передохнуть, а настройку отрисовки графиков продолжить в следующий раз. Этап 2. Формирование графиков статистики. Приступим к настройке визуальной части системы. Для этого установим http-сервер. В примере будет использоваться lighttpd с модулем lighttpd-mod-cgi. Можете использовать другой http-сервер, но необходимо будет в соответствии с документацией на сервер настроить поддержку выполнения CGI-скриптов. Также необходимо установить rrdcgi для формирования динамических HTML-файлов. Устанавливаем сервер и необходимое ПО: opkg install lighttpd lighttpd-mod-cgi rrdcgi Настраиваем сервер. В /opt/etc/lighttpd/lighttpd.conf меняем порт на 8000 и убираем комментарий: server.port = 8000 И добавляем в index-file.names запуск индексной страницы с именем index.rcgi: index-file.names = ( "index.php", "index.html", "index.htm", "default.htm", "index.lighttpd.html", "index.rcgi" ) В /opt/etc/lighttpd/conf.d/30-cgi.conf корректируем cgi.assign для выполнения скриптов с расширением .rcgi: cgi.assign = ( ".pl" => "/opt/bin/perl", ".cgi" => "/opt/bin/perl", ".rb" => "/opt/bin/ruby", ".erb" => "/opt/bin/eruby", ".py" => "/opt/bin/python", ".rcgi" => "/opt/bin/rrdcgi" ) Запускаем сервер: /opt/etc/init.d/S80lighttpd start Копируем содержимое архива www/* в каталог /opt/share/www. В переменной RRDPATH файлов 3*.rcgi нужно указать правильный путь к каталогу статистики, т.к. он зависит от названия вашего роутера. Также у меня для доступа в Интернет используется PPPoE, физическое подключение имеется только к WAN и к трем интерфейсам роутера. Поэтому набор файлов редактируйте под свои нужды. Но скрипты для общей статистики системы должны работать без каких-либо изменений. Подключаемые шаблоны находятся в /opt/share/www/include. Их тоже можно корректировать, если возникнет необходимость (например, изменить дизайн страницы, поменять цвет и форму графиков и т.п.). Документацию смотрите на официальной странице RRDTOOL. Если требуется выполнить какие-то дополнительные вычисления над данными в RRD (а в некоторых шаблонах это используется), то они производятся в обратной польской записи (RPN), в конце статьи есть ссылка на он-лайн конвертер. В общем шаблоне /opt/share/www/include/0-page.tmpl используется параметр <RRD::SETVAR ADDOPT5 --lazy>, необходимый для того, чтобы каждый раз не пересоздавать изображения с графиками, если информация в RRD файле не менялась. При отладке (например, подборе цвета линий на графике или изменении шрифтов) можно данный параметр изменить на заглушку <RRD::SETVAR ADDOPT5 --title=''>. В этом случае картинка будет перерисовываться каждый раз при открытии страницы со статистикой. Делаем исполняемым скрипт формирования индексной страницы и запускаем его для создания файла index.cgi: chmod +x /opt/share/www/scripts/index.sh /opt/share/www/scripts/index.sh Если потребуется изменить дизайн индексной страницы, то его придется изменять непосредственно в скрипте. Выносить HTML-код в отдельный файл пока не планировал. Открываем сайт со статистикой в браузере по адресу http://адрес_роутера:8000/ Архив (конфигурация, шаблоны, скрипт для создания индексной страницы): files.zip Список используемой литературы: Официальная страница collectd Collectd Wiki Официальная страница rrdtool Он-лайн конвертер для обратной польской записи Названия и коды цветов в HTML, CSS и JavaScript Edited February 27, 2017 by gvan Collectd включен в официальный репозиторий. В связи с этим инструкция изменена. 7 Quote Link to comment Share on other sites More sharing options...
Equalizer Posted March 31, 2018 Share Posted March 31, 2018 (edited) Доброго времени суток, все сделал по инструкции, завелось, работает. НО по адресу http://192.168.1.1:8000/ лишь период работоспособности отображается. Подскажите, куда копать? Keenetic Giga II Версия NDMS 2.12.A.4.0-9 Edited March 31, 2018 by Equalizer Quote Link to comment Share on other sites More sharing options...
gvan Posted April 2, 2018 Author Share Posted April 2, 2018 В 01.04.2018 в 00:06, Equalizer сказал: Доброго времени суток, все сделал по инструкции, завелось, работает. НО по адресу http://192.168.1.1:8000/ лишь период работоспособности отображается. Подскажите, куда копать? Индексный файл index.rcgi создает скрипт scripts/index.sh. Он его делает на основе файлов *.rcgi в каталоге www. Мало исходных данных. Соответственно, не могу понять, в чем причина. Сколько файлов .rcgi в каталоге www? Они (и шаблоны) откорректированы должным образом? index.sh запускали? Никаких ошибок при его запуске не возникало? Сам index.rcgi содержит какие-то ссылки кроме ссылки на статистику работоспособности? Или же ссылок много, но они не открываются/не работают? Quote Link to comment Share on other sites More sharing options...
Equalizer Posted April 2, 2018 Share Posted April 2, 2018 @gvan в каталоге все те же файлы, что были в примере (24 штуки), плюс еще два файла 570-home-VLAN.rcgi и 580-home-VLAN-pkt.rcgi (эти я под свои нужды сделал уже). Откорректированы должным образом. Этот вывод я делаю, исходя из того, что если ходить по прямым ссылкам вида http://192.168.1.1:8000/120-cpu.rcgi, все прекрасно открывается и отображается index.sh запускал, ошибок в консоли нет, единственное, что проц сразу загружается на ~50% и висит так до тех пор, пока не отменить ctrl+с (ждал и 10, и 20 минут, и 30, и 40) Внутри файла index.rcgi лишь: Статистика системы img { border: 2px solid #191970; } uptime.rrd"> {Период работоспособности} На самом деле это не столь критично, потому что я наделал себе закладок нужных параметров по прямым ссылкам. Но все же было бы интересно разобраться, в чем именно проблема. Спортивный интерес. Quote Link to comment Share on other sites More sharing options...
gvan Posted April 2, 2018 Author Share Posted April 2, 2018 19 минут назад, Equalizer сказал: index.sh запускал, ошибок в консоли нет, единственное, что проц сразу загружается на ~50% и висит так до тех пор, пока не отменить ctrl+с (ждал и 10, и 20 минут, и 30, и 40) Ну, тогда понятно, что проблема в скрипте. Он, видимо, где-то подвисает в цикле. При обычном запуске у меня отрабатывает задачу за пару секунд. Посмотрю, в чем может быть причина. Quote Link to comment Share on other sites More sharing options...
gvan Posted April 2, 2018 Author Share Posted April 2, 2018 На первый взгляд циклиться там не на чем. Но все же... Нужно попробовать добавить в фрагмент кода скрипта index.sh отладочную строку echo "$file" в следующем месте: for file in *.rcgi do echo "$file" if [ -f $file -a "$file" != "$IFILE" ] По крайней мере будет понятно, если он сразу "закапывается" на самом первом файле или же где-то дальше происходит сбой. Quote Link to comment Share on other sites More sharing options...
Equalizer Posted April 2, 2018 Share Posted April 2, 2018 @gvan не знаю, важно или нет, но у меня Entware, взятый отсюда Он перекочевал на текущую прошивку ещё с релиза 2.06. То есть, если верить написанному, это не Entware-3x. Хотя, я постоянно слежу за обновлениями и обновляю все компоненты и пакеты. Quote Link to comment Share on other sites More sharing options...
Equalizer Posted April 2, 2018 Share Posted April 2, 2018 21 минуту назад, gvan сказал: На первый взгляд циклиться там не на чем. Но все же... Нужно попробовать добавить в фрагмент кода скрипта index.sh отладочную строку echo "$file" в следующем месте: for file in *.rcgi do echo "$file" if [ -f $file -a "$file" != "$IFILE" ] По крайней мере будет понятно, если он сразу "закапывается" на самом первом файле или же где-то дальше происходит сбой. ~ # /opt/share/www/scripts/index.sh 110-uptime.rcgi И дальше все то же - загрузка ЦП и висяк до отмены. В самом файле нового ничего не добавилось Quote Link to comment Share on other sites More sharing options...
Equalizer Posted April 2, 2018 Share Posted April 2, 2018 Размеры у файлов разные - обычный index.rcgi весит 1,2 Мб, после изменения скрипта - 423,1 КБ, а еще раньше был и 12, и 27 Мб Quote Link to comment Share on other sites More sharing options...
gvan Posted April 2, 2018 Author Share Posted April 2, 2018 (edited) 33 минуты назад, Equalizer сказал: 110-uptime.rcgi А в файле 0-page.tmpl есть строка <RRD::INCLUDE <RRD::GETVAR TMPLNAME>? Ее не удалили случайно? За ней перевод строки на новую строку есть? Дело в том, что скрипт обрабатывает файл до того, как встретит эту строку. Если ее нет, то как раз подвиснет, т.к. никакой защиты от этого не делал. awk установлен? Основная логика обработки файлов на нем висит. Хотя, если бы не был установлен, то скрипт бы сразу ругался на это. Навскидку, пока идей нет. Если есть желание все-таки автоматизировать процесс создания индексного файла, то могу покопаться с целью отладки. Но нужен будет временный shell-доступ на систему. Или, если есть навыки программирования, то можно будет самому в коде добавить вывод отладочной информации в промежуточных стадиях. И, если файл index.rcgi разрастается, пока не прибьешь по ctrl+c скрипт, то в нем может быть то, что натолкнет меня на мысль. Если есть возможность, то приложите сюда этот огрызок после пяти секунд запуска до нажатия на ctrl+c. Edited April 2, 2018 by gvan Quote Link to comment Share on other sites More sharing options...
Equalizer Posted April 2, 2018 Share Posted April 2, 2018 23 минуты назад, gvan сказал: А в файле 0-page.tmpl есть строка <RRD::INCLUDE <RRD::GETVAR TMPLNAME>? Ее не удалили случайно? За ней перевод строки на новую строку есть? Есть 24 минуты назад, gvan сказал: Навскидку, пока идей нет. Если есть желание все-таки автоматизировать процесс создания индексного файла, то могу покопаться с целью отладки. Но нужен будет временный shell-доступ на систему. Я понимаю, что здесь все на добровольных началах, и Вы не обязаны тратить свое время. Опять же повторюсь, основной функционал работает, затык лишь в индексном файле. Но если у Вас есть желание, я всегда готов помочь. Навыков программирования у меня, к сожалению, нет. А файлики прикреплены ниже. Index2.rcgi - самый свежий index.rcgi index1.rcgi index2.rcgi Quote Link to comment Share on other sites More sharing options...
Equalizer Posted April 2, 2018 Share Posted April 2, 2018 А вот и сам 0-page.tmpl 0-page.tmpl Quote Link to comment Share on other sites More sharing options...
gvan Posted April 2, 2018 Author Share Posted April 2, 2018 Вот этот скрипт index.sh.new нужно попробовать (только нужно сделать его исполняемым) и созданный им файл index.rcgi выложить сюда. Добавил прерывание, если файл не может прочитаться, а также вывод дебаг-информации. Такое ощущение, что по какой-то причине не может нормально прочитать 0-page.tmpl Quote Link to comment Share on other sites More sharing options...
Equalizer Posted April 2, 2018 Share Posted April 2, 2018 @gvan Цитата ~ # chmod +x /opt/share/www/scripts/index.sh ~ # /opt/share/www/scripts/index.sh Start creating index.rcgi... Doing head... Doing links... 110-uptime.rcgi 120-cpu.rcgi 130-la.rcgi 140-mem.rcgi 210-disk-opkg-ext2.rcgi 220-disk-eq.rcgi 310-sda-traf.rcgi 320-sda-ops.rcgi 330-sdb-traf.rcgi 340-sdb-ops.rcgi 410-if0.rcgi 420-if0-pkt.rcgi 430-if1.rcgi 440-if1-pkt.rcgi 450-if2.rcgi 460-if2-pkt.rcgi 470-if3.rcgi 480-if3-pkt.rcgi 510-wifi.rcgi 520-wifi-pkt.rcgi 530-pppoe.rcgi 540-pppoe-pkt.rcgi 550-home.rcgi 560-home-pkt.rcgi 570-home-VLAN.rcgi 580-home-VLAN-pkt.rcgi index.rcgi Doing bootom... Finished ~ # Успех. Скрипт выполнился в течение нескольких секунд. НО выглядит это все теперь вот так, как на скрине. То есть, скрипт собрал все параметры в кучу и впихнул их на одну страницу) index.rcgi Quote Link to comment Share on other sites More sharing options...
gvan Posted April 2, 2018 Author Share Posted April 2, 2018 31 минуту назад, Equalizer сказал: Успех. Да, так и должно быть. Строчку awk -v file=$file -v DEBUG=1 'BEGIN нужно поменять на awk -v file=$file -v DEBUG=0 'BEGIN и запустить его заново. Quote Link to comment Share on other sites More sharing options...
gvan Posted April 2, 2018 Author Share Posted April 2, 2018 (edited) Хотя не нужно. Я вижу теперь в вашем файле, что при чтении шаблона возникает ошибка: DEBUG: <RRD::INCLUDE include/0-page.tmpl> DEBUG: READ STATUS: -1 Т.е. он не может прочитать файл include/0-page.tmpl по указанному пути. Он точно там лежит и есть права на чтение? P.S.: Неправильно awk обрабатывает регулярное выражение. Поэтому имя файла получается неправильное. Возможно, версии awk у нас не совпадают, поэтому разное поведение. Еще посмотрю, может что придет на ум Edited April 2, 2018 by gvan Quote Link to comment Share on other sites More sharing options...
Equalizer Posted April 2, 2018 Share Posted April 2, 2018 Цитата ~ # cd //opt/share/www/include/ /opt/share/www/include # ls 0-head.tmpl cpu.tmpl if.tmpl mem.tmpl 0-page.tmpl disktraf.tmpl ifpkt.tmpl uptime.tmpl 0-tail.tmpl diskvol.tmpl la.tmpl /opt/share/www/include # ls -l -rwxrw-rw- 1 root root 214 Nov 21 2016 0-head.tmpl -rwxrw-rw- 1 root root 1267 Nov 28 2016 0-page.tmpl -rwxrw-rw- 1 root root 16 Nov 21 2016 0-tail.tmpl -rwxrw-rw- 1 root root 2540 Nov 23 2016 cpu.tmpl -rwxrw-rw- 1 root root 1262 Nov 23 2016 disktraf.tmpl -rwxrw-rw- 1 root root 1409 Nov 23 2016 diskvol.tmpl -rwxrw-rw- 1 root root 1317 Nov 23 2016 if.tmpl -rwxrw-rw- 1 root root 2823 Nov 23 2016 ifpkt.tmpl -rwxrw-rw- 1 root root 1749 Nov 23 2016 la.tmpl -rwxrw-rw- 1 root root 2094 Nov 23 2016 mem.tmpl -rwxrw-rw- 1 root root 1101 Nov 22 2016 uptime.tmpl /opt/share/www/include # Quote Link to comment Share on other sites More sharing options...
gvan Posted April 2, 2018 Author Share Posted April 2, 2018 Если в дебажной версии скрипта строку tmplfile=gensub(/.+\s+(.+)>.*/, "\\1", 1); поменять на tmplfile=gensub(/.+\s+(.+)>/, "\\1", 1); ничего не изменится? И сюда просьба выложить полученный index.rcgi. Quote Link to comment Share on other sites More sharing options...
Equalizer Posted April 2, 2018 Share Posted April 2, 2018 Результат тот же, файл приложил. Так же приложил index.sh index.rcgi index.sh Quote Link to comment Share on other sites More sharing options...
gvan Posted April 2, 2018 Author Share Posted April 2, 2018 Явно неправильно отрабатывается регулярное выражение. Т.е. в первой строке DEBUG должно получиться на выходе DEBUG: include/0-page.tmpl, а получается оригинальная строка без изменений. У меня воспроизвести баг не получается на моей системе. Можно еще попробовать в коде скрипта заменить awk на gawk (если его нет, то установить через opkg), т.к. по умолчанию используется awk из busybox. И если entware еще от версии прошивки 2.06, то возможно какая-то старая версия используется. Хотя все должно по идее и со старой версией awk обрабатываться аналогично. Quote Link to comment Share on other sites More sharing options...
TheBB Posted April 2, 2018 Share Posted April 2, 2018 В Entware-Keenetic busybox версии 1.25, против 1.27 в Entware (бывшей Entware-3x) Quote Link to comment Share on other sites More sharing options...
Equalizer Posted April 2, 2018 Share Posted April 2, 2018 4 часа назад, gvan сказал: Можно еще попробовать в коде скрипта заменить awk на gawk (если его нет, то установить через opkg), т.к. по умолчанию используется awk из busybox. И если entware еще от версии прошивки 2.06, то возможно какая-то старая версия используется. Хотя все должно по идее и со старой версией awk обрабатываться аналогично. Ваш совет помог, спасибо. Взял исходный код скрипта (не debug) и использовал gawk вместо awk. Скрипт выполняется за пару секунд, ничего не висит, и индекс получается, как надо. Получившийся скрин и скрипт прикреплю ниже, может кому понадобится. index.sh Quote Link to comment Share on other sites More sharing options...
gvan Posted April 3, 2018 Author Share Posted April 3, 2018 Возможность редактирования первого поста у меня по какой-то причине пропала. Написал запрос о восстановлении доступа. Пока выкладываю обновленный архив с исправленным скриптом в этом посте (вызов awk заменен на gawk, добавлено прерывание обработки файла, если он не может прочитаться): files.zip 2 Quote Link to comment Share on other sites More sharing options...
gvan Posted April 3, 2018 Author Share Posted April 3, 2018 Также для себя делал "рисование" картинок для клиентов wi-fi. Используется плагин exec для collectd и скрипт, который "висит" в памяти и периодически обновляет данные по wi-fi клиентам через команду "ndmq -p 'show associations' -x". Для ориентировочного анализа активности wi-fi клиентов мне хватает. Правда минус в том, что ndmq в журнал системы для каждого вызова этой команды бросает сообщение. Еще шаблон для wi-fi принтера дополнительно делал (количество страниц всего, напечатано, осталось % картриджа). Но это в принципе не сложно сделать самостоятельно, если принтер поддерживает SNMP протокол. Если есть интерес, то могу добавить информацию по этим задачам. Quote Link to comment Share on other sites More sharing options...
Equalizer Posted April 3, 2018 Share Posted April 3, 2018 Да, напишите, пожалуйста, было бы интересно получать и эту статистику Quote Link to comment Share on other sites More sharing options...
gvan Posted April 3, 2018 Author Share Posted April 3, 2018 (edited) Дополнение к первому посту в теме: "Сбор и отрисовка данных по сетевому принтеру на примере Samsung M2070W" Дано: Сетевой принтер, подключенный в сеть keenetic по витой паре или посредством wi-fi, IP-адрес принтера, например, 192.168.1.20. Сетевой принтер должен поддерживать протокол SNMP, и необходимые настройки для его включения на принтере предварительно выполнены. С помощью snmpwalk опрашиваем принтер и определяем, в каких OID "лежит" нужная нам информация: snmpwalk -c public 192.168.1.20 . >/opt/tmp/printer.txt В файле /opt/share/collectd/custom-types.db добавляем необходимые типы данных. У меня это уровень картриджа в процентах, количество напечатанных страниц, сколько всего можно напечатать страниц на этом картридже и работа в часах (эту статистику собираю, но не рисую). m2070w cartlevel:GAUGE:0:U, cartprintedpages:GAUGE:0:U, cartallowedpages:GAUGE:0:U, transfrollerhours:GAUGE:0:U Далее в конфигурационном файле /opt/etc/collectd.conf добавляем тип данных, само устройство и что с него "собирать": <Data "m2070w"> #m2070w cartlevel:GAUGE:0:U, cartprintedpages:GAUGE:0:U, cartallowedpages:GAUGE:0:U, transfrollerhours:GAUGE:0:U Type "m2070w" Table false Instance "" Values "1.3.6.1.4.1.236.11.5.11.53.61.5.2.1.13.1.1" "1.3.6.1.4.1.236.11.5.11.53.61.5.2.1.14.1.1" "1.3.6.1.2.1.43.11.1.1.8.1.1" "1.3.6.1.4.1.236.11.5.1.1.3.27.0" </Data> <Host "m2070w"> Address "192.168.1.20" Version 1 Community "public" Collect "m2070w" Interval 180 </Host> Перезапускаем collectd и через несколько минут убеждаемся, что данные по принтеру собираются в файле /opt/var/lib/collectd/rrd/m2070w/snmp/m2070w.rrd Далее добавляем CGI-скрипт и шаблон (архив printer.zip) для отображения статистики. Редактируем их, если требуются. Edited April 3, 2018 by gvan 1 Quote Link to comment Share on other sites More sharing options...
gvan Posted April 4, 2018 Author Share Posted April 4, 2018 Дополнение к первому посту: Сбор и отображение статистики для клиентов wi-fi. Сбор данных производится через shell-скрипт посредством выполнения в нем команды ndmq -p 'show associations' -x . Работа скрипта обеспечивается плагином exec для collectd. Устанавливаем модуль exec и gawk (если еще не установлен): opkg install collectd-mod-exec gawk Размещаем из архива wifi.zip файлы по указанным каталогам (скрипт для модуля exec, CGI-скрипт для отображения статистики и шаблон для wi-fi). Редактирование CGI-скриптов (если устройств будет несколько) и шаблона под свое окружением выполним позже. В файле /opt/etc/collectd.conf добавляем загрузку модуля exec и запуск скрипта для сбора статистики wi-fi клиентов: LoadPlugin exec <Plugin exec> Exec "nobody" "/opt/etc/collectd/scripts/wifi-clients" </Plugin> Делаем указанный выше скрипт исполняемым файлом. chmod +x /opt/etc/collectd/scripts/wifi-clients Добавляем в систему пользователя nobody (если его еще нет), прописывая следующую строку в файл /opt/etc/passwd: nobody:*:65534:65534:user "nobody"::/opt/bin/nologin Перезапускаем collectd и примерно через 10 минут в каталоге /opt/var/lib/collectd/rrd/APG3/wifi (у вас имя будет отличаться в зависимости от названия роутера) должны появиться файлы для активных клиентов wi-fi. Проверяем логи collectd для выявления возможных ошибок, если вдруг что-то не заработало. Далее создаем необходимое количество CGI-скриптов для wi-fi клиентов, для которых планируем отображать статистику (на основе файла 710-notebook.rcgi). В них меняем путь до файлов статистики, название, MAC-адреса клиентов. Запускаем скрипт index.sh для обновления общего индексного файла статистики. Quote Link to comment Share on other sites More sharing options...
Equalizer Posted July 15, 2018 Share Posted July 15, 2018 (edited) @gvan доброго дня. Отпала надобность в сборе статистики с PPPoE, грохнул его в opt\share\www\, но система упорно пытается собрать с него статистику, из-за чего лог забивается однотипными строчками о невозможности обновления. Подскажите, пожалуйста, как прибить окончательно? [2018-07-15 12:43:54] [warning] rrdtool plugin: rrd_update_r failed: /opt/var/lib/collectd/rrd/localhost/snmp/if_octets-ucast-RT.rrd: illegal attempt to update using time 1531647834 when last update time is 1531647834 (minimum one second step) Edited July 15, 2018 by Equalizer Quote Link to comment Share on other sites More sharing options...
gvan Posted August 6, 2018 Author Share Posted August 6, 2018 В 15.07.2018 в 13:05, Equalizer сказал: Отпала надобность в сборе статистики с PPPoE, грохнул его в opt\share\www\, но система упорно пытается собрать с него статистику, из-за чего лог забивается однотипными строчками о невозможности обновления. Подскажите, пожалуйста, как прибить окончательно? Сбор статистики определяется не этим каталогом, а конфигом collectd. В данном каталоге находятся только шаблоны для отображения статистики. В самом конфиге collectd сбор данных с интерфейсов (в т.ч. и PPPoE) выполняется по шаблону. Т.е. для отключения сбора данных по конкретному интерфейсу его нужно будет добавить в правило Ignore. После этого удалить соответствующие файлы rrd в /opt/var/lib/collectd/rrd/. Либо вообще их не трогать - пусть данные пишутся (но не нужно было вручную удалять файлы rrd), но сами шаблоны отображения данных убрать. 1 Quote Link to comment Share on other sites More sharing options...
Equalizer Posted September 25, 2018 Share Posted September 25, 2018 @gvanи снова прошу Вашей помощи) Переставил entware начисто отсюда. Вроде бы всё заводится, но по адресу 192.168.1.1:8000 тишина. ERR_CONNECTION_REFUSED. Подскажите, пожалуйста, куда копать? Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.