як фільтрувати повідомлення rsyslog за тегами


12

У мене є кілька додатків та сценаріїв, які я хочу перенаправити на власні файли.

Я запускаю ці програми за допомогою

command | logger -t TAG

Я хотів би відфільтрувати ці повідомлення на основі їх тегів і перенаправити їх на різні файли. Я не хочу використовувати перенаправлення bash, оскільки ці програми в основному тривають процес і потребують належного обертання журналу.

Я спробував додати спеціальний фільтр у /etc/rsyslog.d/60-myfilter.conf;

if $syslogtag == 'giomanager' then /var/log/giomanager.log

Що я роблю неправильно? Який правильний спосіб фільтрації на основі тегу чи є кращий варіант для отримання подібного результату?

Відповіді:


21

Я не використовував, якщо так (або syslogtag), але я використав :<blah>,<condition> ...(зокрема: msg, містить, ...), але спробуйте

:syslogtag, isequal, "giomanager:" /var/log/giomanager.log
& stop

& stop(Або, & ~в Rsyslog v6 і старше (наприклад, на RHEL6)) викликає збігається повідомлення для викидання після реєстрації в іншому випадку він буде додатково проаналізовано за іншими правилами.


Оновлення: перевірено та

Syslogtag містить a, :і повинен бути вкладений, ""а не''


Дякую за Вашу відповідь. Я просто спробував те, що ви пропонуєте. Дійсно, повідомлення відкидається, але ніколи не пишеться/var/log/giomanager.log
mistyrouge

@mistyrouge: дивіться моє оновлення
user9517

2
Дуже дякую, зараз я перенаправляю свій журнал, /var/log/giomanager.log але він все ще записується до / var / log / syslog. Чи маєте ви уявлення, чому це відбувається і як це запобігти?
туман

1
дія відкидання (~ показник) застаріла: була замінена (кращою) альтернативною заявою "стоп": kb.monitorware.com/kbeventdb-detail-id-7171.html
Іван Рейв

7

Тому я нарешті знайшов рішення своєї проблеми.

Дуже дякую @lain за те, що ви провели мою дорогу.

Як було сказано раніше, рішення включати в тег ім'я ':'. Крім того, і це дуже важливо, ім'я файлу повинно бути раніше 50-default.confв алфавітному порядку.

Щоб відновити, помістіть наступне 30-giomanager.conf:

:syslogtag, isequal, "giomanager:" /var/log/giomanager.log
& stop

Зауважте, що файл /var/log/giomanager.logповинен бути записаний користувачем 'syslog'.


Дякую @mistyrouge. У мене така ж проблема, як у вас. Після входу у правильний файл мої журнали переспрямовуються на / var / log / syslog. Чи маєте ви уявлення, чому це відбувається і як це запобігти?
Mayank Patel

Я не міг змусити це працювати для фільтрації журналів bind9. Натомість працює ": ім'я програми, isequal," з назвою "/var/log/named/named.log". Можливо, тому, що тег схожий на "ім'я [32193]".
Rennex

Ви можете використовувати startswithзамість, isequalякщо, наприклад, тег містить PID. Або regexдля складних матчів.
Тім Сильвестр
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.