Jak skonfigurować logrotate do automatycznego archiwizowania logów i oszczędzania miejsca na serwerze
Zarządzanie logami jest kluczową częścią pracy każdego administratora serwera. Nie rotowane logi mogą szybko zająć całą dostępną przestrzeń dyskową, spowolnić serwer i spowodować nieprzewidziane błędy. W tym artykule wyjaśnimy, jak skonfigurować i używać program logrotate do automatycznego czyszczenia i rotacji logów na serwerze.
Co to jest logrotate i dlaczego ważne jest, aby go używać?
Logrotate to narzędzie przeznaczone do automatycznego zarządzania logami. Pomaga to:
- Czyszczeniu starych logów — automatycznie usuwa lub archiwizuje stare pliki logów.
- Oszczędzaniu miejsca na dysku — kompresuje i usuwa niepotrzebne logi.
Rotacja logów zapobiega ich gromadzeniu się i zapełnianiu dysku, co mogłoby prowadzić do awarii i utraty danych. Logrotate automatycznie archiwizuje stare logi i zwalnia miejsce na nowe dane.
Jak działa logrotate?
Gdy logrotate jest aktywny, automatycznie wykonuje następujące kroki:
- Rotacja logów — stare logi są przemianowywane i przechowywane, podczas gdy w ich miejsce tworzone są nowe pliki.
- Kompresja — stare logi mogą być kompresowane do formatu .gz w celu oszczędności miejsca.
- Usuwanie — przestarzałe logi mogą zostać usunięte, jeśli nie są już potrzebne.
Przykład: Plik logu o nazwie access.log może zostać przekształcony w access.log.1, następnie skompresowany do access.log.1.gz, a ostatecznie usunięty po upływie określonego okresu przechowywania.
---
Jak skonfigurować logrotate
1. Instalacja logrotate
Na większości systemów Linux logrotate jest preinstalowany. Aby sprawdzić, czy logrotate jest zainstalowany, uruchom polecenie:
sudo logrotate --version
Jeśli logrotate nie jest zainstalowany, można go zainstalować za pomocą menedżera pakietów.
- Dla Debian/Ubuntu:
sudo apt update && sudo apt install logrotate
- Dla CentOS/RockyLinux/AlmaLinux:
sudo yum install logrotate
2. Konfiguracja logrotate
Konfiguracja logrotate jest zazwyczaj przechowywana w pliku /etc/logrotate.conf. Ten plik zawiera ogólne parametry dla wszystkich logów na serwerze. Aby skonfigurować rotację poszczególnych logów, można utworzyć oddzielne pliki konfiguracyjne dla różnych usług w katalogu /etc/logrotate.d/.
Przykład standardowej konfiguracji Nginx:
/var/log/nginx/*.log {
daily # Logi są rotowane codziennie
missingok # Nie wyświetlaj błędu, jeśli logu brakuje
rotate 7 # Zachowaj 7 zarchiwizowanych plików
compress # Kompresuj stare logi
delaycompress # Opóźnij kompresję do następnej rotacji
notifempty # Nie rotuj pustych plików
create 0640 www-data adm # Twórz nowe logi z określonymi uprawnieniami
}
3. Kluczowe parametry konfiguracyjne
- daily/weekly/monthly — określa, jak często plik logu będzie rotowany (codziennie, co tydzień lub co miesiąc).
- rotate [N] — określa liczbę zachowywanych zarchiwizowanych logów.
- compress — włącza kompresję plików logu (zazwyczaj do formatu .gz).
- missingok — zapobiega błędom, jeśli plik logu nie istnieje.
- notifempty — pomija rotację pustych plików.
- create — tworzy nowe logi z określonymi uprawnieniami.
4. Uruchamianie logrotate
Logrotate zazwyczaj uruchamia się automatycznie za pośrednictwem cron. Jednak można go uruchomić ręcznie, jeśli chcesz sprawdzić konfigurację lub od razu wykonać rotację:
sudo logrotate -f /etc/logrotate.conf
5. Weryfikacja działania logrotate
Aby upewnić się, że logrotate działa poprawnie, możesz sprawdzić ostatnie wpisy w jego dzienniku serwisowym:
sudo journalctl -u logrotate -n 10