как фильтровать сообщения 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)) вызывает совпадающее сообщение для выбрасывания после регистрации в противном случае он будет дополнительно проанализирован по другим правилам.


Обновление: проверено и

Системный журнал содержит :и должен быть заключен в, ""а не''


Спасибо за ваш ответ. Я только что попробовал то, что вы предлагаете, на самом деле сообщение отбрасывается, но никогда не записывается/var/log/giomanager.log
mistyrouge

@mistyrouge: посмотрите мое обновление
user9517

2
Большое спасибо, теперь мой журнал перенаправлен, /var/log/giomanager.log но он все еще записан в / var / log / syslog. У вас есть идея, почему это происходит и как это предотвратить?
Mistyrouge

1
действие отмены (индикатор ~) устарело: заменено (лучше) альтернативным оператором "stop": 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, "named" /var/log/named/named/named.log ". Возможно, потому что тег похож на «named [32193]».
Rennex

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