Файл /etc/rsyslog.conf#

rsyslog.conf - это конфигурационный файл службы Rsyslog (подробнее см. в разделе «Сценарии администрирования и эксплуатации» → «Устранение неполадок с помощью лог-файлов → «Подкаталоги для хранения сообщений системного журнала»), регистрирующий системные сообщения и определяющий правила ведения журнала. Пустые строки и строки, начинающиеся с # (комментарии), игнорируются.

Модули Rsyslog, которые могут использоваться:

Модуль

Описание

omsnmp

Вывод SNMP trap

omgssapi

Вывод для системного журнала с поддержкой GSS

ommysql

Вывод для MySQL

omrelp

Вывод для протокола RELP, предотвращающего потерю сообщений

ompgsql

Вывод для PostgreSQL

omlibdbi

Вывод для общих баз данных

imfile

Ввод для текстовых файлов

imudp

Ввод для системного журнала UDP

imtcp

Ввод для системного журнала TCP

imrelp

Ввод для протокола RELP. RELP можно использовать вместо UDP или TCP для обеспечения надежной доставки сообщений системного журнала

imgssapi

Плагин ввода для системного журнала TCP и GSS

immark

Поддержка маркированных сообщений, mark

imklog

Ведение журнала ядра

imuxsock

Сокеты Unix, включая сокет системного журнала; получение сообщений журнала от локальных системных процессов

Базовая структура rsyslog.conf включает разделы:

  • Global directives - глобальные директивы задают некоторые глобальные свойства демона rsyslog, например, размер основной очереди сообщений ($MainMessageQueueSize), загрузку внешних модулей ($ModLoad). Все глобальные директивы должны быть указаны по одной в строке и начинаться с $.

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

  • Output channels - каналы вывода предоставляют общий доступ к любому типу выходных данных, который может потребоваться пользователю. Должны быть определены до того, как будут использоваться в правилах.

  • Rules - правила формата «выбор + действие»; поля разделены пробелами или символами табуляции. Поле выбора определяет набор возможностей и приоритетов, относящихся к указанному действию.

Поле выбора в правилах состоит из двух частей, обозначающих объект и приоритет, разделенных точкой. Объектами, определяющими подсистему, создавшую сообщение, могут выступать ключевые слова auth, authpriv, cron, daemon, kern, lpr, mail, news, syslog, user, uucp, local0 - local7. Приоритет сообщений определяется ключевыми словами по возрастанию debug, info, notice, warning, err, crit, alert, emerg. * означает все объекты/приоритеты, none - отсутствие приоритета у данного объекта.

Поле действия описывает, что необходимо сделать с сообщением. Как правило, содержимое сообщения записывается в log-файлы, но могут выполняться и другие действия, например, запись в таблицу базы данных или пересылка на другой хост. Примеры действий:

  • Запись в регулярный файл в традиционном формате (без высокоточных временных меток):

    *.*     /var/log/traditionalfile.log;RSYSLOG_TraditionalFileFormat
    

    С высокоточными временными метками RFC 3339:

    *.*     /var/log/file.log
    

    По умолчанию файлы не синхронизируются после каждой записи. Для включения глобальной синхронизации файлов журнала используйте либо директиву $ActionFileEnableSync, либо параметр sync для omfile. Включение данной опции снижает производительность. Чтобы выборочно отключить синхронизацию для определенных файлов, укажите путь к файлу с -.

  • Запись выходных данных в именованные каналы (fifos) - посредством добавления перед именем файла символа | - используется для отладки.

  • Терминал и консоль - если указанный файл является tty, выполняется специальная обработка tty, аналогично с /dev/console.

  • Удаленная машина - существует три способа пересылки сообщений: UDP (стандартный, но с большими потерями качества), TCP (широко доступен, с потерей сообщений только в определенных ситуациях), RELP (без потери сообщений, но доступен только как часть rsyslogd 3.15.0 и выше). Для пересылки сообщений на другой хост по протоколу UDP укажите перед именем хоста символ @, TCP - @@, RELP - :omrelp:.

  • Список пользователей - обычно критические сообщения направляются root. Можно также указать список пользователей, которые должны получить сообщение, используя ключевое слово :omusrmsg: с именами соответствующих пользователей через запятую. Например, :omusrmsg:root,user1,user2.

  • Направление экстренных сообщений всем пользователям, находящимся в системе - :omusrmsg:*.

  • Запись сообщений в таблицу баз данных - по умолчанию для работы требуется схема, совместимая со средствами мониторинга MonitorWare, которую можно создать с помощью файла createDB.SQL, поставляемого с пакетом rsyslog. Также можно использовать любую другую схему, определив подходящий шаблон и назначив его действию.

  • discard - «отклонить», используется для фильтрации сообщений, отклонения ненужных; с данной целью разместите действие stop в начале соответствующих log-файлов. Например, отклонять все:

    *.*   stop
    
  • Привязка определения выходного канала к действию. Действия с выходным каналом должны начинаться со знака $, например, для привязки к действию определения выходного канала «mychannel», используйте $mychannel.

  • Выполнение в командной строке - в подоболочке выполняется программа, которой передается сообщение, сгенерированное по шаблону. rsyslog ожидает завершения работы программы и только после этого продолжает выполнение.

Типы поддерживаемых условий фильтрации сообщений системного журнала:

  • «традиционные» объектно-базирующиеся селекторы - выполнение фильтрации по приоритету и возможностям;

  • фильтры на основе свойств - фильтрация по свойствам (например, HOSTNAME, syslogtag, msg); фильтры начинаются с :, далее следуют через запятые название свойства, название выполняемой операции сравнения, значение для сравнения в кавычках:

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

    Поддерживаемые операции сравнения:

    • contains - проверяет, содержится ли строка, указанная в поле value, в свойстве;

    • isequal - сравнивает указанную строку value и содержимое свойства - они должны быть эквивалентны для совпадения;

    • startswith - проверяет, находится ли value точно в начале значения свойства;

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

  • фильтры на основе выражений - фильтрация по произвольным сложным выражениям.

Выводы в rsyslog используют шаблоны, состоящие из директивы шаблона, имени, фактического текста шаблона и необязательных параметров; шаблоны статические, кодируемые в rsyslogd.

Также могут быть отдельно указаны каналы вывода, средства замены свойств, операции в очереди.

Примеры записей#

Глобальные директивы:

  • Размещение вспомогательных файлов:

    global(workDirectory="/var/lib/rsyslog")
    
  • Использование формата временных меток по умолчанию:

    module(load="builtin:omfile" Template="RSYSLOG_TraditionalFileFormat")
    

Модули:

  • imuxsock, обеспечивающий поддержку локального системного ведения журнала, с отключением приема сообщений через локальный log-сокет:

    module(load="imuxsock" SysSock.Use="off")
    
  • Извлечение локальных сообщений через imjournal, предоставляющий доступ к журналу systemd; PID возвращается в качестве идентификатора процесса, запись журнала берется из файла хранения позиций в журнале:

    module(load="imjournal" UsePid="system" StateFile="imjournal.state")
    
  • Считывание сообщений ядра:

    module(load="imklog")
    
  • Предоставление возможности использования mark-сообщений:

    module(load="immark")
    
  • Включение всех конфигурационных файлов в /etc/rsyslog.d/:

    include(file="/etc/rsyslog.d/*.conf" mode="optional")
    
  • Обеспечение получения системного журнала UDP:

    module(load="imudp")
    input(type="imudp" port="514")
    
  • Обеспечение получения системного журнала TCP:

    module(load="imtcp")
    input(type="imtcp" port="514")
    

Правила:

  • Запись всех сообщений ядра в консоль с целью избежания нагромождений сообщений на экране:

    kern.*                                                 /dev/console
    
  • Регистрация всех сообщений, за исключением почты и сообщений журнала личной проверки подлинности, с уровнем info или выше:

    *.info;mail.none;authpriv.none;cron.none                /var/log/messages
    
  • Ограничение доступа к файлу личной проверки подлинности:

    authpriv.*                                              /var/log/secure
    
  • Регистрация всех почтовых сообщений в одном месте:

    mail.*                                                  -/var/log/maillog
    
  • Данные журнала cron:

    cron.*                                                  /var/log/cron
    
  • Получение экстренных сообщений всеми пользователями:

    *.emerg                                                 :omusrmsg:*
    
  • Сохранение новостей об ошибках критического уровня и выше в специальном файле:

    uucp,news.crit                                          /var/log/spooler
    
  • Сохранение загрузочных сообщений также в boot.log:

    local7.*                                                /var/log/boot.log
    
  • Правила пересылки - для действий создается очередь на диске. Если удаленный хост не работает, сообщения записываются на диск и отправляются, когда он заработает. Задается уникальный префикс имени для буферных файлов fwdRule1, ограничение пространства в 1 Гб, включение сохранения сообщений на диск при завершении работы флагом on, асинхронный запуск LinkedList; бесконечные попытки, если хост не работает - флаг -1, удаленное ведение журнала (в данном случае TCP):

    action(type="omfwd"
    queue.filename="fwdRule1"
    queue.maxdiskspace="1g"
    queue.saveonshutdown="on"
    queue.type="LinkedList"
    action.resumeRetryCount="-1"
    Target="remote_host" Port="XXX" Protocol="tcp")