Отношения rsyslog и журналируемый на Ubuntu 16.04

Я выполняю то, что является ванильным сервером Ubuntu 16.04, и я пытаюсь перенести голову, как вход настраивается по умолчанию. Я вижу это оба journald и rsyslog установлены и выполнение, но мне нисколько не ясно, как обрабатываются сообщения журнала.

Большинство сообщений, кажется, разоблачает обоих в /var/log/syslog и через journalctl, но я не вижу явной конфигурации для передачи между двумя в также /etc/systemd/journald.conf (который в основном все комментируется по умолчанию), /etc/rsyslog.conf или /etc/rsyslog.d/50-default.conf. Я пытался искать официальную документацию или даже сообщение в блоге, объясняющее, как hese два настраиваются в Ubuntu, но не сумели найти что-либо.

Для дальнейшего добавления к моему беспорядку я выполнился logger -p local1.info Test на хосте, и найденный, что ничто не было записано в /var/log/syslog, в то время как сообщение действительно обнаруживалось под journalctl.

Мои вопросы:

  1. Как точно делают журналируемый, и rsyslog сотрудничают на Ubuntu 16.04 (по умолчанию)?
  2. Каким образом сообщения, отправленные от logger по-видимому закончите в журнале, но не в системном журнале?

Обновление: Складывается logger не работа как ожидалось была ошибкой на моем конце, таким образом, это не относится к основному вопросу.

16
задан 16 June 2017 в 10:16

2 ответа

По умолчанию rsyslog использует "imuxsock" модуль, модуль обеспечивает:

способность принять системный журнал обменивается сообщениями через локальные сокеты Unix. Самое главное это - механизм, которым системный журнал (3) вызов передает сообщения системного журнала к rsyslogd [1].

Это возможно для rsyslog импортировать структурированные сообщения журнала из systemd-журнала с помощью модуля, названного "imjournal" [2].

Это может быть загрузка как:

module(load="imjournal") 

в:

/etc/rsyslog.conf

В другой руке "systemd-journald" собирает все данные сами:

man systemd-journald

systemd-journald является системной службой, которая собирает и хранит регистрирующиеся данные. Это создает и поддерживает структурированные, индексированные журналы на основе регистрирующейся информации, которая получена от множества источников:

   ·   Kernel log messages, via kmsg
   ·   Simple system log messages, via the libc syslog(3) call
   ·   Structured system log messages via the native Journal API, 
       see sd_journal_print(4)
   ·   Standard output and standard error of system services
   ·   Audit records, via the audit subsystem

Можно отключить rsyslogd в то время как у Вас все еще есть доступ к системному использованию журналов journalctl.

$ sudo systemctl mask rsyslogd
$ sudo systemctl stop syslog.socket
$ sudo systemctl stop rsyslog.service
$ systemctl is-active rsyslog.service 
inactive
$ logger -p mail.info Helllooo
$ journalctl

Например, песни использует "imuxsock" модуль для получения всех "systemd-journald" данных через rsyslog в то время как opensuse не имеет "системного журнала" вообще.


Узнать, почему Ваше сообщение не заканчивалось к /var/log/syslog, необходимо проверить этот файл:

less /etc/rsyslog.d/50-default.conf

искать *.info, посмотрите, где они будут сохранены, это мог бы быть другой файл как messages.

Для меня это обнаруживается в обоих journalctl и syslog.

11
ответ дан 23 November 2019 в 02:36

Systemd является init системой, используемой для запуска сервисов когда начальные загрузки системы. Journald ответственен за то, что сделал журналы для сервисов, которые запускаются systemd. Путем интеграции журналируемый с systemd, даже самые ранние сообщения процесса начальной загрузки доступны журналируемому.

Rsyslog является демоном, особенно сделанным для обработки журнала, ничто, чтобы сделать с журналируемым. Это может взять, входит в систему многими путями и производит их во многих отношениях. Это не включено по умолчанию, что это берет сообщения журнала от журналируемого также. Для этого необходимо записать в/etc/rsyslog.conf файле,

$ModLoad imjournal # im -> input module
OR
load(type="imjournal")

Теперь, он примет журналы fromm журналируемый также. Но я предлагаю, чтобы Вы не изменяли свой/etc/rsyslog.conf файл.

В конце/etc/rsyslog.conf файла, существует записанная строка,

$IncludeConfig /etc/rsyslog.d/*.conf

Это означает, что все файлы, имеющие .conf в там, заканчиваются в/etc/rsyslog.d/папке, должен быть включен во время загрузки rsyslog. Так, все Ваши пользовательские конфигурации должны войти в эти файлы

, я предложил бы, чтобы Вы сделали файл/etc/rsyslog.d/journald.conf и вставили ниже отрывка в этом.

Ниже отрывок от rsyslog официальной страницы строки imjournal

module(load="imjournal" PersistStateInterval="100"
   StateFile="/path/to/file") #load imjournal module
module(load="mmjsonparse") #load mmjsonparse module for structured logs

template(name="CEETemplate" type="string" string="%TIMESTAMP% %HOSTNAME% %syslogtag% @cee: %$!all-json%\n" ) #template for messages

action(type="mmjsonparse")
action(type="omfile" file="/var/log/ceelog" template="CEETemplate")

1 - это загружает imjournal модуль для принятия журналов от журналируемого

2 - mmjsonparse модуль загружается используемый в парсинге журналов

3 - Они структурированы в описанный формат в шаблоне

4 - Это анализирует те журналы с помощью mmjsonparse модуля.

5 - Это отправляет те журналы в файл а именно,/var/log/ceelog согласно структуре, обеспеченной в данном шаблоне, с помощью omfile (выходной файл модуля - выводы в файл) модуль.

Вносят изменения в конфигурации согласно Вашей потребности.

4
ответ дан 23 November 2019 в 02:36

Другие вопросы по тегам:

Похожие вопросы: