Articles

Konfiguracja Logrotate w RedHat Linux

Posted on

Logrotate jest narzędziem zaprojektowanym dla administratorów, którzy zarządzają serwerami produkującymi dużą ilość plików logów, aby pomóc im zaoszczędzić trochę miejsca na dysku, jak również uniknąć potencjalnego ryzyka spowodowania braku reakcji systemu z powodu braku miejsca na dysku. Zwykle rozwiązaniem pozwalającym na uniknięcie tego typu problemów jest utworzenie osobnej partycji lub woluminu logicznego dla punktu montowania /var. Jednakże, logrotate może być również realnym rozwiązaniem tego problemu, zwłaszcza jeśli jest już za późno na przeniesienie wszystkich logów na inną partycję. W tym artykule porozmawiamy o użyciu i konfiguracji logrotate na serwerze RedHat / CentOS Linux.

Czym jest Logrotate

Logrotate zapewnia administratorowi systemu możliwość systematycznego obracania i archiwizowania wszelkich plików dziennika produkowanych przez system, a tym samym zmniejsza zapotrzebowanie systemu operacyjnego na miejsce na dysku. Domyślnie logrotate jest wywoływany raz dziennie przy użyciu harmonogramu cron z lokalizacji /etc/cron.daily/

# ls /etc/cron.daily/
cups logrotate makewhatis.cron mlocate.cron prelink readahead.cron rhsmd tmpwatch

Konfigurowanie Logrotate

Konfiguracja Logrotate odbywa się poprzez edycję dwóch oddzielnych plików konfiguracyjnych:

  • /etc/logrotate.conf
  • specyficzne dla usługi pliki konfiguracyjne przechowywane w /etc/logrotate.d/.

Główny plik logrotate.conf zawiera ogólną konfigurację. Oto domyślny plik konfiguracyjny logrotate logrotate.conf:

 1 weekly 2 rotate 4 3 create 4 dateext 5 include /etc/logrotate.d 6 /var/log/wtmp { 7 monthly 8 create 0664 root utmp 9 minsize 1M 10 rotate 1 11 }
  • Linia 1 – opcja konfiguracji tygodniowej zapewnia cotygodniową rotację wszystkich plików dziennika zdefiniowanych w głównym pliku konfiguracyjnym i w katalogu /etc/logrotate.d/.
  • Linia 2 – rotate 4 zapewnia, że logrotate zachowuje kopię zapasową wszystkich plików dziennika przez 4 tygodnie
  • Linia 3 – opcja create nakazuje logrotate tworzenie nowych pustych plików dziennika po każdej rotacji
  • Linia 4 – dateext dodaje rozszerzenie do wszystkich rotowanych plików dziennika w postaci daty, kiedy dany plik dziennika został przetworzony przez logrotate
  • Linia 5 – włącz wszystkie inne konfiguracje z katalogu /etc/logrotate.d
  • Linia 6 – 11 zawiera specyficzną konfigurację rotacji logów usługi

W przeciwieństwie do logrotate.conf katalog /etc/logrotate.d/ zawiera specyficzne pliki konfiguracyjne usługi używane przez logrotate. W następnej sekcji stworzymy przykładową konfigurację szkieletu logrotate.

SUBSKRYBUJ NEWSLETTER & RSS
Zapisz się do RSS i NEWSLETTERA i otrzymuj najnowsze wiadomości o Linuksie, ofertach pracy, poradach zawodowych i tutorialach.

Włączanie nowych logów serwisowych do logrotate

W tej sekcji dodamy nowy plik log do konfiguracji logrotate. Załóżmy, że mamy plik dziennika o nazwie:

/var/log/linuxcareer.log

siedzący w naszym katalogu /var/log, który musi być rotowany codziennie. Najpierw musimy stworzyć nowy plik konfiguracyjny logrotate, aby dostosować go do naszego nowego pliku dziennika:

$ vi /etc/logrotate.d/linuxcareer

Wstaw następujący tekst do /etc/logrotate.d/linuxcareer:

/var/log/linuxcareer.log {
missingok
notifempty
compress
size 20k
daily
create 0600 root root
}

Tutaj znajduje się wyjaśnienie linia po linii powyższego pliku konfiguracyjnego logrotate:

WSKAZÓWKA: Jeśli chcesz dołączyć wiele plików dziennika w jednym pliku konfiguracyjnym, użyj symbolu wieloznacznego. Na przykład /var/log/mylogs/*.log poinstruuje logrotate aby rotował wszystkie pliki logów znajdujące się w /var/log/mylogs/ z rozszerzeniem .log.

  • missingok – nie wyświetlaj błędu, jeśli plik dziennika jest pusty
  • notifempty – nie obracaj pliku dziennika, jeśli jest pusty
  • compress – stare wersje plików dziennika są domyślnie kompresowane za pomocą gzip(1)
  • size – plik dziennika jest obracany tylko wtedy, gdy jest pusty
  • size – plik dziennika jest obracany tylko wtedy, gdy jest pusty
  • . Plik dziennika jest rotowany tylko wtedy, gdy jego rozmiar jest większy niż 20k
  • daily – zapewnia codzienną rotację
  • create – tworzy nowy plik dziennika z uprawnieniami 600, gdzie właścicielem i grupą jest użytkownik root

Narzędzie logrotate jest dość wszechstronne, jako że dostarcza wielu opcji konfiguracyjnych. Poniżej wymienię kilka innych opcji konfiguracyjnych dla rotacji logów. Aby uzyskać pełną listę, skonsultuj stronę podręcznika logrotate:

$ man logrotate
  • copy – Wykonaj kopię pliku dziennika, ale nie zmieniaj oryginału w ogóle.
  • mail <email@address> – Kiedy log jest obracany z nieistnienia, jest wysyłany na adres.
  • olddir <directory> – Logi są przenoszone do <directory> w celu rotacji.
  • postrotate/endscript – Linie pomiędzy postrotate i endscript są wykonywane po rotacji pliku logu.

Testowanie nowej konfiguracji Logrotate

Po utworzeniu nowego pliku konfiguracyjnego logrotate w obrębie /etc/logrotate.d:

utwórz jakiś przykładowy plik dziennika (jeśli nie istnieje!):

# echo "rotate my log file" > /var/log/linuxcareer.log

Gdy plik dziennika jest już na miejscu, zmuś logrotate do rotacji wszystkich dzienników za pomocą opcji -f.

# logrotate -f /etc/logrotate.conf

Ostrzeżenie: Powyższe polecenie spowoduje rotację wszystkich logów zdefiniowanych w katalogu /etc/logrotate.d.

Teraz odwiedź ponownie katalog /var/log/directory i potwierdź, że Twój plik dziennika został obrócony i utworzony został nowy plik dziennika:

Jak widać nowy pusty plik dziennika linuxcareer.log został utworzony, a stary plik linuxcareer.log został skompresowany przy użyciu gzip i zmienił nazwę z rozszerzeniem daty.

TIP: Aby zobaczyć zawartość skompresowanego pliku logu nie musisz go najpierw dekompresować. Użyj komend zcat lub zless, które zdekompresują twój plik dziennika w locie.

Wnioski

Jak już zostało wspomniane wcześniej, najlepszym sposobem na uniknięcie zapchania systemu przez pliki dziennika jest stworzenie oddzielnej partycji/wolumenu logicznego dla katalogu /var/ lub nawet lepiej /var/log. Jednakże, nawet wtedy logrotate może pomóc zaoszczędzić trochę miejsca na dysku poprzez kompresję plików dziennika. Logrotate może również pomóc w archiwizacji plików dziennika dla przyszłego odniesienia poprzez utworzenie dodatkowej kopii lub poprzez wysłanie e-maila z nowo obróconymi plikami dziennika. Aby uzyskać więcej informacji zobacz stronę podręcznika logrotate:

$ man logrotate

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *