Come configurare i criteri di archiviazione dei registri per unità con journald?


14

Ho un servizio particolare, che registra informazioni rare, ma importanti. L'ho installato pochi mesi fa e oggi ho corso journalctl -n 50 --unit=my-servicesolo per scoprire che non ci sono voci.

Sono perfettamente contento di questo comportamento per la maggior parte delle unità - o ho bisogno di qualcosa che è successo subito (o al massimo pochi giorni fa), e non mi importa dei dischi di mesi.

Tuttavia, c'è un modo per dire journalddi avere una politica di conservazione e conservazione indipendente per i record di una singola unità particolare? Voglio persistere quei particolari registri per, diciamo, 5 anni, indipendentemente dalle dimensioni che ci vorrebbe. I registri delle altre unità non devono essere interessati da questo e mantengono il loro comportamento esistente.

Sono una specie di comprensione persa journald.conf(5)e non riesco a capire quando è possibile la configurazione per unità. Se lo è - apprezzerei un breve esempio concreto - quale file dovrei modificare / creare e cosa dovrei scrivere. Oppure, se sai per certo che non è certamente fattibile - sarebbe anche una buona risposta.

NOTA: il mio caso particolare riguarda l'host Arch Linux, ma suppongo che questo non dovrebbe importare molto.


Non posso commentare la risposta sopra per aggiungere questo link a un problema sull'aggiunta di questa funzione a journald, quindi eccola come un'altra risposta: github.com/systemd/systemd/issues/4751
swoop81

Risposte:


7

Sembra molto probabilmente sfortunato con journald. A meno che non scoprirò un modo per generare un diario indipendente di "archiviazione a lungo termine" (come al momento ci sono diverse riviste per utente), ma non sono sicuro che sia un approccio praticabile e sano. Immagino che impostare un syslogd (e logrotate) sarebbe più semplice.

Il film non era presente alla fine del 2014 , come confermato dallo stesso Lennart.

E sembra che non sia ancora qui. Almeno, la riga "journald: consenti tempi di conservazione per priorità e per servizio durante la rotazione / aspirazione" è ancora nel file TODO (collegamento alla revisione dell'11 / 2016/2016).


3
Sembra un grande difetto di progettazione, quasi paralizzante. Soprattutto se si desidera ridurre la conservazione o almeno il livello di registro di unità molto loquaci, che ostruiscono i registri.
Orione,

1
Per chiunque inciampi su questa domanda, la linea di riferimento nel TODO è ancora presente a partire da questo commento (26.03.18): github.com/systemd/systemd/blob/…
timss

1
Nel tentativo di ottenere un po 'di trazione su di esso, l'ho sollevato come un problema con il progetto - github.com/systemd/systemd/issues/9519 .
slm

1

È straordinariamente semplice generare il file di registro. Per impostazione predefinita, tutte le registrazioni su journald vanno anche su syslog e questa impostazione predefinita deve essere attiva. Rsyslog.conf controlla come vengono gestite le voci passate a syslog. Inoltre, SyslogFacilityper impostazione predefinita daemon, le voci di registro per qualsiasi servizio di solito finiscono nel daemon.logfile in /var/log.

Nel tuo file di servizio aggiungi alla sezione [servizio]

SyslogFacility=local2

(il numero può essere compreso tra 0 e 7) https://www.freedesktop.org/software/systemd/man/systemd.exec.html

Modifica /etc/rsyslog.conf (trova le righe esistenti da modificare) in modo che local2 sia registrato in un file specifico (prima riga) e idealmente non registrato in syslog aggiungendo local2.nonecome mostrato (è già nel journal).

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

[modifica] è inoltre necessario modificare il fermo tutto

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

Ovviamente la ritenzione effettiva deve essere eseguita da logrotate.

HTH

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.