Rotacja logów
Ograniczanie rozrostu logów
Instrukcja opisuje ograniczenie rozrostu logów systemowych na Ubuntu w dwóch obszarach:
systemd-journald(journal) – logi usług systemd, kernela i komponentów systemowych- pliki w
/var/log(np.syslog,auth.log) – logi zapisywane zwykle przezrsyslogi rotowane przezlogrotate
Rotacja logów Dockera jest konfigurowana w daemon.json i została opisana w osobnej instrukcji.
Rotacja journald Rotacja plików /var/log
Szybki audyt
Sprawdzamy ile miejsca zajmuje journal:
sudo journalctl --disk-usage
Sprawdzamy największe katalogi w /var/log:
sudo du -sh /var/log/* 2>/dev/null | sort -h | tail -n 20
Konfiguracja journald
Konfigurujemy twarde limity w /etc/systemd/journald.conf, aby ograniczyć zużycie dysku przez journal.
Edycja konfiguracji
Otwieramy plik:
sudo micro /etc/systemd/journald.conf
W pliku ustawiamy (przykład bezpiecznych limitów na VPS – wartości dopasowujemy do dysku):
[Journal]
Storage=persistent
SystemMaxUse=500M
SystemKeepFree=1G
SystemMaxFileSize=50M
SystemMaxFiles=10
MaxRetentionSec=10day
Znaczenie ustawień:
Storage=persistent– przechowywanie journala na dysku (logi pozostają po restarcie)SystemMaxUse– maksymalny rozmiar journala na dysku (łącznie)SystemKeepFree– minimalna ilość wolnego miejsca na dyskuSystemMaxFileSize– limit dla pojedynczego pliku journalaSystemMaxFiles– maksymalna liczba plików journalaMaxRetentionSec– maksymalny czas retencji logów
Zastosowanie zmian
Restartujemy journald:
sudo systemctl restart systemd-journald
Weryfikujemy rozmiar po zmianach:
sudo journalctl --disk-usage
Ręczne czyszczenie journala
Jeśli journal już urósł, usuwamy starsze wpisy.
Zostawiamy tylko 7 dni:
sudo journalctl --vacuum-time=7d
Albo zostawiamy maksymalnie 300 MB:
sudo journalctl --vacuum-size=300M
Rotacja plików /var/log (logrotate)
Logi typu syslog, auth.log, kern.log, daemon.log są zwykle zapisywane przez rsyslog i rotowane przez logrotate.
Weryfikacja działania rsyslog
Sprawdzamy status usługi:
systemctl status rsyslog --no-pager
Konfiguracja rotacji rsyslog
Edycja konfiguracji rotacji znajduje się zwykle w:
/etc/logrotate.d/rsyslog
Otwieramy plik:
sudo micro /etc/logrotate.d/rsyslog
W pliku ustawiamy (rotacja tygodniowa lub po rozmiarze, kompresja, 14 kopii):
/var/log/syslog
/var/log/auth.log
/var/log/kern.log
/var/log/daemon.log
{
rotate 14
weekly
size 50M
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}
Duplikacja logów (journald vs /var/log)
To normalne, że część zdarzeń widzimy jednocześnie w journald i w /var/log/*.
Na początku pozostawiamy oba źródła logów.
Testowanie i weryfikacja
Testujemy konfigurację logrotate bez wykonywania:
sudo logrotate -d /etc/logrotate.conf
Wymuszamy rotację jednorazowo:
sudo logrotate -f /etc/logrotate.conf
Sprawdzamy, czy pliki się obracają:
ls -la /var/log | grep -E 'syslog|auth\.log|kern\.log|daemon\.log'
Sprawdzamy rozmiar journala:
sudo journalctl --disk-usage
Komendy do codziennego użycia
Wyświetlamy ostatnie 100 wpisów z journald:
sudo journalctl -n 100 --no-pager
Wyświetlamy ostatnie 100 wpisów z usługi SSH:
sudo journalctl -u ssh -n 100 --no-pager
Wyświetlamy ostatnie 200 linii z auth.log:
sudo tail -n 200 /var/log/auth.log