Ubuntu 26.04 / Journal- und Datei-Log-Aufbewahrung konfigurieren
Verwalten Sie die Aufbewahrung des Journals getrennt von der Rotation gewöhnlicher Textprotokolle. Identifizieren Sie zuerst die tatsächlichen Sammler und bewahren Sie die benötigten Aufzeichnungen auf, bevor Sie die Aufbewahrungsdauer reduzieren, da dies bestehende Historien löschen kann.
Identifizieren Sie die tatsächlichen Sammlungspfade
systemctl status systemd-journald rsyslog --no-pager
journalctl --disk-usage
journalctl --list-boots
ls /var/log
Ein System ohne rsyslog verfügt möglicherweise nicht über das vertraute /var/log/syslog. Rotieren Sie keine binären Journaldateien mit logrotate und löschen Sie diese nicht manuell. Überprüfen Sie ob jede Anwendung in ihre eigene Datei oder ins Journal schreibt.
Überprüfen Sie die Generierung und Suchfilter
logger -t ubuntu-course-log 'retention-lab-marker'
journalctl -t ubuntu-course-log --since '5 minutes ago' --no-pager
journalctl -b -p warning --no-pager
Finden Sie den neuen Marker und verengen Sie Boot-, Zeit-, Einheiten- und Prioritätsfilter nach Bedarf. Eine leere Ausgabe kann eine fehlgeschlagene Generierung oder eine nicht übereinstimmende Abfrage bedeuten; untersuchen Sie dies separat. Gewähren Sie nicht unnötig umfassenden Systemprotokollzugriff.
Verwalten Sie die Journalaufbewahrung über ein Drop-In
Für einen dedizierten VM-Test sichern Sie die vorhandenen Einstellungen und überprüfen Sie eine Datei wie /etc/systemd/journald.conf.d/60-lab-retention.conf. Diese kleinen Laborwerte stellen keine organisatorischen Aufbewahrungsanforderungen dar. Niedrigere Grenzen können ältere Einträge entfernen.
[Journal]
Storage=persistent
SystemMaxUse=200M
RuntimeMaxUse=50M
MaxRetentionSec=7day
Bereiten Sie den persistenten Speicher wie dokumentiert vor, starten Sie journald zum geplanten Zeitpunkt neu und überprüfen Sie journalctl --flush, die Festplattennutzung und einen neuen Marker. Aktive Dateien und Rotationszeiten bedeuten, dass ein Größenlimit nicht unbedingt eine sofortige exakte Byte-Grenze darstellt.
Journal-Einstellungen anwenden und den vorherigen Zustand wiederherstellen
Nur auf einer dedizierten VM testen, nachdem die erforderlichen Protokolle unabhängig gesichert wurden. Der Code stoppt, wenn die Labor-Datei existiert, und bewahrt die Drop-ins anderer Administratoren. Die Limits von 200M/50M/7 Tagen sind Beispiele für kleine Labore; das Wiederherstellen der Einstellungen kann bereits entfernte Historie nicht wiederherstellen.
(
set -eu
lab_conf=/etc/systemd/journald.conf.d/60-lab-retention.conf
if sudo test -e "$lab_conf" || sudo test -L "$lab_conf"; then
printf 'Existing lab file: inspect it instead of overwriting.\n' >&2
exit 1
fi
backup_dir=$(sudo mktemp -d /root/journal-before-lab.XXXXXX)
sudo cp -a /etc/systemd/journald.conf "$backup_dir/"
if sudo test -d /etc/systemd/journald.conf.d; then
sudo cp -a /etc/systemd/journald.conf.d "$backup_dir/"
fi
sudo install -d -m 0755 /etc/systemd/journald.conf.d
sudo sh -c 'set -C; cat > "$1"' sh "$lab_conf" <<'EOF'
[Journal]
Storage=persistent
SystemMaxUse=200M
RuntimeMaxUse=50M
MaxRetentionSec=7day
EOF
sudo systemd-analyze cat-config systemd/journald.conf
printf 'Review configuration and backup: %s\n' "$backup_dir"
)
Überprüfen Sie vor der Anwendung unten die vier Werte und alle späteren Überschreibungen in cat-config. Das Neustarten des Journaldienstes unterscheidet sich vom manuellen Löschen seiner Dateien. Prüfen Sie persistenten Speicher, Flush-Ergebnisse, Marker-Erzeugung und aufbewahrte Boot-Historie separat.
sudo systemctl restart systemd-journald.service && sudo journalctl --flush && sudo journalctl --disk-usage
logger -t ubuntu-course-log 'after-retention-change'
sudo journalctl -t ubuntu-course-log --since '5 minutes ago' --no-pager
Stellen Sie nur die neu erstellte 60-lab-retention.conf wieder her, nachdem Sie überprüft haben, dass sie weiterhin den Inhalt dieses Labors enthält und keine späteren Änderungen aufweist. Da das Labor frühere Dateien beibehalten hat, stellt das Entfernen davon die vorherige Konfigurationskombination wieder her, nicht gelöschte historische Protokolle.
sudo rm -- /etc/systemd/journald.conf.d/60-lab-retention.conf && sudo systemctl restart systemd-journald.service && sudo journalctl --flush
sudo systemd-analyze cat-config systemd/journald.conf
Führen Sie logrotate für temporäre Dateien aus
Mit installiertem logrotate verwendet der folgende Bash-Block ein neues Home-Verzeichnis-Labor und eine separate Statusdatei. Dabei bleiben der System-Rotationsstatus und echte Anwendungsprotokolle unberührt. Führen Sie den gesamten Block aus und notieren Sie den ausgegebenen Ordnerpfad.
work=$(mktemp -d "$HOME/logrotate-lab.XXXXXX")
for i in {1..200}; do printf 'lab line %04d\n' "$i"; done > "$work/app.log"
cat > "$work/logrotate.conf" <<EOF
"$work/app.log" {
size 1k
rotate 2
compress
missingok
notifempty
create 0600
}
EOF
logrotate -d -s "$work/state" "$work/logrotate.conf"
logrotate -s "$work/state" "$work/logrotate.conf"
ls -l "$work"
printf 'Lab folder: %s\n' "$work"
Der Debug-Modus zeigt den Plan in der Vorschau; der zweite Befehl rotiert. Überprüfen Sie das neue app.log und das komprimierte Archiv, und verwenden Sie dann gzip -cd "$work/app.log.1.gz", um die beibehaltenen Übungszeilen zu lesen. Echte Anwendungen können einen offenen Deskriptor behalten und benötigen eine dokumentierte Postrotate- oder Reload-Behandlung.
Überprüfen Sie die Wiederherstellung und die beibehaltene Historie
Stellen Sie nur das für das Labor geänderte Journal-Drop-in wieder her und wenden Sie die Einstellungen erneut an. Das Wiederherstellen der Richtlinie stellt bereits gelöschte Protokolle nicht wieder her; unabhängige Archive sind erforderlich. Überprüfen Sie den Laborordner und entfernen Sie nur die für diese Übung erstellten Dateien.
Dokumentieren Sie Kapazität, Dauer, autorisierte Leser, Umgang mit sensiblen Daten und Fehlererkennung zusammen. Überprüfen Sie die Service-Antworten, Erstellung, Suche und Lesbarkeit nach der Rotation als separate Ergebnisse.




