Przejdź do głównej zawartości

Jak skonfigurować logrotate, aby automatycznie archiwizować logi i oszczędzać miejsce na serwerze

· 2 min aby przeczytać
Customer Care Engineer

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:

  1. Rotacja logów — jest to proces, w którym stare logi są przemianowywane i zapisywane, a w ich miejsce tworzone są nowe pliki.
  2. Kompresja — stare logi mogą zostać skompresowane do formatu .gz, aby zaoszczędzić miejsce.
  3. 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