Jump to content

Cбор и отображение статистики роутера на Entware-3x с использованием collectd и rrdcgi


Recommended Posts

Collectd - это простой и легкий сервис, который собирает данные о производительности системы и приложений и предоставляет механизмы для хранения полученных значений в различных форматах, например в RRD файлах. Сбор статистики производится с помощью подключаемых плагинов. В данном примере будет рассмотрена возможность использования плагина для работы с SNMP (получения данных со встроенного в роутер SNMP-сервера), плагина для работы с дисковой подсистемой и плагина для записи полученных данных в RRD БД.

Задача collectd  только собирать данные. Отрисовка графиков производится с помощью rrdcgi, который позволяет использовать некое подобие шаблонов, упрощающих формирование html-файлов и облегчающих процесс их настройки. Создание графиков выполняется только по запросу пользователя (при обращении к веб-скриптам), соответственно, нагрузка на систему незначительная.

До графических возможностей netdata, недавно включенного в состав готовых пакетов, конечно, далеко, но здесь в первую очередь обеспечивается задача долговременного хранения данных статистики.

Примеры отображения полученной информации:

Скрытый текст

 

Индексная страница с динамически формирующимися превьюшками собираемой статистики

index.png

Некоторые примеры графиков

cpu.pngla.pngdisktraf.pngif0pkt.png

Этим возможности программы не ограничиваются. Существует дополнительные плагины, открывающие другие варианты сбора статистики (в том числе с определенных сервисов). Например, плагин 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

Список используемой литературы:

  1. Официальная страница collectd
  2. Collectd Wiki 
  3. Официальная страница rrdtool
  4. Он-лайн конвертер для обратной польской записи
  5. Названия и коды цветов в HTML, CSS и JavaScript
Edited by gvan
Collectd включен в официальный репозиторий. В связи с этим инструкция изменена.
  • Thanks 7
Link to comment
Share on other sites

  • 1 year later...

Доброго времени суток, все сделал по инструкции, завелось, работает. НО по адресу http://192.168.1.1:8000/ лишь период работоспособности отображается. Подскажите, куда копать?

Keenetic Giga II Версия NDMS 2.12.A.4.0-9

Edited by Equalizer
Link to comment
Share on other sites

В 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 содержит какие-то ссылки кроме ссылки на статистику работоспособности? Или же ссылок много, но они не открываются/не работают?

Link to comment
Share on other sites

@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">  {Период работоспособности}

На самом деле это не столь критично, потому что я наделал себе закладок нужных параметров по прямым ссылкам. Но все же было бы интересно разобраться, в чем именно проблема. Спортивный интерес.

Link to comment
Share on other sites

19 минут назад, Equalizer сказал:

index.sh запускал, ошибок в консоли нет, единственное, что проц сразу загружается на ~50% и висит так до тех пор, пока не отменить ctrl+с (ждал и 10, и 20 минут, и 30, и 40)

Ну, тогда понятно, что проблема в скрипте. Он, видимо, где-то подвисает в цикле.

При обычном запуске у меня отрабатывает задачу за пару секунд. Посмотрю, в чем может быть причина.

Link to comment
Share on other sites

На первый взгляд циклиться там не на чем. Но все же...

Нужно попробовать добавить в фрагмент кода скрипта index.sh отладочную строку echo "$file" в следующем месте:

for file in *.rcgi                                                                                                                               
    do                                                                                                                                          
        echo "$file"                                                                                                                            
        if [ -f  $file -a "$file" != "$IFILE" ]

По крайней мере будет понятно, если он сразу "закапывается" на самом первом файле или же где-то дальше происходит сбой.

Link to comment
Share on other sites

@gvan не знаю, важно или нет, но у меня Entware, взятый отсюда 

 

Он перекочевал на текущую прошивку ещё с релиза 2.06.

То есть, если верить написанному, это не Entware-3x. Хотя, я постоянно слежу за обновлениями и обновляю все компоненты и пакеты.

