Мы используем rsyslog через приемники ведения журналов Boost для регистрации сообщений из процесса приложения в /var/log/messages на RHEL 7.
Сообщениям журнала предшествует «LogMsg».
rsyslog.conf выглядит так:
# файл конфигурации rsyslog
# Для получения дополнительной информации см. /usr/share/doc/rsyslog-*/rsyslog_conf.html
# Если у вас возникли проблемы, см. http://www.rsyslog.com/doc/troubleshoot.html
#### МОДУЛИ ####
mail.none;authpriv.none;cron.none /var/log/messages
local0.debug /var/log/nullarbor.log
local4.info /var/log/local4info.log
# Доступ к файлу authpriv ограничен.
authpriv.* /var/log/secure
# Регистрируйте все почтовые сообщения в одном месте.
почта.* -/var/журнал/журнал почты
# Логируем cron
хрон.* /var/журнал/хрон
# Все получают экстренные сообщения
*.emerg :omusrmsg:*
# Сохранять ошибки новостей уровня крита и выше в специальный файл.
uucp,news.crit /var/log/spooler
# Сохраняем загрузочные сообщения также в boot.log
local7.* /var/log/boot.log
# ### начать правило переадресации ###
# Оператор между begin ... end определяет ОДНУ пересылку
# правило. Они принадлежат друг другу, НЕ разделяйте их. Если вы создаете несколько
# правила переадресации, дублировать весь блок!
# Удаленное ведение журнала (мы используем TCP для надежной доставки)
#
# Для этого действия создается очередь на диске. Если удаленный хост
# вниз, сообщения буферизируются на диск и отправляются, когда он снова поднимается.
#$ActionQueueFileName fwdRule1 # уникальный префикс имени для буферных файлов
#$ActionQueueMaxDiskSpace 1g # Ограничение на 1 ГБ места (используйте как можно больше)
#$ActionQueueSaveOnShutdown on # сохранять сообщения на диск при завершении работы
#$ActionQueueType LinkedList # запустить асинхронно
#$ActionResumeRetryCount -1 # бесконечные попытки, если хост не работает
# удаленный хост: имя/ip:порт, например. 192.168.0.1:514, порт необязательно
#*.* @@remote-host:514
# ### конец правила переадресации ###
# Приведенный ниже модуль imjournal теперь используется в качестве источника сообщений вместо imuxsock.
$ModLoad imuxsock # обеспечивает поддержку ведения журнала локальной системы (например, с помощью команды logger)
$ModLoad imjournal # предоставляет доступ к журналу systemd
#$ModLoad imklog # читает сообщения ядра (то же самое читается из journald)
#$ModLoad immark # обеспечивает возможность сообщения --MARK--
# Обеспечивает прием системного журнала UDP
#$ModLoad imudp
#$UDPServerRun 514
# Обеспечивает прием системного журнала TCP
#$ModLoad imtcp
#$InputTCPServerRun 514
#### ГЛОБАЛЬНЫЕ ДИРЕКТИВЫ ####
# Где разместить вспомогательные файлы
$WorkDirectory /var/lib/rsyslog
# Использовать формат временной метки по умолчанию
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
# Возможность синхронизации файлов по умолчанию отключена. Эта функция обычно не требуется,
# бесполезно и резко снижает производительность
#$ActionFileEnableSync включен
# Включить все файлы конфигурации в /etc/rsyslog.d/
$IncludeConfig /etc/rsyslog.d/*.conf
# Отключаем прием сообщений через локальный лог сокет;
# локальные сообщения теперь загружаются через imjournal.
$OmitLocalВход в систему
# Файл для хранения позиции в журнале
$IMJournalStateФайл imjournal.state
#### ПРАВИЛА ####
# Записывать все сообщения ядра в консоль.
# Регистрация многих других загромождает экран.
#kern.* /dev/консоль
# Регистрировать что-либо (кроме почты) уровня информации или выше.
# Не регистрировать приватные сообщения аутентификации!
*.info;mail.none;authpriv.none;cron.none /var/log/messages
local4.info /var/log/local4info.log
# Доступ к файлу authpriv ограничен.
authpriv.* /var/log/secure
# Регистрируйте все почтовые сообщения в одном месте.
почта.* -/var/журнал/журнал почты
# Логируем cron
хрон.* /var/журнал/хрон
# Все получают экстренные сообщения
*.emerg :omusrmsg:*
# Сохранять ошибки новостей уровня крита и выше в специальный файл.
uucp,news.crit /var/log/spooler
# Сохраняем загрузочные сообщения также в boot.log
local7.* /var/log/boot.log
# ### начать правило переадресации ###
# Оператор между begin ... end определяет ОДНУ пересылку
# правило. Они принадлежат друг другу, НЕ разделяйте их. Если вы создаете несколько
# правила переадресации, дублировать весь блок!
# Удаленное ведение журнала (мы используем TCP для надежной доставки)
#
# Для этого действия создается очередь на диске. Если удаленный хост
# вниз, сообщения буферизируются на диск и отправляются, когда он снова поднимается.
#$ActionQueueFileName fwdRule1 # уникальный префикс имени для буферных файлов
#$ActionQueueMaxDiskSpace 1g # Ограничение на 1 ГБ места (используйте как можно больше)
#$ActionQueueSaveOnShutdown on # сохранять сообщения на диск при завершении работы
#$ActionQueueType LinkedList # запустить асинхронно
#$ActionResumeRetryCount -1 # бесконечные попытки, если хост не работает
# удаленный хост: имя/ip:порт, например. 192.168.0.1:514, порт необязательно
#*.* @@remote-host:514
# ### конец правила переадресации ###
Когда все это работало, информационные сообщения из моего процесса приложения отправлялись в /var/log/messages. В них есть строка LogMsg, и они зависят от приложения.
Затем я добавил строку для фильтрации сообщений local0, после чего перезапустил службу rsyslog.
После этого все пошло наперекосяк. Я перезагрузился и вернул rsyslog.conf в исходное состояние.
Я перезагрузил демон systemd и перезапустил службу rsyslog.
Я также удалил файл состояния imjournal в /var/lib/rsyslog.
Это имело следующий эффект:
- Записи systemd для всех процессов демона, таких как sensord, snmpd и т. д., начали напрямую поступать в /var/log/messages, чего раньше не происходило.
- Сообщения из моего приложения не появлялись в /var/log/messages, на что я и надеялся.
Я не знаю, куда идут сообщения моего приложения.
Также, когда я запускаю логгер с проверкой сообщений, он появляется в файле /var/log/messages.
Итак, моя текущая проблема:
сообщения ядра сбрасываются в /var/log/messages, хотя раньше этого не было. Почему это происходит?
почему сообщения моего приложения перестали попадать в /var/log/messages?
И куда бы они пошли?
Как решить эту проблему? Пожалуйста, помогите и посоветуйте.
Спасибо.