LINUX.ORG.RU
решено ФорумAdmin

Фильтрация сообщений в rsyslog


0

0

Задача — игнорировать два типа сообщений: начинающиеся определённым образом и пустые строки. Правила:

:msg, startswith, 'radeon 0000:01:05.0: HDMI' ~
:msg, isequal, '' ~

Почему-то не работает. Что я делаю не так?

update:

:msg, regex, '^radeon.*' ~
:msg, regex, '^$' ~

тоже не работает. Вероятно, я очень глобально туплю %)

★★★★★

Последнее исправление: GotF (всего исправлений: 1)

Ад, угар и содомия

Во-первых, кавычки должны были быть двойными. Во-вторых, в начале сообщения ВНЕЗАПНО есть пробел.

:msg, startswith, " radeon 0000:01:05.0: HDMI" ~
:msg, isequal, " " ~

Второе правило убивает именно пустую строку, т.е. результат

echo | logger
GotF ★★★★★
() автор топика
Ответ на: Ад, угар и содомия от GotF

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

GotF ★★★★★
() автор топика

Ха-ха. Сообщения, которые я отправляю командой logger, фильтруются, а вот отправляемые ядром — нет %) Надо копать дальше.

GotF ★★★★★
() автор топика
:msg, startswith, " HDMI" ~

То есть сообщение начинается с HDMI, а не localhost root: HDMI

rsyslog

:msg, startswith, «val»

it will be a match if msg contains «values are in this message» but it won't match if the msg contains «There are values in this message» (in the later case, contains would match).

Как я понял

uspen ★★★★★
()
Ответ на: комментарий от uspen

Эм, подстроки <host> <sender> идут ещё до отметки времени, т.е. выпилить надо такое:

Apr 19 08:11:03 persephone kernel: [   10.115053] 
Apr 19 08:11:03 persephone kernel: [   10.164510] 
Apr 19 08:11:03 persephone kernel: [   10.214005] 
Apr 19 08:11:03 persephone kernel: [   10.263451] 
Apr 19 08:11:03 persephone kernel: [   10.263452] radeon 0000:01:05.0: HDMI Type A-1: EDID invalid.

В любом случае, не помогло. Про отладочный режим читал ещё вчера, похоже, без него не обойтись.

GotF ★★★★★
() автор топика

Ага, всё же удалось убить один вид сообщений

:msg, contains, "radeon 0000:01:05.0: HDMI" ~

Тут можно не вникать в тонкости. Осталось понять, как же избавиться от пустых строчек.

GotF ★★★★★
() автор топика
Ответ на: комментарий от GotF

М-да, почему-то мне не пришло в голову, что timestamp является частью сообщения, как выяснилось при помощи режима отладки. Правило

:msg, ereregex, "^.{14} $" ~

добивает оставшуюся гадость — более точные выражения с учётом квадратных скобок оно не ест ни при каких условиях, а писать правило через Template мне не хочется.

GotF ★★★★★
() автор топика
Ответ на: комментарий от uspen

IMHO, это не баг — rsyslogd получает timestamp в теле сообщения, так почему он должен начинать обработку с оставшейся части?

GotF ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.