Jump to content

gvan

Forum Members
  • Posts

    210
  • Joined

  • Days Won

    2

Everything posted by gvan

  1. Логи в entware лежат по пути /opt/var/log. Файл messages тоже находится там. Если он перестал обновляться, то настройка ротации логов вряд ли виновата. Для проверки можно сделать рестарт службы syslog-ng и посмотреть, станут ли в него добавляться новые данные. Если нет, то вопрос следует задать в соответствующей теме (ссылка есть в первом сообщении).
  2. Сам сервис запускается через watchguard скрипт collectdmon. Соответственно, предполагаю, что из-за ошибок в конфиге/окружении collectd нормально не стартует, а collectdmon пытается его несколько раз перезапустить. Смотрите, конфиг на наличие ошибок. Пробуйте запустить collectd вручную: /opt/sbin/collectd и смотреть на терминале или в логе ошибки.
  3. Скорее всего, что-то не так с http-сервером. Какой устанавливали и настраивали? Как в инструкции - lighttpd? Нужно проверить, реально ли он запускается. Он также должен писать лог в /opt/var/log/lighttpd, если в его конфиге включена опция server.errorlog = "/opt/var/log/lighttpd/error.log" Возможно, для этого также потребуется включить службу syslong-ng (информация есть в каталоге готовых решений).
  4. Сбор статистики определяется не этим каталогом, а конфигом collectd. В данном каталоге находятся только шаблоны для отображения статистики. В самом конфиге collectd сбор данных с интерфейсов (в т.ч. и PPPoE) выполняется по шаблону. Т.е. для отключения сбора данных по конкретному интерфейсу его нужно будет добавить в правило Ignore. После этого удалить соответствующие файлы rrd в /opt/var/lib/collectd/rrd/. Либо вообще их не трогать - пусть данные пишутся (но не нужно было вручную удалять файлы rrd), но сами шаблоны отображения данных убрать.
  5. Я об этом уже давно писал. Прошло полгода. Ставьте последнюю версию alreader и будет все нормально работать. Удалил уже, ибо все равно медленно для меня работала на роутере, да и для уменьшения БД пришлось урезать текстовую информацию (описание найденных книг). Думал попробовать mysql БД, но потом нашел для себя альтернативный вариант (ниже в оффтопе есть пример, или в крайнем случае можно использовать tor на том же самом роутере).
  6. Дополнение к первому посту: Сбор и отображение статистики для клиентов 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 для обновления общего индексного файла статистики.
  7. Дополнение к первому посту в теме: "Сбор и отрисовка данных по сетевому принтеру на примере 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) для отображения статистики. Редактируем их, если требуются.
  8. Также для себя делал "рисование" картинок для клиентов wi-fi. Используется плагин exec для collectd и скрипт, который "висит" в памяти и периодически обновляет данные по wi-fi клиентам через команду "ndmq -p 'show associations' -x". Для ориентировочного анализа активности wi-fi клиентов мне хватает. Правда минус в том, что ndmq в журнал системы для каждого вызова этой команды бросает сообщение. Еще шаблон для wi-fi принтера дополнительно делал (количество страниц всего, напечатано, осталось % картриджа). Но это в принципе не сложно сделать самостоятельно, если принтер поддерживает SNMP протокол. Если есть интерес, то могу добавить информацию по этим задачам.
  9. Возможность редактирования первого поста у меня по какой-то причине пропала. Написал запрос о восстановлении доступа. Пока выкладываю обновленный архив с исправленным скриптом в этом посте (вызов awk заменен на gawk, добавлено прерывание обработки файла, если он не может прочитаться): files.zip
  10. Явно неправильно отрабатывается регулярное выражение. Т.е. в первой строке DEBUG должно получиться на выходе DEBUG: include/0-page.tmpl, а получается оригинальная строка без изменений. У меня воспроизвести баг не получается на моей системе. Можно еще попробовать в коде скрипта заменить awk на gawk (если его нет, то установить через opkg), т.к. по умолчанию используется awk из busybox. И если entware еще от версии прошивки 2.06, то возможно какая-то старая версия используется. Хотя все должно по идее и со старой версией awk обрабатываться аналогично.
  11. Если в дебажной версии скрипта строку tmplfile=gensub(/.+\s+(.+)>.*/, "\\1", 1); поменять на tmplfile=gensub(/.+\s+(.+)>/, "\\1", 1); ничего не изменится? И сюда просьба выложить полученный index.rcgi.
  12. Хотя не нужно. Я вижу теперь в вашем файле, что при чтении шаблона возникает ошибка: DEBUG: <RRD::INCLUDE include/0-page.tmpl> DEBUG: READ STATUS: -1 Т.е. он не может прочитать файл include/0-page.tmpl по указанному пути. Он точно там лежит и есть права на чтение? P.S.: Неправильно awk обрабатывает регулярное выражение. Поэтому имя файла получается неправильное. Возможно, версии awk у нас не совпадают, поэтому разное поведение. Еще посмотрю, может что придет на ум
  13. Да, так и должно быть. Строчку awk -v file=$file -v DEBUG=1 'BEGIN нужно поменять на awk -v file=$file -v DEBUG=0 'BEGIN и запустить его заново.
  14. Вот этот скрипт index.sh.new нужно попробовать (только нужно сделать его исполняемым) и созданный им файл index.rcgi выложить сюда. Добавил прерывание, если файл не может прочитаться, а также вывод дебаг-информации. Такое ощущение, что по какой-то причине не может нормально прочитать 0-page.tmpl
  15. А в файле 0-page.tmpl есть строка <RRD::INCLUDE <RRD::GETVAR TMPLNAME>? Ее не удалили случайно? За ней перевод строки на новую строку есть? Дело в том, что скрипт обрабатывает файл до того, как встретит эту строку. Если ее нет, то как раз подвиснет, т.к. никакой защиты от этого не делал. awk установлен? Основная логика обработки файлов на нем висит. Хотя, если бы не был установлен, то скрипт бы сразу ругался на это. Навскидку, пока идей нет. Если есть желание все-таки автоматизировать процесс создания индексного файла, то могу покопаться с целью отладки. Но нужен будет временный shell-доступ на систему. Или, если есть навыки программирования, то можно будет самому в коде добавить вывод отладочной информации в промежуточных стадиях. И, если файл index.rcgi разрастается, пока не прибьешь по ctrl+c скрипт, то в нем может быть то, что натолкнет меня на мысль. Если есть возможность, то приложите сюда этот огрызок после пяти секунд запуска до нажатия на ctrl+c.
  16. На первый взгляд циклиться там не на чем. Но все же... Нужно попробовать добавить в фрагмент кода скрипта index.sh отладочную строку echo "$file" в следующем месте: for file in *.rcgi do echo "$file" if [ -f $file -a "$file" != "$IFILE" ] По крайней мере будет понятно, если он сразу "закапывается" на самом первом файле или же где-то дальше происходит сбой.
  17. Ну, тогда понятно, что проблема в скрипте. Он, видимо, где-то подвисает в цикле. При обычном запуске у меня отрабатывает задачу за пару секунд. Посмотрю, в чем может быть причина.
  18. Индексный файл index.rcgi создает скрипт scripts/index.sh. Он его делает на основе файлов *.rcgi в каталоге www. Мало исходных данных. Соответственно, не могу понять, в чем причина. Сколько файлов .rcgi в каталоге www? Они (и шаблоны) откорректированы должным образом? index.sh запускали? Никаких ошибок при его запуске не возникало? Сам index.rcgi содержит какие-то ссылки кроме ссылки на статистику работоспособности? Или же ссылок много, но они не открываются/не работают?
  19. Для BACSTORDIR указываете путь, куда у вас подмонтирована сетевая папка. Если не подмонтирована к каталогу, то можно и напрямую по сетевому пути обратиться. А вот для BACFIRMDIR=ADATA:/backup/, скорее всего, не получится, т.к. фактически выполняется команда telnet роутера "copy flash:/firmware". А она ничего не "знает" о сетевых подключениях. Соответственно, самый просто вариант - сначала скопировать на диск, а потом добавить в скрипт команду перемещения записанного файла на сетевой диск.
  20. Проверил еще раз. Внимательно удалил collectd, всего его модули и зависимости. Поставил заново. Ошибок не было. Спасибо. Видимо, в предыдущий раз что-то упустил...
  21. Переустановил полностью пакет collectd и его плагины. Теперь всё работает. Модуль exec запускает скрипт, как и прежде. Единственно, при новой установке collectd вылезло следующее сообщение: Collected errors: * satisfy_dependencies_for: Cannot satisfy the following dependencies for collectd: * libip4tc * Но при этом сам пакет установился и работает. Не исключаю ситуации, что это какой-то мой локальный глюк, т.к. изначально collectd (когда его еще не было в пакетах) ставил самосборный и из локальных файлов. Возможно, остались какие-то "хвосты" в системе, т.к. entware-3x не переустанавливал с самого начала.
  22. Использую collectd и несколько плагинов для него. После последнего обновления от 25.12.2017 перестал работать плагин collectd-mod-exec. Т.е. он запускается и ошибок в логах никаких нет, но вот скрипты из конфига collectd для этого плагина не стартуют и в списке исполняемых не появляются. Кусок конфига collectd: LoadPlugin exec <Plugin exec> Exec "nobody" "/opt/etc/collectd/scripts/wifi-clients" </Plugin> С предыдущей версией collectd-mod-exec все работает, как прежде. Заменил файл /opt/lib/collectd/exec.so из бэкапа от прежней версии, проблем не наблюдаю. Скрипт запускается и статистику для collectd собирает: root@APG3:/opt/lib/collectd# ps|grep wifi|grep -v grep 5825 nobody 3568 S {wifi-clients} /opt/bin/sh /opt/etc/collectd/scripts/wifi-clients
  23. Это норма. Вернее у меня также. А что в этой строке? Установили unzip, как указано в инструкции? У меня эти строки такие: $config['shell_exec_unzip'] = TRUE; $config['shell_exec_cmd'] = '/opt/bin/unzip -p '; Остальные с директивой shell_exec_cmd закоментарены.
  24. Привожу корректировки по вопросу изменения инструкции в плане использования php7 и других ограничений entware: В инструкции по установке приложений через opkg php5 везде меняем на php7. Добавляем модуль php7-mod-mbstring (без него работать не будет). В /opt/etc/php.ini меняем значения max_execution_time=120, max_input_time=120, memory_limit=32M В /opt/etc/nginx/nginx.conf добавляем перед строкой "include fastcgi_params;" параметр "fastcgi_read_timeout 120;" В скрипт запуска php-fcgi меняем строку $BIN -b 127.0.0.1:$PORT (нам же не нужно чтобы сервис "слушал" на всех интерфейсах). Тоже самое можно проделать с nginx, оставив его только на интерфейсе локальной сети, если не планируем "выпускать" OPDS во внешнюю сеть. Пункт 3-4 в основном нужны будут если планируете создавать базу данных через приложенный скрипт load_inp.php. Т.к. выделяемой по умолчанию памяти для php и времени на исполнение скрипта не хватит. Также по какой-то причине на читалке Alreader OPDS нормально не работает. То ли у нее там по умолчанию маленькие таймауты, то ли OPDS не совсем корректный и "чистый" отдается. Поиск производится, но вот дальнейшие переходы по найденному не отрабатываются. Автор Alreader оперативно скорректировал алгоритм работы с OPDS. Теперь проблемы нет, но пока нужно ставить debug-версию. В FBReader также работает нормально.
  25. Да. Подкрутил индексы. Стало лучше. Теперь порядка 20 секунд поиск занимает. Но файл с базой книг и авторов в sqlite стал уже занимать порядка 200Мб. Возможно, для ускорения процесса стоит попробовать конвертнуть БД в mariadb (mysql). Но задача не совсем тривиальная, и неизвестно будет ли выигрыш по скорости.
×
×
  • Create New...