Tengo un servicio en particular, que registra información poco frecuente pero importante. Lo configuré hace unos meses, y hoy he corrido journalctl -n 50 --unit=my-service
solo para encontrar que no hay entradas.
Estoy perfectamente satisfecho con este comportamiento para la mayoría de las unidades: necesito algo que sucedió de inmediato (o hace unos días como máximo), y no me importan los registros de meses.
Sin embargo, ¿hay alguna manera de decir journald
que tenga una política de almacenamiento y retención independiente para los registros de una sola unidad en particular? Quiero persistir esos registros particulares durante, por ejemplo, 5 años, sin importar el tamaño que tome. Los registros de las otras unidades no se verán afectados por esto y conservarán su comportamiento actual.
Estoy algo perdido de comprensión journald.conf(5)
, y no puedo entender cuando la configuración por unidad es posible. Si es así, agradecería un breve ejemplo concreto, qué archivo debo editar / crear y qué debo escribir. O, si sabe con certeza que ciertamente no es factible, esa también sería una buena respuesta.
NOTA: Mi caso particular involucra el host Arch Linux, pero supongo que esto no debería importar mucho.
fuente
Respuestas:
Parece que probablemente no tengo suerte con journald. A menos que encuentre una manera de generar un diario independiente de "almacenamiento a largo plazo" (como actualmente hay diferentes diarios por usuario), pero no estoy seguro de que sea un enfoque viable y sensato. Supongo que configurar un syslogd (y logrotate) sería más fácil.
La función no estaba presente a fines de 2014 , como lo confirmó el propio Lennart.
Y parece que todavía no está aquí. Al menos, la línea "journald: permitir tiempos de retención por prioridad y por servicio al rotar / aspirar" todavía está en el archivo TODO (enlace a la revisión del 2016-07-11).
fuente
Es notablemente simple generar el archivo de registro. De manera predeterminada, todo el registro en journald también va a syslog y este valor predeterminado debe estar en su lugar. Rsyslog.conf controla cómo se manejan las entradas pasadas a syslog. Además, el valor
SyslogFacility
predeterminado es quedaemon
las entradas de registro para cualquier servicio generalmente terminan en eldaemon.log
archivo/var/log
.En su archivo de servicio, agregue a la sección [servicio]
(el número puede estar entre 0 y 7) https://www.freedesktop.org/software/systemd/man/systemd.exec.html
Modifique /etc/rsyslog.conf (busque las líneas existentes para modificar) de modo que local2 se registre en un archivo específico (primera línea) e idealmente no se registre en syslog agregando
local2.none
como se muestra (ya está en el diario).[editar] también necesitas modificar el catch all
Por supuesto, la retención real debe hacerse mediante logrotate.
HTH
fuente