Мне сложно понять, как ведение журнала работает в Linux.
После включения systemd это кажется немного проще, но у меня все еще есть пара концепций, которые все еще не полностью понятны.
Учитывая систему с journalctl, я хочу отправить некоторые сообщения журнала на удаленный хост. Для этой цели я установил rsyslog и настроил freeradius, чтобы он выводил свои журналы на local3, а затем настроил rsyslog для пересылки этих сообщений под local3 на удаленный сервер syslog. Теперь, являются ли системные журналы общими для rsyslog и journalctl? Может ли это вызвать какой-либо конфликт?
Помимо этого: Кто контролирует, что пишется в / var / log / messages? и как определенное приложение может выводить свои журналы в этот файл? Управляется ли это rsyslog? По systemd?
Если бы кто-нибудь мог помочь мне понять всю службу ведения журналов Linux, было бы неплохо.
Связь (-ы) между journald и rsyslog контролируется на стороне rsyslog с помощью его модулей ввода и вывода; есть imjournal
и omjournal
для чтения и записи в журнал соответственно.
Поэтому, если вы напишете что-то в rsyslog, оно появится в journald, только если вы настроили omjournal
модуль.
rsyslog "владеет" /var/log/messages
, обычный API системного журнала позволит приложениям писать в него. Сообщения журнала также могут оказаться там, если imjournal
модуль настроен.
Это краткое руководство по RHEL объясняет вещи примерно так же.
Системы с journalctl являются системами ведения журнала, что означает, что они использовали журнал для работы со всеми записями системного журнала. По умолчанию эти системы не записывают журналы в / var / log / secure, / var / log / maillog / / var / log / messages ...
Системы с rsyslog записывают записи системного журнала в определенные файлы в директиве / var / log. Настройки об этих записях (какие журналы и какие файлы) записываются в /etc/rsyslog.conf
Оба используют протокол системного журнала, но могут совместно использовать. Так что будет нормально, если вы без проблем будете использовать rsyslog и journalctl на одном компьютере.