Jak skonfigurować logrotate, aby automatycznie archiwizować logi i oszczędzać miejsce na serwerze
Zarządzanie logami jest kluczowym aspektem administracji serwerem. Logi, które nie są regularnie rotowane, mogą szybko zapełnić dysk, spowalniając działanie serwera i powodując nieprzewidywalne błędy. W tym artykule wyjaśnimy, jak skonfigurować i używać logrotate do automatycznego czyszczenia i rotacji logów na serwerze.
Czym jest logrotate i dlaczego warto go używać?
Logrotate to narzędzie przeznaczone do automatycznego zarządzania logami. Pomaga w:
- Czyszczeniu starych logów — automatycznie usuwa lub archiwizuje przestarzałe logi.
- Oszczędzaniu miejsca na dysku — kompresuje i usuwa niepotrzebne logi.
Rotacja logów pozwala uniknąć sytuacji, w której logi gromadzą się, prowadząc do przepełnienia dysku, co może spowodować awarie systemu i utratę danych. Logrotate automatycznie archiwizuje stare logi i zwalnia miejsce na nowe dane.
Jak działa logrotate?
Kiedy logrotate jest aktywowany, automatycznie wykonuje następujące kroki:
- Rotacja logów — jest to proces, w którym stare logi są przemianowywane i zapisywane, a w ich miejsce tworzone są nowe pliki.
- Kompresja — stare logi mogą zostać skompresowane do formatu .gz, aby zaoszczędzić miejsce.
- Usuwanie — przestarzałe logi mogą zostać usunięte, jeśli nie są już potrzebne.
Przykład: plik dziennika o nazwie access.log
może zostać przemianowany na access.log.1
, następnie skompresowany do access.log.1.gz
, a po upływie określonego czasu przechowywania, usunięty.
Jak skonfigurować logrotate?
1. Instalacja logrotate
Logrotate jest zwykle domyślnie instalowany na większości systemów Linux. Aby sprawdzić czy faktycznie już go masz, wpisz:
sudo logrotate --version
Jeśli logrotate nie jest zainstalowany, użyj menedżera pakietów.
- Dla Debiana/Ubuntu użyj:
sudo apt update && sudo apt install logrotate
- Dla CentOS/RockyLinux/AlmaLinux:
sudo yum install logrotate
2. Konfiguracja logrotate
Konfiguracja logrotate jest zwykle przechowywana w /etc/logrotate.conf
. Plik ten określa 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 serwisów w folderze /etc/logrotate.d/
.
Przykład standardowej konfiguracji dla Nginx:
/var/log/nginx/*.log {
daily # Logs are rotated daily
missingok # Do not display an error if the log is missing
rotate 7 # Keep 7 archived files
compress # Compress old logs
delaycompress # Delay compression until the next rotation
notifempty # Do not rotate empty files
create 0640 www-data adm # Create new logs with specific permissions
}
3. Ważne parametry konfiguracyjne
- daily/weekly/monthly — jak często log będzie rotowany (codziennie, co tydzień lub co miesiąc).
- rotate [N] — liczba archiwów logów, które mają być przechowywane.
- compress — kompresja archiwów logów (zwykle w formacie .gz).
- missingok — brak logów nie powoduje pokazania błędu.
- notifempty — nie rotuj pustych plików.
- create — stwórz nowe logi z uprawnieniami.
4. Uruchamianie logrotate
Logrotate jest zwykle uruchamiany automatycznie za pomocą cron. Można jednak uruchomić go ręcznie, jeśli trzeba sprawdzić konfigurację lub wykonać rotację teraz:
sudo logrotate -f /etc/logrotate.conf
5. Sprawdzanie, czy logrotate działa
Aby upewnić się, że logrotate działa poprawnie, sprawdź ostatnie wpisy w logu:
sudo journalctl -u logrotate -n 10