Link to comment
Share on other sites

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

И дальше все то же - загрузка ЦП и висяк до отмены. В самом файле нового ничего не добавилось

Link to comment
Share on other sites

33 минуты назад, Equalizer сказал:

110-uptime.rcgi

А в файле 0-page.tmpl есть строка <RRD::INCLUDE <RRD::GETVAR TMPLNAME>? Ее не удалили случайно? За ней перевод строки на новую строку есть?

Дело в том, что скрипт обрабатывает файл до того, как встретит эту строку. Если ее нет, то как раз подвиснет, т.к. никакой защиты от этого не делал.

awk установлен? Основная логика обработки файлов на нем висит. Хотя, если бы не был установлен, то скрипт бы сразу ругался на это.

Навскидку, пока идей нет. Если есть желание все-таки автоматизировать процесс создания индексного файла, то могу покопаться с целью отладки. Но нужен будет временный shell-доступ на систему.

Или, если есть навыки программирования, то можно будет самому в коде добавить вывод отладочной информации в промежуточных стадиях.

И, если файл index.rcgi разрастается, пока не прибьешь по ctrl+c скрипт, то в нем может быть то, что натолкнет меня на мысль. Если есть возможность, то приложите сюда этот огрызок после пяти секунд запуска до нажатия на ctrl+c.

Edited by gvan
Link to comment
Share on other sites

23 минуты назад, gvan сказал:

А в файле 0-page.tmpl есть строка <RRD::INCLUDE <RRD::GETVAR TMPLNAME>? Ее не удалили случайно? За ней перевод строки на новую строку есть?

Есть

24 минуты назад, gvan сказал:

Навскидку, пока идей нет. Если есть желание все-таки автоматизировать процесс создания индексного файла, то могу покопаться с целью отладки. Но нужен будет временный shell-доступ на систему.

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

Навыков программирования у меня, к сожалению, нет. А файлики прикреплены ниже. Index2.rcgi - самый свежий

index.rcgi

index1.rcgi

index2.rcgi

Link to comment
Share on other sites

Вот этот скрипт index.sh.new нужно попробовать (только нужно сделать его исполняемым) и созданный им файл index.rcgi выложить сюда. Добавил прерывание, если файл не может прочитаться, а также вывод дебаг-информации.

Такое ощущение, что по какой-то причине не может нормально прочитать 0-page.tmpl

 

 

Link to comment
Share on other sites

@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
~ #

Успех. Скрипт выполнился в течение нескольких секунд. НО выглядит это все теперь вот так, как на скрине. То есть, скрипт собрал все параметры в кучу и впихнул их на одну страницу)

Снимок статистики.JPG

index.rcgi

Link to comment
Share on other sites

31 минуту назад, Equalizer сказал:

Успех.

Да, так и должно быть. 

Строчку awk -v file=$file -v DEBUG=1 'BEGIN нужно поменять на awk -v file=$file -v DEBUG=0 'BEGIN 

и запустить его заново.

Link to comment
Share on other sites

Хотя не нужно. Я вижу теперь в вашем файле, что при чтении шаблона возникает ошибка:

DEBUG: <RRD::INCLUDE include/0-page.tmpl>
DEBUG: READ STATUS: -1

Т.е. он не может прочитать файл include/0-page.tmpl по указанному пути. Он точно там лежит и есть права на чтение?

P.S.: Неправильно awk обрабатывает регулярное выражение. Поэтому имя файла получается неправильное. Возможно, версии awk у нас не совпадают, поэтому разное поведение.

Еще посмотрю, может что придет на ум :)

Edited by gvan
Link to comment
Share on other sites

Цитата

~ # 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 #
 

 

Link to comment
Share on other sites

Если в дебажной версии скрипта строку tmplfile=gensub(/.+\s+(.+)>.*/, "\\1", 1); поменять на tmplfile=gensub(/.+\s+(.+)>/, "\\1", 1); 

