¿Cómo visualizo los mensajes de registro de las botas anteriores en CentOS 7?

78

La ejecución journalctlen un sistema CentOS 7 solo imprime los mensajes generados después del último arranque.

El comando

# journalctl --boot=-1

huellas dactilares

Failed to look up boot -1: Cannot assign requested address

y sale con estado 1.

Comparándolo con un sistema Fedora actual, noté que CentOS 7 no tiene /var/log/journal(y journalctlno proporciona --list-boots).

Por lo tanto, mi pregunta sobre cómo mostrar los mensajes de registro que se escribieron antes de la última fecha de arranque.

¿O tal vez esta funcionalidad tiene que estar habilitada en CentOS 7?

(La journalctlpágina del manual enumera 'systemd 208' como número de versión).

maxschlepzig
fuente

Respuestas:

99

tl; dr

En CentOS 7, debe habilitar el almacenamiento persistente de mensajes de registro:

# mkdir /var/log/journal
# systemd-tmpfiles --create --prefix /var/log/journal
# systemctl restart systemd-journald

De lo contrario, los mensajes de registro de diario no se retienen entre las botas.

Detalles

Si se journaldconservan los mensajes de registro de las botas anteriores se configura a través de /etc/systemd/journald.conf. La configuración predeterminada en CentOS 7 es:

[Journal]
Storage=auto

Donde la página del manual journald.conf explica autocomo:

Uno de "volátil", "persistente", "automático" y "ninguno". Si es "volátil", los datos del registro del diario se almacenarán solo en la memoria, es decir, debajo de la jerarquía / run / log / journal (que se crea si es necesario). Si es "persistente", los datos se almacenarán preferiblemente en el disco, es decir, debajo de la jerarquía / var / log / journal (que se crea si es necesario), con un respaldo a / run / log / journal (que se crea si es necesario), durante arranque temprano y si el disco no es grabable. " auto " es similar a "persistente" pero el directorio / var / log / journal no se crea si es necesario, de modo que su existencia controla dónde van los datos de registro .

(enfatizar el mío)

La página del comando man systemd-journald.service indica que:

Por defecto, el diario almacena datos de registro en / run / log / journal /. Como / run / es volátil, los datos de registro se pierden al reiniciar. Para que los datos sean persistentes, es suficiente crear / var / log / journal / donde systemd-journald almacenará los datos.

Aparentemente, el valor predeterminado se cambió en Fedora 19 (para almacenamiento persistente) y dado que CentOS 7 se deriva de Fedora 18, todavía no es persistente allí, de manera predeterminada. La persistencia se implementa por defecto fuera de journald vía /var/log/messagesy las versiones rotadas /var/log/messages-YYYYMMDDque están escritas por rsyslogd (que se ejecuta por defecto y obtiene su entrada de journald).

Por lo tanto, para habilitar el registro persistente con journald bajo RHEL / CentOS 7, uno tiene que

# mkdir /var/log/journal

y luego corrige los permisos y reinicia el diario, por ejemplo

# systemd-tmpfiles --create --prefix /var/log/journal
# systemctl restart systemd-journald
maxschlepzig
fuente
66
A systemctl restart systemd-journalddebería hacerlo. Por lo tanto, no se requiere reiniciar.
xx4h
@ xx4h, actualizó la respuesta
maxschlepzig
99
En debian esto está documentado en /usr/share/doc/systemd/README.Debian: install -d -g systemd-journal /var/log/journal.
pevik
@pevik, he mirado un sistema CentOS 7 (donde acabo de usar mkdir) y los permisos actuales son drwxr-sr-x. 3 root systemd-journal- quizás journald corrige los permisos / propiedad durante la inicialización.
maxschlepzig
8
Aprendí un buen truco: si envías una USR1señal en lugar de reiniciar, no pierdes el contenido actual del diario. killall -USR1 systemd-journald
James B
1
systemctl restart systemd-journald

Puede perder sus registros: consulte https://github.com/systemd/systemd/issues/2236

mkdir /var/log/journal

Hay un cambio en v208:

systemd-journald ya no ajustará el grupo de archivos de diario que crea al grupo "systemd-journal". En su lugar, confiamos en que el directorio del diario sea propiedad del grupo "systemd-journal" y su conjunto de bits setgid, de modo que la capa del sistema de archivos del núcleo impondrá automáticamente que los archivos del diario hereden esta asignación de grupo.

Un fragmento tmpfiles.d (5) incluido en systemd se asegurará de que el bit setgid y el grupo estén configurados correctamente en el directorio de diario si existe en cada arranque.

Entonces, deberías ejecutar algo como systemd-tmpfiles --create --prefix /var/log/journaldespuésmkdir /var/log/journal

Ver también :

Evgeny Vereshchagin
fuente
Hm, o hacer un `chmod 4755 / var / log / journal; raíz conocida: systemd-journal!: 2 '- o simplemente reinicie. Actualizaré mi respuesta.
maxschlepzig
@maxschlepzig, solo reiniciar no funciona: github.com/systemd/systemd/pull/1398#issuecomment-144247498
Evgeny Vereshchagin
chmod 4755 /var/log/journal; chown root:systemd-journal !:2funciona bien. pero tmpfiles: use magia ACL en directorios de revistas
Evgeny Vereshchagin
ok, otro error :) - He actualizado mi respuesta.
maxschlepzig