Ich habe einen bestimmten Dienst, der seltene, aber wichtige Informationen protokolliert. Ich habe es vor einigen Monaten eingerichtet und bin heute journalctl -n 50 --unit=my-service
nur gelaufen , um festzustellen, dass es keine Einträge gibt.
Ich bin mit diesem Verhalten für die meisten Einheiten vollkommen zufrieden - ich brauche entweder etwas, das sofort passiert ist (oder höchstens vor ein paar Tagen), und mir sind monatelange Aufzeichnungen egal.
Gibt es jedoch eine Möglichkeit, journald
eine unabhängige Speicher- und Aufbewahrungsrichtlinie für die Datensätze einer einzelnen Einheit festzulegen? Ich möchte diese speziellen Protokolle beispielsweise 5 Jahre lang beibehalten - unabhängig von der Größe, die sie benötigen würden. Die Protokolle der anderen Einheiten sollten davon nicht betroffen sein und ihr vorhandenes Verhalten beibehalten.
Ich habe irgendwie das Verständnis verloren journald.conf(5)
und kann nicht herausfinden, wann eine Konfiguration pro Einheit überhaupt möglich ist. Wenn ja, würde ich mich über ein kurzes konkretes Beispiel freuen, welche Datei ich bearbeiten / erstellen und was ich schreiben soll. Oder wenn Sie sicher wissen, dass dies sicherlich nicht machbar ist, wäre dies auch eine gute Antwort.
HINWEIS: Mein spezieller Fall betrifft den Arch Linux-Host, aber ich denke, das sollte nicht viel ausmachen.
quelle
Antworten:
Scheint, dass ich mit Journald höchstwahrscheinlich kein Glück habe. Es sei denn, ich werde einen Weg finden, um ein unabhängiges "Langzeitspeicher" -Journal zu erstellen (wie derzeit verschiedene Benutzerjournale), aber ich bin mir nicht sicher, ob dies ein praktikabler und vernünftiger Ansatz ist. Ich denke, das Einrichten eines Syslogd (und eines Logrotats) wäre einfacher.
Das Feature war Ende 2014 nicht vorhanden , wie Lennart selbst bestätigt hat.
Und es scheint, dass es noch nicht hier ist. Zumindest befindet sich die Zeile "Journald: Aufbewahrungszeiten pro Priorität und pro Service beim Drehen / Staubsaugen zulassen" noch in der TODO-Datei (Link zur Überarbeitung vom 11.07.2016).
quelle
Es ist bemerkenswert einfach, die Protokolldatei zu generieren. Standardmäßig geht die gesamte Protokollierung in Journald auch in Syslog, und diese Standardeinstellung muss vorhanden sein. Die rsyslog.conf steuert, wie die an syslog übergebenen Einträge behandelt werden. Außerdem werden
SyslogFacility
standardmäßigdaemon
die Protokolleinträge für jeden Dienst in derdaemon.log
Datei in gespeichert/var/log
.Fügen Sie in Ihrer Servicedatei den Abschnitt [Service] hinzu
(Die Anzahl kann zwischen 0 und 7 liegen.) https://www.freedesktop.org/software/systemd/man/systemd.exec.html
Ändern Sie die Datei /etc/rsyslog.conf (suchen Sie die zu ändernden vorhandenen Zeilen) so, dass local2 in einer bestimmten Datei (erste Zeile) protokolliert und im Idealfall nicht
local2.none
wie gezeigt in syslog protokolliert wird (sie befindet sich bereits im Journal).[bearbeiten] Sie müssen auch den Fang alle ändern
Natürlich muss die eigentliche Aufbewahrung dann per Logrotate erfolgen.
HTH
quelle