ничего не изменится? И сюда просьба выложить полученный index.rcgi.

Link to comment
Share on other sites

Явно неправильно отрабатывается регулярное выражение. Т.е. в первой строке DEBUG должно получиться на выходе DEBUG: include/0-page.tmpl, а получается оригинальная строка без изменений.

У меня воспроизвести баг не получается на моей системе.

Можно еще попробовать в коде скрипта заменить awk на gawk (если его нет, то установить через opkg), т.к. по умолчанию используется awk из busybox. И если entware еще от версии прошивки 2.06, то возможно какая-то старая версия используется. Хотя все должно по идее и со старой версией awk обрабатываться аналогично.

 

Link to comment
Share on other sites

4 часа назад, gvan сказал:

Можно еще попробовать в коде скрипта заменить awk на gawk (если его нет, то установить через opkg), т.к. по умолчанию используется awk из busybox. И если entware еще от версии прошивки 2.06, то возможно какая-то старая версия используется. Хотя все должно по идее и со старой версией awk обрабатываться аналогично.

Ваш совет помог, спасибо. Взял исходный код скрипта (не debug) и использовал gawk вместо awk. Скрипт выполняется за пару секунд, ничего не висит, и индекс получается, как надо.

Получившийся скрин и скрипт прикреплю ниже, может кому понадобится.

Снимок статистики.PNG

index.sh

Link to comment
Share on other sites

Возможность редактирования первого поста у меня по какой-то причине пропала. Написал запрос о восстановлении доступа.

Пока выкладываю обновленный архив с исправленным скриптом в этом посте (вызов awk заменен на gawk, добавлено прерывание обработки файла, если он не может прочитаться):

files.zip

  • Upvote 2
Link to comment
Share on other sites

Также для себя делал "рисование" картинок для клиентов wi-fi.

Используется плагин exec для collectd и скрипт, который "висит" в памяти и периодически обновляет данные по wi-fi клиентам через команду "ndmq -p 'show associations' -x".

Для ориентировочного анализа активности wi-fi клиентов мне хватает. Правда минус в том, что ndmq в журнал системы для каждого вызова этой команды бросает сообщение.

Еще шаблон для wi-fi принтера дополнительно делал (количество страниц всего, напечатано, осталось % картриджа). Но это в принципе не сложно сделать самостоятельно, если принтер поддерживает SNMP протокол.

Если есть интерес, то могу добавить информацию по этим задачам.

Link to comment
Share on other sites

Дополнение к первому посту в теме: "Сбор и отрисовка данных по сетевому принтеру на примере 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 by gvan
  • Upvote 1
Link to comment
Share on other sites

Дополнение к первому посту: Сбор и отображение статистики для клиентов 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 для обновления общего индексного файла статистики.

Link to comment
Share on other sites

  • 3 months later...

@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 by Equalizer
Link to comment
Share on other sites

  • 3 weeks later...
В 15.07.2018 в 13:05, Equalizer сказал:

Отпала надобность в сборе статистики с PPPoE, грохнул его в opt\share\www\, но система упорно пытается собрать с него статистику, из-за чего лог забивается  однотипными строчками о невозможности обновления. Подскажите, пожалуйста, как прибить окончательно?

Сбор статистики определяется не этим каталогом, а конфигом collectd. В данном каталоге находятся только шаблоны для отображения статистики.

В самом конфиге collectd сбор данных с интерфейсов (в т.ч. и PPPoE) выполняется по шаблону. Т.е. для отключения сбора данных по конкретному интерфейсу его нужно будет добавить в правило Ignore. После этого удалить соответствующие файлы rrd в /opt/var/lib/collectd/rrd/. Либо вообще их не трогать - пусть данные пишутся (но не нужно было вручную удалять файлы rrd), но сами шаблоны отображения данных убрать.

  • Thanks 1
Link to comment
Share on other sites

  • 1 month later...

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...