¿Cómo ver los registros de Journalctl más antiguos (tal vez después de una rotación?)

23

Estoy ejecutando docker en ubuntu 16.04 y me gustaría ver los registros. Sin embargo, no puedo ver los registros después de lo que supongo que es algún tipo de rotación o los registros crecen hasta cierto tamaño.

No he realizado ningún cambio en mi journald.conf, por lo que estoy usando valores predeterminados allí.

Ejemplos de lo que estoy viendo:

systemctl docker statusconfirma que el servicio ha estado activo since Thu 2016-10-13 18:56:28 UTC.

Sin embargo, cuando ejecuto algo como journalctl -u docker.service --until "2016-10-13 22:00": el único resultado que obtengo es -- Logs begin at Fri 2016-10-14 01:18:49 UTC, end at Fri 2016-10-14 16:18:25 UTC. --que puedo ver los registros en ese rango como se esperaba.

Mi pregunta es ¿por qué no puedo ver los registros anteriores con journalctl y cómo puedo solucionar este problema para poder ver los registros?

jdf
fuente

Respuestas:

15

Puede deberse a que está intentando revisar el diario desde el último arranque, lo que parece ser el caso dentro de una imagen acoplable.

En Ubuntu 16.04, el almacenamiento diario está predeterminado en memoria. Puede cambiar el valor predeterminado para que sea persistente abriendo /etc/systemd/journald.confy cambiando la Storage=línea de autoa persistent. Es posible que deba reiniciar journald systemctl restart systemd-journalddespués de editar el archivo de configuración.

Creo que el diario debería ser persistente por defecto , así que abrí un error al respecto.

Mark Stosberg
fuente
Estoy de acuerdo con usted en que debería ser persistente por defecto (y cambiará esa configuración), pero estoy seguro de que esta máquina no se ha reiniciado, por lo que no estoy 100% convencido de que solo resolverá mi problema. Todavía me alegro de que hayas presentado ese problema.
jdf
Bajo ciertas condiciones, los registros pueden aterrizar en el diario con metadatos incompletos, de modo que se puedan encontrar al revisar la journalctlsalida completa pero no los registros de la unidad. Se sabe que esto sucede con los problemas de registros justo antes de que una unidad se apague. Los registros se envían a journald, y luego journald emite una consulta para los metadatos. A veces, mientras tanto, el proceso existe. Sin embargo, eso tampoco parece ser un ajuste perfecto para su caso.
Mark Stosberg
3

La razón por la que esto sucede es debido a los valores predeterminados en el tamaño de los archivos de journald almacenados. Hay más detalles sobre esto en los documentos . Vale la pena leer toda la sección a la que me he vinculado, pero los valores predeterminados funcionan así:

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.

Para ver los registros del último inicio, suponiendo que tenga Storage=persistenten su journald.conf, como se observa en las otras respuestas, puede usar el --boot=-1indicador en los journalctlcomandos para obtener registros del inicio anterior.

En el caso del OP donde estaban seguros de que el host no se había reiniciado, la pérdida de registros simplemente fue causada por los valores predeterminados SystemMaxUsey / o por SystemKeepFreedefecto.

Nota: Soy el OP y esta pregunta todavía tiene muchos votos positivos, así que desde que adquirí más experiencia con journald (y rtfm) estoy publicando esto aquí con la esperanza de que ayude a otros.

jdf
fuente