Приоритет:
1 2 3 |
Rsyslog фильтрует сообщения для дальнейшего управления. Используются следующие фильтры: facility and priority (Источники и приоритеты) -> Фильтры свойств -> Фильтры основанные на выражениях |
Категории источники:
1 2 3 4 5 6 7 8 |
auht/authpriv - сообщения процессов аутентификации; cron - логи имеющие отношения к планировщику; daemon - логи запущенных демонов (сервисов); kernel - логи ядра; mail - логи почты; syslog - логи имеющике отношение к syslog и другим сервисам; lpr - логи печати; local0-local7 - выделенные для административных целей. |
Приоритеты:
1 2 3 4 5 6 7 8 |
Priority (Приоритеты) - уровень приоритетности (важности) сообщений emerg (0) - экстренные; alert (1) - тревожные; err (3) - ошибки; warn (4) - предупреждения; notice (5) - уведомления; info (6) - информация; debug (7) - наивысший уровень (отладка) |
Примеры использования фильтров:
1 2 3 4 5 6 7 8 |
Все лог сообщения сгенерированные подсистемой ядра с любым уровнем важности записывать в файл /var/log/kernel.log kern.* /var/kernel.log Отбрасывает все лог сообщения и прекращает их обработку. *.* ~ Фильтровать и записывать в файл все лог сообщения от источника "daemon" с уровнем важности "err" daemon.err /var/log/error_daemo.log |
Фильтры базирующиеся на свойствах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
Синтаксис :property, [!]compare-operation, "value" Операторы сравнения: contains - проверяет содержится ли строка, представленная в значении, в свойстве; isequal - проверяет значение и свойство, они должные быть полностью идентичны; startswith - проверяет находится ли значение в "value" в начале свойства; regex - сравнение с помощью регулярных выражений; ereregex - использование расширенных регулярных выражений; isempty - является ли свойство пустым (не имеющим значения). Наиболее полезные типы свойств: msg - тело сообщения; hostname - имя хоста отправившего сообщение; source - алиас hostname; fromhost - имя хоста от которого было полученно сообщение (если имя удалось разрешить); fromhost-ip - тоже самое, что и fromhost только всегда ip-адрес; syslogtag - TAG сообщения; programname - имя программы; syslogfacility - источник лог сообщения в форме цифры; syslogfacility-text - источник лог сообщения в текстовой форме; syslogseverity - уровень важности в цифровом виде; syslogseverity-text - уровень важности в текстовом виде; pri - источник и приоритет в виде числа; pri-text - источник и приоритет в текстовом формате; timegenerated - время когда сообщение было полученно. |
Примеры использования фильтров базирующиеся на свойствах:
1 2 3 4 5 6 7 8 |
Если в теле сообщения встречается данный текст "DHCPREQUEST(lxdbr0)", то записывать сообщение в файл /var/log/syslog :msg, contains, "DHCPREQUEST(lxdbr0)" /var/log/syslog Если ip-адрес [хоста от которого полученно сообщение "192.168.1.1", то записать сообщение в файл /var/log/router.log :fromhost-ip, isequal, "192.168.1.1" /var/log/router.log Если имя хоста содержит текст "ubuntu", то записать его в файл /var/log/ubuntu-servers.log :fromhost, regex ".*ubuntu.*" /var/log/ubuntu-servers.log |
Фильтры основанные на выражениях:
1 2 3 4 5 6 7 8 9 10 11 |
Синтаксис: if EXPRESSION then ACTION else ACTION Примеры: Если facility равно "local1" и cообщение содержит "mysql" то записывать его в файл /var/log/db.log if $syslogfacility-text == "local1" and $msg contains "mysql" then /var/log/db.log Если сообщение содержит в себе текст "666" то записать его в файл "/var/log/666.log", если нет содержит то записать в файл "/var/log/non_666.log" if $msg contains "666" then { action(type="omfile" file="/var/log/666.log") } else { action(type="omfile" file="/var/log/non_666.log") } |
Пример фильтра не пишем лог
1 2 3 4 5 6 7 8 |
#no logging :msg, contains, "YOU_TEXT_MESSAGE_1" stop :msg, contains, "YOU_TEXT_MESSAGE_2" stop :msg, contains, "YOU_TEXT_MESSAGE_3" stop :msg, contains, "YOU_TEXT_MESSAGE_4" stop #sent log to loanalyzer *.* @@172.17.1.100 |
Шаблоны
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Шаблоны можно использовать для динамической генерации имен лог файлов Синтаксис: $template имя_шаблона, опции Примеры: $template remote_logs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" daemon.* ?remote_logs Сначала задаем шаблон с именем "remote_logs" потом указываем что запись лог сообщений необходимо вести в файл "/var/log/%HOSTNAME%/%PROGRAMNAME%.log", где %HOSTNAME% и %PROGRAMNAME% это свойства, грубо говоря переменные, которые зависят от источника лог сообщений. Потом с помощью знака ? и имени шаблона указываем, привязываем шаблон к фильтру сообщений. Получаем, что сообщения с источником сервисов писать в лог файл с названием как у службы и находящийся в директории с именем как у соответствующего хоста. |
Прием логов:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Rsyslog сервер можно настроить на прием лог сообщений от других хостов. Для этого необходимо внести изменения в конфигурационный файл /etc/rsyslog.conf Для работы по протоколу UDP: module(load="imudp") input(type="imudp" port="514") Для работы по протоколу TCP: module(load="imtcp") input(type="imtcp" port="514") Возможно работа одновременного по обоим протоколам. После перезапуска сервер сможет принимать логи от удаленных хостов и обрабатывать их согласно настроенным фильтрам. |
Отправка логов на удаленный Rsyslog сервер:
1 2 3 4 5 6 7 |
Для отправки логов на другой сервер необходимо вместо лог файла указать конструкцию с @ или @@ и ip-адрес сервера и порт: Отправлять все логи на 172.20.1.58 по протоколу UDP *.* @172.20.1.58:514 Отправлять все логи на 172.20.1.58 по протоколу TCP *.* @@172.20.1.58:514 |