Вопрос или проблема
Краткая версия:
Я хочу, чтобы следующее сообщение не появлялось в моем syslog. Они относятся к USB-порту на моей клавиатуре, который можно игнорировать:
Feb 9 23:33:45 sunfire kernel: [ 8163.156041] usb 3-6.2.4: reset full-speed USB device number 8 using ehci-pci
Я отредактировал /etc/rsyslog.d/50-default.conf
и добавил фильтр:
:msg, contains, "3-6.2.4: reset full"
и когда я перезапустил сервис: /etc/init.d/rsyslog restart
, это привело к:
Feb 10 00:23:57 sunfire rsyslogd: [origin software="rsyslogd" swVersion="8.16.0" x-pid="754" x-info="http://www.rsyslog.com"] exiting on signal 15.
Feb 10 00:23:57 sunfire rsyslogd: [origin software="rsyslogd" swVersion="8.16.0" x-pid="3982" x-info="http://www.rsyslog.com"] start
Feb 10 00:23:57 sunfire rsyslogd-2222: command 'KLogPermitNonKernelFacility' is currently not permitted - did you already set it via a RainerScript command (v6+ config)? [v8.16.0 try http://www.rsyslog.com/e/2222 ]
Feb 10 00:23:57 sunfire rsyslogd-2207: error during parsing file /etc/rsyslog.conf, on or before line 62: syntax error on token '' [v8.16.0 try http://www.rsyslog.com/e/2207 ]
Feb 10 00:23:57 sunfire rsyslogd-2207: CONFIG ERROR: could not interpret master config file '/etc/rsyslog.conf'. [v8.16.0 try http://www.rsyslog.com/e/2207 ]
Feb 10 00:23:57 sunfire rsyslogd: rsyslogd's groupid changed to 109
Feb 10 00:23:57 sunfire rsyslogd: rsyslogd's userid changed to 105
Feb 10 00:23:57 sunfire systemd[1]: Stopping System Logging Service...
Feb 10 00:23:57 sunfire systemd[1]: Stopped System Logging Service.
Feb 10 00:23:57 sunfire systemd[1]: Starting System Logging Service...
Feb 10 00:23:57 sunfire systemd[1]: Started System Logging Service.
Feb 10 00:23:57 sunfire rsyslogd-2039: Could not open output pipe '/dev/xconsole':: No such file or directory [v8.16.0 try http://www.rsyslog.com/e/2039 ]
Feb 10 00:23:57 sunfire rsyslogd-2007: action 'action 10' suspended, next retry is Wed Feb 10 00:24:27 2016 [v8.16.0 try http://www.rsyslog.com/e/2007 ]
Feb 10 00:25:49 sunfire kernel: [11287.416037] usb 3-6.2.4: reset full-speed USB device number 8 using ehci-pci
и, очевидно, это не остановило логирование, которое я хотел остановить.
Прежде чем я слишком сильно начал этим заниматься, я подумал, что лучше сначала получить помощь.
Спасибо.
Длинная версия:
У меня есть клавиатура, которая при подключении к любому из моих компьютеров (в основном работающих на различных версиях Ubuntu выше 14.04 LTS, Raspian, OSX и FreeBSD), сообщает об ошибках в syslog. Ошибка, в частности, такая:
Feb 9 23:33:45 sunfire kernel: [ 8163.156041] usb 3-6.2.4: reset full-speed USB device number 8 using ehci-pci
Feb 9 23:33:49 sunfire kernel: [ 8166.828038] usb 3-6.2.4: reset full-speed USB device number 8 using ehci-pci
Feb 9 23:33:55 sunfire kernel: [ 8172.804042] usb 3-6.2.4: reset full-speed USB device number 8 using ehci-pci
Feb 9 23:34:00 sunfire kernel: [ 8178.172050] usb 3-6.2.4: reset full-speed USB device number 8 using ehci-pci
Feb 9 23:34:23 sunfire kernel: [ 8201.524041] usb 3-6.2.4: reset full-speed USB device number 8 using ehci-pci
Feb 9 23:35:19 sunfire kernel: [ 8257.340041] usb 3-6.2.4: reset full-speed USB device number 8 using ehci-pci
Feb 9 23:35:32 sunfire kernel: [ 8270.244043] usb 3-6.2.4: reset full-speed USB device number 8 using ehci-pci
Feb 9 23:35:50 sunfire kernel: [ 8287.876038] usb 3-6.2.4: reset full-speed USB device number 8 using ehci-pci
(Я включил их так много, чтобы показать, насколько часто и последовательно они возникают).
Я искал способ, чтобы система “игнорировала” этот тип отчетов, в основном потому, что меня это не волнует. Причина в том, что это клавиатура с двумя USB-портами, и я никогда не подключал к ним что-либо (особенно на этом компьютере. Я подключал мышь, когда использовал её с моим основным компьютером).
Большинство ответов, которые я нашел, относятся к фильтрации вывода в общем плане при поисках, для конкретных приложений или в сценариях для разработчиков.
Я нашел этот вопрос/ответ (Disable logging to syslog), но конфигурация на моей (Ubuntu) системе указывает на дальнейшие конфигурационные файлы, расположенные в /etc/rsyslog.d/
, и ни один из файлов там не содержит ничего, что (для меня) удаленно указывало бы как игнорировать что-либо.
Это привело меня к дальнейшим поискам (Preventing output to /var/log/syslog) и на http://www.rsyslog.com/ (особенно Filters), но как только я начал с этим разбираться, я получил ошибку о недопустимой конфигурации и, очевидно, не устранил нежелательное сообщение (см. “короткую” секцию выше).
Судя по всему, примерно в это время rsyslog был остановлен (pid: 754), значит я атаковал правильную систему, но сделал это неправильно.
Любая помощь будет полезной.
Дополнение: При возврате к настройкам по умолчанию и перезагрузке, 3 из 5 ошибок конфигурации остались, что наводит на мысль о том, что они не связаны.
Например, эти остались:
Feb 10 00:48:12 sunfire rsyslogd-2222: command 'KLogPermitNonKernelFacility' is currently not permitted - did you already set it via a RainerScript command (v6+ config)? [v8.16.0 try http://www.rsyslog.com/e/2222 ]
Feb 10 00:48:12 sunfire rsyslogd-2039: Could not open output pipe '/dev/xconsole':: No such file or directory [v8.16.0 try http://www.rsyslog.com/e/2039 ]
Feb 10 00:48:12 sunfire rsyslogd-2007: action 'action 10' suspended, next retry is Wed Feb 10 00:48:42 2016 [v8.16.0 try http://www.rsyslog.com/e/2007 ]
и эти (ожидаемо) более не присутствуют:
Feb 10 00:23:57 sunfire rsyslogd-2207: error during parsing file /etc/rsyslog.conf, on or before line 62: syntax error on token '' [v8.16.0 try http://www.rsyslog.com/e/2207 ]
Feb 10 00:23:57 sunfire rsyslogd-2207: CONFIG ERROR: could not interpret master config file '/etc/rsyslog.conf'. [v8.16.0 try http://www.rsyslog.com/e/2207 ]
Используйте
:msg, contains, "3-6.2.4: reset full" ~
Тильда выбросит сообщения, содержащие строку “3-6.2.4: reset full”.
Возможно, вам стоит использовать что-то вроде приведенного ниже.
Я могу себе представить ситуации, когда это выбросит то, что вы действительно хотите видеть. Команда ниже будет искать сообщения, приходящие конкретно от ядра с “reset full-speed” в теле сообщения, и затем сообщит syslog выбросить эти сообщения.
if ($programname == 'kernel:') and ($msg contains "reset full-speed") then { *.* ~ }
& stop
Ответ или решение
Как отключить логирование определенных предупреждений в syslog
Чтобы отключить появление в syslog сообщений о сбросе USB-портов клавиатуры, нужно внести соответствующие изменения в конфигурацию rsyslog. Рассматриваемая проблема связана с частым появлением в log-файлах сообщений о сбросе устройства USB-клавиатуры при его подключении. Поскольку данные сообщения не несут для вас ценности, их можно исключить из log-файлов.
1. Введение в rsyslog
rsyslog — это мощная система для обработки журналов, которая действует как центральный узел для различных сообщений журнала. Она позволяет фильтровать, пересылать и сохранять сообщения в зависимости от различных условий. Для выполнения задачи исключения определенных сообщений, необходимо воспользоваться системой фильтрации rsyslog.
2. Правильное использование фильтров в rsyslog
Чтобы правильно настроить фильтр, нужно понять, как интерпретировать входящие сообщения и использовать RainerScript, главный язык конфигурации rsyslog. В данном случае вы хотите исключить сообщения, содержащие текст “reset full-speed USB device” из логов ядра.
Для этого откройте файл /etc/rsyslog.d/50-default.conf и добавьте следующий фильтр:
if ($programname == 'kernel') and ($msg contains 'reset full-speed USB device') then {
stop
}
Данный фрагмент будет исключать любые сообщения, в которых содержится определенный текст и которые исходят от ядра.
3. Применение и проверка изменений
После внесения изменений необходимо перезапустить службу rsyslog, чтобы новые настройки вступили в силу. Сделать это можно следующим образом:
sudo systemctl restart rsyslog
После перезапуска проверьте, влияет ли обновленная конфигурация на логирование. Если запрограммированные фильтры работают правильно, то соответствующие сообщения должны больше не появляться в log-файле.
4. Устранение проблем конфигурации
Если возникают ошибки или служба rsyslog не запускается, убедитесь, что все условия в конфигурации указаны правильно, и нет лишних или синтаксически неверных символов. В вашем случае причиной ошибки может быть неверное использование оператора фильтрации.
5. Заключение
Правильная настройка фильтрации rsyslog позволяет избежать бесполезного логирования определенных сообщений, что может значительно упростить мониторинг системных журналов. Ключевыми шагами являются правильное понимание структуры rsyslog, применение RainerScript и корректное тестирование изменений. Убедитесь, что любой вносимый фильтр действительно соответствует только тем сообщениям, которые вы хотите исключить.
Внедряя указанные рекомендации, вы собственными усилиями сможете оптимизировать систему логирования в своей инфраструктуре IT, сохранив только нужные и полезные для анализа данные.