Я использую ванильный сервер Ubuntu 16.04 и пытаюсь понять, как настраивается ведение журналов по умолчанию. Я вижу, что оба journald
и rsyslog
установлены, и работают, но мне совсем не ясно, как обрабатываются сообщения журнала.
Большинство сообщений , кажется , чтобы показать , как в /var/log/syslog
и через journalctl
, но я не вижу какой - либо конкретной конфигурации для пересылки между ними в любой /etc/systemd/journald.conf
(который в основном все закомментирована по умолчанию), /etc/rsyslog.conf
или /etc/rsyslog.d/50-default.conf
. Я пытался найти официальную документацию или даже сообщение в блоге, объясняющее, как эти два настроены в Ubuntu, но не смог ничего найти.
Чтобы еще больше прибавить путаницы, я выполнил logger -p local1.info Test
на хосте и обнаружил, что ничего не было записано /var/log/syslog
, в то время как сообщение отображалось в journalctl
.
Мои вопросы:
- Как в действительности работают journald и rsyslog в Ubuntu 16.04 (по умолчанию)?
Почему сообщения, отправленные с, по-logger
видимому, попадают в журнал, а не в системный журнал?
Обновление: Оказывается, logger
не работает, как ожидалось, было ошибкой с моей стороны, так что это не имеет отношения к основному вопросу.
logger -p .info hello
не является допустимым. Вы не дали название объекта.logger
моя вина была неработающая, так что теперь это исправлено (спасибо за советы в любом случае). Что касается журналов, отображаемых в двух местах, ваша заметкаimuxsock
кажется ключевой: кажется, что и rsyslog, и journald прослушивают локальные сообщения системного журнала, поэтому эти записи попадают в два отдельных журнала.Systemd - это система инициализации, используемая для запуска служб при загрузке системы. Journald отвечает за создание журналов для служб, запускаемых systemd. Благодаря интеграции journald с systemd, даже самые ранние сообщения процесса загрузки доступны для journald.
Rsyslog - это демон, специально созданный для обработки журналов, никак не связанный с journald. Он может принимать логи разными способами и выводить их разными способами. По умолчанию он не включен, поэтому он также принимает сообщения журнала из journald. Для этого вы должны написать в файле /etc/rsyslog.conf,
Теперь он также будет принимать логи fromm journald. Но я предлагаю вам не менять файл /etc/rsyslog.conf.
В конце файла /etc/rsyslog.conf написана строка
Это означает, что все файлы, имеющие .conf в конце в папке /etc/rsyslog.d/, должны быть включены во время загрузки rsyslog. Итак, все ваши пользовательские конфиги должны быть в этих файлах
Я бы предложил вам создать файл /etc/rsyslog.d/journald.conf и вставить в него приведенный ниже фрагмент.
Ниже приведен фрагмент официальной страницы журнала rsyslog.
Строка 1 - загружает модуль журнала для приема логов из журнала.
2 - загружен модуль mmjsonparse, используемый при разборе логов
3 - Они структурированы в описанный формат в шаблоне
4 - Он анализирует эти журналы, используя модуль mmjsonparse.
5 - Он отправляет эти журналы в файл, а именно / var / log / ceelog в соответствии со структурой, предоставленной в данном шаблоне, используя модуль omfile (файл модуля вывода - файлы в файл).
Внесите изменения в конфигурации в соответствии с вашими потребностями.
источник