Come visualizzare i registri journalctl più vecchi (forse dopo una rotazione?)


23

Sono in esecuzione docker su Ubuntu 16.04 e vorrei visualizzare i registri. Tuttavia, non riesco a visualizzare i registri dopo quello che suppongo sia una sorta di rotazione o i registri crescono fino a una certa dimensione.

Non ho apportato modifiche al mio journald.conf, quindi sto usando le impostazioni predefinite lì.

Esempi di ciò che vedo:

systemctl docker statusconferma che il servizio è stato attivo since Thu 2016-10-13 18:56:28 UTC.

Tuttavia, quando eseguo qualcosa del genere journalctl -u docker.service --until "2016-10-13 22:00", l'unico output che ottengo è -- Logs begin at Fri 2016-10-14 01:18:49 UTC, end at Fri 2016-10-14 16:18:25 UTC. --che posso visualizzare i log in quell'intervallo come previsto.

La mia domanda è: perché non posso visualizzare i registri più vecchi con journalctl e come posso risolvere questo problema in modo da poter visualizzare i registri?

Risposte:


15

Potrebbe essere perché stai cercando di rivedere il diario dall'ultimo avvio, il che sembra essere il caso all'interno di un'immagine docker.

Su Ubuntu 16.04, per impostazione predefinita la memoria del journal è in memoria. È possibile modificare il valore predefinito in modo che sia persistente aprendo /etc/systemd/journald.confe cambiando la Storage=linea da autoa persistent. Potrebbe essere necessario riavviare journald systemctl restart systemd-journalddopo la modifica del file di configurazione.

Penso che il diario debba essere persistente per impostazione predefinita , quindi ho aperto un bug al riguardo.


Sono d'accordo con te che dovrebbe essere persistente per impostazione predefinita (e cambierà tale impostazione), ma sono certo che questa macchina non è stata riavviata, quindi non sono convinto al 100% che da solo risolverà il mio problema. Sono contento che tu abbia presentato il problema.
jdf,

In determinate condizioni, i registri possono atterrare nel journal con metadati incompleti, in modo che possano essere trovati durante la revisione dell'intero journalctloutput ma non dei registri dell'unità. È noto che ciò accade per registrare i problemi appena prima che un'unità si spenga. I registri vengono inviati a journald e quindi journald invia una query per i metadati. A volte nel frattempo il processo esiste. Anche questo non suona come se fosse perfetto per il tuo caso, però.
Mark Stosberg,

3

Il motivo per cui ciò accade è a causa delle impostazioni predefinite sulla dimensione dei file journald memorizzati. Ci sono più dettagli su questo nei documenti . Vale la pena di leggere l'intera sezione a cui ho collegato, ma le impostazioni predefinite funzionano così:

journald will use 10% of the disk or 4G, whichever is smaller.

journald will leave free 15% of the disk or 4G, whichever is larger.

Per visualizzare i log dall'ultimo avvio, supponendo che tu abbia Storage=persistentnel tuo journald.conf, come le altre note di risposta, puoi usare il --boot=-1flag sui journalctlcomandi per ottenere i log solo dall'avvio precedente.

Nel caso del PO in cui erano sicuri che l'host non fosse stato riavviato, la perdita dei registri era semplicemente causata dalle impostazioni predefinite SystemMaxUsee / o SystemKeepFree.

Nota: sono l'OP e questa domanda ha ancora dei voti positivi, quindi da quando ho acquisito più esperienza con journald (e rtfm) sto pubblicando questo qui nella speranza che aiuti gli altri.

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.