Przejdź do głównej zawartości

Jak skonfigurować logrotate do automatycznego archiwizowania logów i oszczędzania miejsca na serwerze

· 2 min aby przeczytać
Customer Care Engineer

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:

  1. Rotacja logów — stare logi są przemianowywane i przechowywane, podczas gdy w ich miejsce tworzone są nowe pliki.
  2. Kompresja — stare logi mogą być kompresowane do formatu .gz w celu oszczędności miejsca.
  3. 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