Как фильтровать сообщения в RSyslog

Перевод: How To: Filter RSyslog Messages by String

RSyslog RSyslog Я наконец-то заканчиваю работать над проектом Центральный сервер RSyslog - практически всё работает так, как и задумывалось. Один из последних штрихов - фильтрация сообщений с перенаправлением в отдельные файлы, чтобы получались файлы с важными сообщениями и файлы со всеми остальными логами.

Зачем Может Понадобиться Фильтровать Логи

Большинство причин связаны с облегчением фокуса на истинно важных сообщениях и ошибках.

ВАЖНО: хочу подчеркнуть, что бывает два типа фильтрации. Первый тип - сообщения отбрасываются и больше нигде не хранятся. Второй тип - сообщения отбрасываются, но сохраняются в отдельный файл - вы их не видите, но они всегда доступны для более глубокого расследования. Я считаю, что вы не должны выбрасывать никакие логи - так что следуйте фильтрации второго типа. Риск пропустить (и навсегда потерять) какие-то важные сообщения в фильтрации первого типа слишком велик.

Так что собирайте и храните все логи, но фильтруйте их в различные файлы и просматривайте только важные и наиболее полезные элементы. А всё остальное хранится в других файлах и даже может подвергаться ротации (регулярной чистке). Но если вдруг случится серьёзная проблема или инцидент - вы с лёгкостью сможете просмотреть полный объём логов, а не только файл с важными сообщениями.

Конкретные Причины Фильтровать Логи

  1. У вас есть несколько команд или участников команды с различными обязанностями – кто-то следит за логами приложений, кто-то за логами операционной системы
  2. У вас есть процессы и задачи, нуждающиеся в особо внимательном мониторинге – например, авто-деплои или cron-задачи - часто их логи находятся среди других логов такого же формата - HTTPS, SSH или SUDO логи - так что приходится фильтровать по каким-то ключевым словам
  3. Часть ваших логов предоставляет слишком много информации – для каждодневного использования эти логи и отладочная информация могут и не понадобиться. Например, при логине на удалённый SSH сервер вам могут быть не нужны логи pam_unix, но при именно отладке PAM модулей это будет полезная информация. Важно знать, чьи попытки логинов были неудачны (это может быть атака), тогда как следить за тем, когда и кто закончил сессию - уже второстепенно.

Как Фильтровать Логи по Строке/Выражению

Сравнительно новый подход - использование так называемых expression-based filters в RSyslog – это лёгкие для чтения и понимания конструкции типа if-then (если-то):

if $msg contains 'ssh' then /logs/security.log

Как Фильтровать Сообщения Syslog по Имени Приложения или Сервиса

Очень полезная фильтрация - можно указать имя программы или процесса.

Например, в этом сообщении sudo - это название процесса, а не текст сообщения, так что фильтрация по примеру выше не сработала бы:

Mar 29 09:45:38 s7 sudo:    greys : TTY=pts/0 ; PWD=/home/greys ; USER=root ; COMMAND=/bin/grep -E ^pi: /etc/shadow

А вот пример совместного использования фильтров: нас интересует сервис sudo, и только те его сообщения, которые имеют элемент COMMAND - в них будут записаны команды, выполненные с повышенными привилениями:

if $programname == 'sudo' and $msg contains 'COMMAND' then /logs/security.log

Ссылки




Давайте учиться вместе!

Заходите на страницу Facebook или присоединяйтесь к чату в Telegram:
Я использую браузер Brave
Попробуйте сами: Brave Browser
IT Консалтинг
У меня есть консалтинговая компания: Tech Stack Solutions. Я помогаю планировать и создавать облачные решения на базе AWS и помогаю с развёртыванием и поддержкой сервисов на Unix/Linux. Свяжитесь со мной тут.

Recent Tweets