Взаємозв'язок rsyslog та журналу на Ubuntu 16.04


18

Я запускаю ванільний сервер Ubuntu 16.04, і я намагаюся обернути голову навколо того, як налаштування журналу за замовчуванням. Я бачу, що і те, journaldі rsyslogвстановлено, і працює, але мені зовсім не зрозуміло, як обробляються повідомлення журналу.

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

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

Мої запитання:

  1. Як саме журнал та rsyslog працюють разом на Ubuntu 16.04 (за замовчуванням)?
  2. Як повідомлення, надіслані з loggerначебто, потрапляють у журнал, але не в syslog?

Оновлення: виявляється, що loggerне працює, як очікувалося, помилка в моєму кінці, тому це не стосується головного питання.

Відповіді:


12

За замовчуванням rsyslogвикористовується модуль "imuxsock", модуль забезпечує:

можливість приймати повідомлення із системою через локальні сокети Unix. Найголовніше, це механізм, за допомогою якого виклик syslog (3) доставляє повідомлення syslog до rsyslogd [1] .

Можна rsyslogімпортувати структуровані повідомлення журналу з systemd-journal за допомогою модуля під назвою "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

Наприклад, centos використовує модуль "imuxsock" для збору всіх даних "systemd-journald" через, rsyslogтоді як Openuse не має "syslog" взагалі.


Щоб дізнатися, чому ваше повідомлення не закінчилося /var/log/syslog, слід перевірити цей файл:

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

шукайте *.info, дивіться, де вони будуть зберігатися, це може бути інший файл на кшталт messages.

Для мене це проявляється в обох journalctlі syslog.


logger -p .info helloне вірно. Ви не дали жодної назви об'єкта.
luv.preet

Оновлено відповідь ....
Ravexina

Як я зазначив у своїй редакції, я loggerне працював, тому я це виправлено (спасибі за поради). Що стосується журналів, які відображаються в двох місцях, то, imuxsockздається , ваша примітка є ключовою: схоже, що rsyslog і journald слухають локальні повідомлення системного журналу, отже, чому ці записи переходять у два окремі журнали.
монси

Я дотримувався вищесказаного на ubuntu, і тепер я не отримую жодного журналу від реєстратора, hmm: root @ T: ~ # logger -p mail.info Корінь Helllooo @ T: ~ # journalctl файлів журналу не знайдено. - Немає записів - якісь ідеї?
Хекрон

Чудова відповідь. Що мені не вистачає, - це примітка про те, як journald знає, як відкрити розетку syslog (або якщо це не так, як він потрапляє в повідомленнях syslog в іншому випадку), коли rsyslog відключений? Або потрібна певна конфігурація журналу вручну?
Matthijs

4

Systemd - це система init, яка використовується для запуску послуг, коли система завантажується. Журнал відповідає за створення журналів для служб, які запускаються системою. Інтегруючи журнал з systemd, навіть найдавніші повідомлення процесу завантаження доступні для журналу.

Rsyslog - демон, спеціально створений для обробки журналів, нічого спільного з журналом. Він може приймати журнали різними способами та виводити їх різними способами. За замовчуванням не включено, що він також приймає повідомлення журналу від journald. Для цього вам потрібно записати у /etc/rsyslog.conf файл,

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

Тепер він також прийме журнали fromm journald. Але я пропоную вам не змінювати файл /etc/rsyslog.conf.

В кінці файлу /etc/rsyslog.conf є рядок, написаний,

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

Це означає, що всі файли, які мають .conf там у папці /etc/rsyslog.d/, повинні бути включені під час завантаження rsyslog. Отже, всі ваші власні налаштування повинні містити ці файли

Я б запропонував вам створити файл /etc/rsyslog.d/journald.conf і вставити фрагмент нижче.

Нижче представлений фрагмент з офіційної сторінки rsyslog журналу

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 - він завантажує модуль журналу для прийому журналів від журналу

2 - Модуль mmjsonparse завантажується, що використовується для розбору журналів

3 - Вони структуровані в описаний формат у шаблоні

4 - Він аналізує ці журнали, використовуючи модуль mmjsonparse.

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

Внесіть зміни в конфігурацію відповідно до ваших потреб.


Дякую за пояснення, але я думаю, що відповідь @Ravexina ближче до того, щоб допомогти мені зрозуміти, що відбувається з rsyslog та journald, за замовчуванням (без додаткової конфігурації).
монси
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.