admin.txt

… заметки IT’шника…

Фильтрация сообщений, при их обработке в RSyslog.

Базовые опции фильтрации основаны на структуре facility.serverity, применяемой в syslogd. Однако RSyslog позволяет расширить функционал, добавляя использование выражений (expression-based filters) и фильтров на основе свойств сообщения (property-based filters).

Фильтрация на основе свойств позволяет построить обработку, опираясь на свойства сообщений, такие как: HOSTNAME, syslogtag и msg (полный список свойств сообщения можно найти по ссылке ниже, в разделе Available Properties). Фильтр на основе свойств должен начинаться с двоеточия, это говорит rsyslog, что используется новый тип фильтра. После двоеточия следует имя свойства сообщения, запятая, имя выполняемой операции сравнения, запятая и последнее — значение для сравнения. Значение должно быть заключено в кавычки. Между запятыми могут присутствовать пробелы или табуляции. Имена свойств и операций сравнения чувствительны к регистру. Примерный шаблон фильтра выглядит так:

:property, [!]compare-operation, "value"

Поддерживаются следующие операции сравнения:

contains — проверка, содержит ли свойство указанное значение.

isequal — сравнивает строку value с содержимым свойства, они должны быть полностью одинаковы.

startswith — проверяет что свойство начинается со строки value.

regex — сравнивает свойство с заданным регулярным выражением.

Дополнительную информацию о конфигурационном файле и свойствах сообщений можно найти тут: rsyslog.conf — Linux man page.

Пример:

:fromhost, regex, "sto$"
:ommysql:localhost,deustolog,Ursyslog,superf4rs1t4009
& ~

Пример2:
:syslogtag,contains,"named" > ip,db_mail,login,pass
:syslogtag,contains,"named" ~

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

Пример:

if $FROMHOST startswith 'deusto' then :ommysql:localhost,deustolog,Ursyslog,superf4rs1t4009
& ~

Пример2:
if $msg contains 'GUI_set' and not $msg contains 'VALIDATOR' then @@192.1.100.1

Пример3:

if $fromhost-ip contains '192.168.0.50' /var/log/192.168.0.50.message

Реклама

Декабрь 31, 2008 - Posted by | Linux |

3 комментария »

  1. […] отправляемых логов используя структуру facility.serverity не доступно. Все внесенные изменения в конфигурацию […]

    Уведомление от Настройка ESXi хостов для отправки логов на удаленный сервер. « admin.txt | Декабрь 31, 2008

  2. Вопрос такой: rsyslog принимает логи от удаленных хостов.
    Задача сделать так чтобы логи от конкретной машины не попадали в в общий лог
    стоит правило

    if $fromhost-ip contains ‘192.168.1.6’ then :ommysql:localhost,Syslog01,user*****,pass********
    & ~
    оно работает логи падают в нужную базу , но одновременно с этим падают и туда куда не нужно как сделать так чтобы они не попадали в другую базу ?

    комментарий от k1b3r | Ноябрь 16, 2011

  3. Все правильно вроде сделали! Сам настраивал «на ощупь».
    Короче лучше настройки ваши забить в файл в папку /etc/rsyslog.d
    отдельным файлом.
    но файл назвать как нибудь 10-myconf.conf
    если в папке уже лежат файлы 20-blabla.conf и 50-blablabla.conf
    если я правильно понял строка
    & ~
    остановит поток *овна в syslog а будет лить только в базу (судя по вашиму скрипту) а цифра в названии конфигурационного файла вашего заставит демона rsyslogd читать ваш конфиг первым и не даст засорять остальные логи ИМХО (если не прав пусть автор статьи поправит)

    комментарий от Taylor | Декабрь 18, 2011


Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: