Як налаштувати політику зберігання журналу на одиницю за допомогою журналу?


14

У мене є одна особлива послуга, яка записує рідкісну, але важливу інформацію. Я встановив це кілька місяців тому, і сьогодні я запустив journalctl -n 50 --unit=my-serviceлише, щоб знайти записи.

Я цілком задоволений такою поведінкою більшості підрозділів - мені або потрібно щось, що трапилося відразу (або щонайбільше кілька днів тому), і мені не цікаво записів, що стають місяцями.

Однак чи є спосіб сказати, journaldщо існує незалежна політика зберігання та зберігання для записів одного конкретного підрозділу? Я хочу зберегти ці конкретні журнали протягом, скажімо, 5 років - незалежно від розміру, який він би потребував. Це не має впливати на журнали інших підрозділів та зберігати існуючу поведінку.

Я якось втратив розуміння journald.conf(5), і не можу зрозуміти, коли конфігурація за одиницю взагалі можлива. Якщо це так - я оціню короткий конкретний приклад - який файл я повинен редагувати / створювати і що потрібно написати. Або, якщо ви точно знаєте, це, звичайно, недоцільно - це також буде хорошою відповіддю.

ПРИМІТКА. У моєму конкретному випадку входить хост Arch Linux, але, мабуть, це не має великого значення.


Я не можу коментувати відповідь вище, щоб додати це посилання на проблему щодо додавання цієї функції до журналу, тому ось це ще одна відповідь: github.com/systemd/systemd/isissue/4751
swoop81

Відповіді:


7

Здається, мені, швидше за все, не пощастило з журналом. Якщо я не знайду спосіб нерегулярного створення журналу "довготривалого зберігання" (як, наприклад, зараз існують різні журнали для користувачів), але я не впевнений, що це життєздатний і розумний підхід. Я думаю, налаштувати syslogd (і логротат) було б простіше.

Ця функція не була представлена ​​наприкінці 2014 року , як підтвердив сам Леннарт.

І здається, що його ще тут немає. Принаймні, рядок "journald: дозволити час утримання за пріоритетом та за кожну послугу при обертанні / пилососі" все ще є у файлі TODO (посилання на редакцію від 2016-07-11).


3
Це здається дуже великим недоліком дизайну, майже калічним. Особливо, якщо хочеться зменшити збереження або принаймні рівень журналу дуже балаканих одиниць, які засмічують журнали.
Оріон

1
Для тих, хто стикається з цим питанням, посилання на цей коментар у TODO все ще присутній на цей коментар (26.03.18): github.com/systemd/systemd/blob/…
timss

1
Намагаючись отримати деяку тягу до цього, я підняв це як проблему з проектом - github.com/systemd/systemd/isissue/9519 .
slm

1

Генерувати файл журналу надзвичайно просто. За замовчуванням вся реєстрація в journald також переходить до syslog, і цей за замовчуванням повинен бути встановлений. Rsyslog.conf контролює, як обробляються записи, передані в syslog. Крім того, за SyslogFacilityзамовчуванням daemonзаписи журналу для будь-якої послуги зазвичай закінчуються у daemon.logфайлі в /var/log.

У файлі служби додайте до розділу [послуга]

SyslogFacility=local2

(число може бути від 0 до 7) https://www.freedesktop.org/software/systemd/man/systemd.exec.html

Змініть /etc/rsyslog.conf (знайдіть існуючі рядки для зміни), щоб local2 був увійшов до конкретного файлу (перший рядок), а в ідеалі не входив у syslog, додавши, local2.noneяк показано (це вже в журналі).

local2.*                        /var/log/your-service-name.log
*.*;auth,authpriv.none,local2.none          -/var/log/syslog

[редагувати] вам також потрібно змінити вилов усіх

*.=info;*.=notice;*.=warn;\
        auth,authpriv.none;\
        cron,daemon.none;\
        mail,news.none,local2.none      -/var/log/messages

Звичайно, фактичне утримання тоді повинно здійснюватися логротатом.

HTH

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.