Page 13 of 17 FirstFirst ... 31112131415 ... LastLast
Results 181 to 195 of 242

Thread: Заменяем стандартный syslogd на syslog-ng

  1. #181
    Quote Originally Posted by brain-ripper View Post
    А каким образом включается/выключается Wi-Fi?
    Если скриптом, то, например можно добавить туда что-то типа "logger Wi-Fi turned on" или "logger Wi-Fi turned off". А если сам скрипт распечатывает результат исполнения в консоль, то "script | logger".
    Все это можно сделать как со стандартным логгером, так и с syslog-ng
    Для включения и выключения Wi-Fi применяю 2 скрипта, которые выводят информационные сообщения в консоль.
    /usr/local/sbin/wi-fi_on
    Code:
    #!/bin/sh
    wl radio on
    printf "Wi-Fi turned on"
    /usr/local/sbin/wi-fi_off
    Code:
    #!/bin/sh
    wl radio off
    printf "Wi-Fi turned off"
    Эти скрипты прописаны в crontab для включения/выключения Wi-Fi по расписанию в течение дня. Работает исправно.

    Также повесил на кнопку EZ Setup маршрутизатора (WL-500w) скрипт /usr/local/sbin/ez-setup, который переключает состояние Wi-Fi по нажатию кнопки.
    Code:
    #!/bin/sh 
    [ `wl isup` -eq 1 ] && /usr/local/sbin/wi-fi_off || /usr/local/sbin/wi-fi_on
    Тоже работает исправно.

    Но вот с логом что-то у меня не клеится. В конфигурационный файл syslog-ng с первой страницы я добавил такие строки:
    Code:
    destination wifistatuslog   { file("/opt/var/log/wifistatus.log"
    			  template("$HOUR:$MIN:$SEC $DAY-$MONTH-$YEAR (info|script|wifistatus) $MESSAGE\n")
        );
    };
    
    log { source(src); 
        destination(wifistatuslog); };
    Поскольку особо нечего фильтровать в выводе моих простых скриптов, то фильтров я не создавал. Или нужно? Если нужно, то по какому критерию детектировать мои скрипты?

    И еще попутный вопрос. Правильно ли я понимаю, что в этой части кода
    Code:
     destination mysyslog {
        file("/opt/var/log/syslog-ng.log"
    	owner("root")
    	group("root")
    	perm(0640)
    	template("$HOUR:$MIN:$SEC $DAY-$MONTH-$YEAR ($PRIORITY|$FACILITY|$PROGRAM) $MESSAGE\n")
        ); 
    };
    		    
    destination authwarnlog { 
        file("/opt/var/log/authwarn.log"
    	owner("root")
    	group("root")
    	perm(0640)
    	template("$HOUR:$MIN:$SEC $DAY-$MONTH-$YEAR ($PRIORITY|$FACILITY|$PROGRAM) $MESSAGE\n")
        ); 
    };
    "root" в поле "owner" (выделено красным) - это имя пользователя, используемое для входа на веб-интерфейс маршрутизатора и telnet на него? У меня оно изменено, потому в конфиге syslog-ng я его тоже заменил на свое. group("root") не нужно менять, как я понимаю.

  2. #182
    Quote Originally Posted by flanker View Post
    Но вот с логом что-то у меня не клеится. В конфигурационный файл syslog-ng с первой страницы я добавил такие строки:
    Не очень понятно, для чего используется именно syslog-ng - необходимо логировать события Wi-Fi именно в wifistatus.log, а не в системный лог? В ином случае достаточно стандартного логгера - как я говорил добавить в скрипты вызов "logger Wi-Fi turned on", "logger Wi-Fi turned off", или сами скрипты вызывать таким образом: "/usr/local/sbin/wi-fi_on | logger", "/usr/local/sbin/wi-fi_off | logger".

    Quote Originally Posted by flanker View Post
    Поскольку особо нечего фильтровать в выводе моих простых скриптов, то фильтров я не создавал. Или нужно? Если нужно, то по какому критерию детектировать мои скрипты?
    что имеется ввиду под "по какому критерию детектировать мои скрипты"?
    syslog-ng, так же, как обычный логгер записывает в файл то, что посылается системному логгеру (в моем примере выше это делается командой "logger"). Стандартный логгер все подряд скидывает в /tmp/syslog.log, а в syslog-ng можно настроить что, откуда и куда записывать. Можно сказать, эти "настройки" и есть фильтры

  3. #183
    Quote Originally Posted by brain-ripper View Post
    Не очень понятно, для чего используется именно syslog-ng - необходимо логировать события Wi-Fi именно в wifistatus.log, а не в системный лог?
    Поскольку я только коснулся темы сбора системного лога, то, вероятно, по незнанию не изложил более полную информацию. Исправляюсь. Я хочу настроить логирование и в системный лог, и в файл wifistatus.log, чтобы можно было просматривать его статистику, не разгребая большой системный лог. А системный лог смотреть через веб-интерфейс.

    Quote Originally Posted by brain-ripper View Post
    В ином случае достаточно стандартного логгера - как я говорил добавить в скрипты вызов "logger Wi-Fi turned on", "logger Wi-Fi turned off", или сами скрипты вызывать таким образом: "/usr/local/sbin/wi-fi_on | logger", "/usr/local/sbin/wi-fi_off | logger".
    Благодаря данным командам половина дела сделана - системный лог отображает события включения/выключения Wi-Fi. Для тестов подправил файл /usr/local/sbin/ez-setup:
    Code:
    #!/bin/sh 
    [ `wl isup` -eq 1 ] && (/usr/local/sbin/wi-fi_off | logger) || (/usr/local/sbin/wi-fi_on | logger)
    Quote Originally Posted by brain-ripper View Post
    что имеется ввиду под "по какому критерию детектировать мои скрипты"?
    syslog-ng, так же, как обычный логгер записывает в файл то, что посылается системному логгеру (в моем примере выше это делается командой "logger"). Стандартный логгер все подряд скидывает в /tmp/syslog.log, а в syslog-ng можно настроить что, откуда и куда записывать. Можно сказать, эти "настройки" и есть фильтры
    Спасибо за более подробные пояснения. Раньше я предполагал, что syslog-ng каким-либо образом "отлавливает" программы и события. Теперь понятно.

    Осталось настроить сбор статистики состояния Wi-Fi в файл wifistatus.log. И вот тут я "плаваю" пока что...

  4. #184
    Quote Originally Posted by flanker View Post
    Осталось настроить сбор статистики состояния Wi-Fi в файл wifistatus.log. И вот тут я "плаваю" пока что...
    syslog-ng фильтрует сообщения по трем параметрам: level, facility и program - последнее это имя процесса, от которого пришло сообщение, первые два можно задать как параметр, используя тот же logger. подробнее о logger можно посмотреть здесь:
    http://www.opennet.ru/man.shtml?topi...A%C1%D4%D8+man

    Фильтры довольно просто настроить, я использовал темплейт, устанавливаемый syslog-ng и некоторой информацией из начала этого треда, а так же официальным мануалом. Хорошая подробная документация по syslog-ng называется "The syslog-ng Administrator Guide. 1.1.4 Edition. Published July 23, 2008". Не помню, где я ее брал, где-то в официальных источниках, pdf, ~2,5Mb, если надо, пиши в личку, вышлю.

    Путь с syslog-ng более универсальный, но более просто было бы при вызывании logger со стандартным логгером вызывать и запись в отдельный файл, например, внутри скрипта:
    echo Wi-Fi turned on
    echo `date`: Wi-Fi turned on >> wifistatus.log

  5. #185
    Quote Originally Posted by brain-ripper View Post
    Фильтры довольно просто настроить, я использовал темплейт, устанавливаемый syslog-ng и некоторой информацией из начала этого треда, а так же официальным мануалом.
    Если бы знал, что запнусь с логированием состояния Wi-Fi, то сохранил бы оригинальный конфиг, а так заменил его.

    Quote Originally Posted by brain-ripper View Post
    Путь с syslog-ng более универсальный, но более просто было бы при вызывании logger со стандартным логгером вызывать и запись в отдельный файл, например, внутри скрипта:
    echo Wi-Fi turned on
    echo `date`: Wi-Fi turned on >> wifistatus.log
    Вот именно syslog-ng и хочется настроить...

    Quote Originally Posted by brain-ripper View Post
    Хорошая подробная документация по syslog-ng называется "The syslog-ng Administrator Guide. 1.1.4 Edition. Published July 23, 2008".
    Я стянул официальную документацию с официального сайта "The syslog-ng 3.0 Administrator Guide. Twelfth Edition. Publication date July 5, 2010".

    Quote Originally Posted by brain-ripper View Post
    syslog-ng фильтрует сообщения по трем параметрам: level, facility и program - последнее это имя процесса, от которого пришло сообщение, первые два можно задать как параметр, используя тот же logger. подробнее о logger можно посмотреть здесь:
    http://www.opennet.ru/man.shtml?topi...A%C1%D4%D8+man
    Пытался задавать фильтр с различными параметрами и их комбинациями. Ситуация странная - при использовании фильтра syslog-ng вообще не работает - его лог не обновляется, а в веб-интерфейсе вся информация отображена в старом формате syslogd. Если отключу фильтр, то syslog-ng нормально работает, файл wifistatus.log создается и пополняется, но туда пишется все то же самое, что и в системный лог - не удивительно, поскольку фильтрация отключена.

    Применял такие фильтры:
    Code:
    filter f_wi-fi { (level(notice) and facility(user) ); };
    Code:
    filter f_wi-fi { (program(/usr/local/sbin/wi-fi_on) or (program(/usr/local/sbin/wi-fi_on) ); };
    Хотя в официальном руководстве написано, что параметр program() позволяет принимать сообщения от программ, выдающих информацию в stdout. Как я понимаю, мои скрипты ее выдают. Или я неправильно понимаю? Явно что-то не так с моими фильтрами.

    Результатом работы скриптов wi-fi_on и wi-fi_off являются следующие строки в системном логе (имя своего логина я сменил на "root"):
    Code:
    20:07:35 05-09-2010 (notice|user|root) root: Wi-Fi turned off
    20:07:38 05-09-2010 (notice|user|root) root: Wi-Fi turned on
    Сами скрипты:
    Code:
    #!/bin/sh
    wl radio on
    logger "Wi-Fi turned on"
    Code:
    #!/bin/sh
    wl radio off
    logger "Wi-Fi turned off"
    "Never, never, never, never give up", © Sir Winston Churchill.
    "Courage is going from failure to failure without losing enthusiasm", © Sir Winston Churchill.

  6. #186
    Quote Originally Posted by flanker View Post
    Применял такие фильтры:
    Code:
    filter f_wi-fi { (level(notice) and facility(user) ); };
    Code:
    filter f_wi-fi { (program(/usr/local/sbin/wi-fi_on) or (program(/usr/local/sbin/wi-fi_on) ); };
    С параметром program не возился, но, думаю, имеют место быть такие моменты:
    - в фильтре надо указывать имя файла, без пути
    - в данном случае вместо имени файла идет имя пользователя, т.е. root, думаю, это особенность работы команды logger. Можно использовать ключ -t, чтобы изменить этот параметр.
    Например: "echo Wifi is on | logger -t WiFi" добавит в лог строку вида "22:23:01 05-09-2010 (notice|user|WiFi) WiFi: Wifi is on". Соответственно можно настроить один фильтр как "level(notice) and facility(user) and program (WiFi)", или даже просто "program (WiFi)"

  7. #187
    Quote Originally Posted by flanker View Post
    Хотя в официальном руководстве написано, что параметр program() позволяет принимать сообщения от программ, выдающих информацию в stdout. Как я понимаю, мои скрипты ее выдают. Или я неправильно понимаю? Явно что-то не так с моими фильтрами.
    syslog-ng берет сообщения отправленные системному логгеру (в данном случае командой logger и никак иначе) и фильтрует их, в соответствии со своими фильтрами. Относительно program это значит, что он берет следующее сообщение из очереди, сравнивает его параметр program, со своим фильтром program. Если значения совпадает - делает что-то одно, если нет - что-то другое.
    Т.е. он не делает что-то особенно с процессами, которые прописаны в фильтре program - т.е. не перехватывает их вывод stdout. Просто фильтр. На входе только сообщения, отправленные системному логгеру (в нашем случае команда logger).
    Немного сумбурно описал, но надеюсь, что понятно

  8. #188
    Quote Originally Posted by brain-ripper View Post
    С параметром program не возился, но, думаю, имеют место быть такие моменты:
    - в фильтре надо указывать имя файла, без пути
    Пробовал так:
    Code:
    filter f_wifi  { (program(wi-fi_on) or program(wi-fi_off) ); };
    Результат тот же - syslog-ng не работает совсем.

    Quote Originally Posted by brain-ripper View Post
    С параметром program не возился, но, думаю, имеют место быть такие моменты:
    - в данном случае вместо имени файла идет имя пользователя, т.е. root, думаю, это особенность работы команды logger. Можно использовать ключ -t, чтобы изменить этот параметр.
    Например: "echo Wifi is on | logger -t WiFi" добавит в лог строку вида "22:23:01 05-09-2010 (notice|user|WiFi) WiFi: Wifi is on".
    Работает. Прописывал в скриптах так:
    Code:
    #!/bin/sh
    wl radio on
    logger -t Wi-Fi "Wi-Fi turned on"
    Code:
    #!/bin/sh
    wl radio on
    logger -t Wi-Fi "Wi-Fi turned on"
    Выдает результат:
    Code:
    22:07:07 05-09-2010 (notice|user|Wi-Fi) Wi-Fi: Wi-Fi turned off
    22:07:09 05-09-2010 (notice|user|Wi-Fi) Wi-Fi: Wi-Fi turned on
    Quote Originally Posted by brain-ripper View Post
    Соответственно можно настроить один фильтр как "level(notice) and facility(user) and program (WiFi)", или даже просто "program (WiFi)"
    Все равно не работает
    Code:
    filter f_wifi  { (program(Wi-Fi) ); };
    Как-то странно. Как бы я не прописывал фильтры для Wi-Fi, syslog-ng не работает при их использовании

    Quote Originally Posted by brain-ripper View Post
    syslog-ng берет сообщения отправленные системному логгеру (в данном случае командой logger и никак иначе) и фильтрует их, в соответствии со своими фильтрами. Относительно program это значит, что он берет следующее сообщение из очереди, сравнивает его параметр program, со своим фильтром program. Если значения совпадает - делает что-то одно, если нет - что-то другое.
    Т.е. он не делает что-то особенно с процессами, которые прописаны в фильтре program - т.е. не перехватывает их вывод stdout. Просто фильтр. На входе только сообщения, отправленные системному логгеру (в нашем случае команда logger).
    Немного сумбурно описал, но надеюсь, что понятно
    Все доходчиво. Спасибо!
    "Never, never, never, never give up", © Sir Winston Churchill.
    "Courage is going from failure to failure without losing enthusiasm", © Sir Winston Churchill.

  9. #189
    Quote Originally Posted by flanker View Post
    Как-то странно. Как бы я не прописывал фильтры для Wi-Fi, syslog-ng не работает при их использовании
    Запости свой конфигурационный файл целиком, посмотрим

  10. #190
    Quote Originally Posted by brain-ripper View Post
    Запости свой конфигурационный файл целиком, посмотрим
    Code:
    ################################################################################
    # Syslog-ng configuration
    # /opt/etc/syslog-ng/syslog-ng.conf
    #
    
    ###############################################################################
    # tiwag's active filters and logs
    #
    
    options { long_hostnames(off); sync(0); };
    
    source src { file("/proc/kmsg");unix-stream("/dev/log"); internal(); };
    source net { udp(); };
    
    destination mysyslog {
        file("/opt/var/log/syslog-ng.log"
    	owner("flanker")
    	group("root")
    	perm(0640)
    	template("$HOUR:$MIN:$SEC $DAY-$MONTH-$YEAR ($PRIORITY|$FACILITY|$PROGRAM) $MESSAGE\n")
        );
    };
    
    destination authwarnlog {
        file("/opt/var/log/authwarn.log"
    	owner("flanker")
    	group("root")
    	perm(0640)
    	template("$HOUR:$MIN:$SEC $DAY-$MONTH-$YEAR ($PRIORITY|$FACILITY|$PROGRAM) $MESSAGE\n")
        );
    };
    
    destination wifistatuslog   { file("/opt/var/log/wifistatus.log"
        template("$HOUR:$MIN:$SEC $DAY-$MONTH-$YEAR ($PRIORITY|$FACILITY|$PROGRAM) $MESSAGE\n")
        );
    };
    
    destination vsftpdlog   { file("/opt/var/log/vsftpd.log"
        template("$HOUR:$MIN:$SEC $DAY-$MONTH-$YEAR ($PRIORITY|$FACILITY|$PROGRAM) $MESSAGE\n")
        );
    };
    
    destination dropbearlog { file("/opt/var/log/dropbear.log"
        template("$HOUR:$MIN:$SEC $DAY-$MONTH-$YEAR ($PRIORITY|$FACILITY|$PROGRAM) $MESSAGE\n")
        );
    };
    
    destination cronlog     { file("/opt/var/log/cron.log"
        template("$HOUR:$MIN:$SEC $DAY-$MONTH-$YEAR ($PRIORITY|$FACILITY|$PROGRAM) $MESSAGE\n")
        );
    };
    
    filter f_ni_syslog-ng { not ( level(info) and program(syslog-ng) ); };
    filter f_ni_thttpd    { not ( level(info) and program(thttpd)    ); };
    filter f_ni_vsftpd    { not ( level(info) and program(vsftpd)    ); };
    filter f_ni_cron      { not ( (level(notice) and program(cron) ) or ( level(info) and  facility(cron) ) ); };
    
    #filter f_wifi     { ( level(notice) and facility(user) ); };
    filter f_wifi     { ( program(wi-fi_on) or program(wi-fi_off) ); };
    filter f_vsftpd   { ( program(vsftpd) ); };
    filter f_dropbear { ( program(dropbear) ); };
    filter f_cron     { ( level(notice) and  program(cron) ); };
    filter f_authwarn { ( ( ( level(info) or level(warning) ) and program(dropbear) ) or ( ( level(warning) ) and  program(vsftpd) ) ); };
    
    ###############################################################################
    # active logs
    #
    
    log { source(src);
        filter(f_ni_vsftpd);
        filter(f_ni_thttpd);
        filter(f_ni_syslog-ng);
        filter(f_ni_cron);
        destination(mysyslog); };
    
    #log { source(src);
    #    filter(f_wifi)
    #    destination(wifistatuslog); };
    
    log { source(src);
        filter(f_vsftpd);
        destination(vsftpdlog); };
    
    log { source(src);
        filter(f_dropbear);
        destination(dropbearlog); };
    
    log { source(src);
        filter(f_authwarn);
        destination(authwarnlog); };
    
    log { source(src);
        filter(f_cron);
        destination(cronlog); };
    В данный момент логирование событий Wi-Fi в отдельный файл wifistatus.log я отключил, чтобы он не замусоривался (в тексте выделил красным). Зеленым цветом выделил 2 варианта фильтров, использованных мной в последние разы. Синим - код шаблона для формирования wifistatus.log.
    "Never, never, never, never give up", © Sir Winston Churchill.
    "Courage is going from failure to failure without losing enthusiasm", © Sir Winston Churchill.

  11. #191
    Quote Originally Posted by flanker View Post
    В данный момент логирование событий Wi-Fi в отдельный файл wifistatus.log я отключил, чтобы он не замусоривался (в тексте выделил красным). Зеленым цветом выделил 2 варианта фильтров, использованных мной в последние разы. Синим - код шаблона для формирования wifistatus.log.
    А все остальные фильтры работают правильно, т.е. только с wi-fi проблема? Я, честно говоря, не пробовал делать так, чтобы одно и то же событие одновременно в разные логи писалось.

    если сделать фильтр "filter f_wifi { ( program(wifi) ); };" и логирование вызывать с ключом "-t wifi" - тоже не работает?

  12. #192
    Quote Originally Posted by brain-ripper View Post
    А все остальные фильтры работают правильно, т.е. только с wi-fi проблема?
    Именно так - как только активирую фильтр Wi-Fi - все наперекосяк.

    Quote Originally Posted by brain-ripper View Post
    если сделать фильтр "filter f_wifi { ( program(wifi) ); };" и логирование вызывать с ключом "-t wifi" - тоже не работает?
    Совершенно верно. Замучился с ним уже...
    "Never, never, never, never give up", © Sir Winston Churchill.
    "Courage is going from failure to failure without losing enthusiasm", © Sir Winston Churchill.

  13. #193
    Join Date
    May 2009
    Location
    Russia, Orenburg st, Orsk
    Posts
    8

    kernel: schedule_timeout: wrong timeout value ffffff9c from 8015cc8c

    Постоянно в логах вижу эту запись? Что это вообще такое? Или стоит закрыть глаза на это.

    Роутер wl500gP v1 прошивка wl500g-1.9.2.7-d-r2174

  14. #194
    Закрывать глаза не стоит.

    Алгоритм поиска виновника следующий:
    1) При возникновении ошибки в следующий раз посмотреть на вывод
    Code:
    $ cat /proc/kallsyms
    и определить в какой функции возникает ошибка. У меня на прошивке 1.9.2.7-rtn-r2123, например, в данный момент по адресу 8015cc8c находится функция request_firmware_nowait:
    Code:
    $ cat /proc/kallsyms | grep 8015c
    ...
    8015cb1c t firmware_uevent
    8015cc08 T request_firmware_nowait
    8015cdb0 T release_firmware
    ...
    2) Определить компонент, в котором используется функция.
    В моём примере - это модуль hotplug, используемый для USB-устройств.
    Last edited by ryzhov_al; 15-10-2010 at 08:55.

  15. #195
    Join Date
    Nov 2006
    Location
    Russia, Moscow
    Posts
    3,640
    В штатной конфигурации никогда такого не наблюдали.

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

Page 13 of 17 FirstFirst ... 31112131415 ... LastLast

Similar Threads

  1. Подскажите, что этот лог значит? (syslog)
    By VadimVB in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 479
    Last Post: 23-05-2013, 07:47

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •