Jak konfigurować i zarządzać rotacją dziennika za pomocą logrotan w Linux

Jak konfigurować i zarządzać rotacją dziennika za pomocą logrotan w Linux

Jednym z najciekawszych (i być może jednego z najważniejszych również katalogów w systemie Linux jest /var/log. Zgodnie ze standardem hierarchii systemu plików, aktywność większości usług działających w systemie jest zapisywana do pliku w tym katalogu lub jednej z jego substancji.

Takie pliki są znane jako dzienniki i są kluczem do zbadania działania systemu (i jak zachowywał się w przeszłości). Dzienniki są również pierwszym źródłem informacji, w których wyglądają administratorzy i inżynierowie podczas rozwiązywania problemów.

Jeśli spojrzymy na zawartość /var/log na Centos/Rhel/Fedora I Debian/Ubuntu (dla różnorodności) zobaczymy następujące pliki dziennika i podkatalogowe.

Należy pamiętać, że wynik może być nieco inny w twoim przypadku w zależności od usług działających w systemie (systemach) i czasu ich uruchomienia.

W Rhel/Centos i Fedora

# ls /var /log 
Pliki dziennika i katalogi w CentOS 7

W Debian i Ubuntu

# ls /var /log 
Pliki dziennika i katalogi w Debian 8

W obu przypadkach możemy zauważyć, że niektóre nazwy dzienników kończą się zgodnie z oczekiwaniami "dziennik", podczas gdy inne są przemianowane za pomocą daty (na przykład, Maillog-20160822 NA Centos) lub skompresowane (rozważmy Auth.dziennik.2.GZ I Mysql.dziennik.1.GZ NA Debian).

Nie jest to domyślne zachowanie oparte na wybranej rozkładowi, ale można je zmienić w woli za pomocą dyrektyw w plikach konfiguracyjnych, jak zobaczymy w tym artykule.

Gdyby dzienniki były przechowywane na zawsze, ostatecznie ostatecznie wypełniłyby system plików, gdzie /var/log mieszka. Aby temu zapobiec, administrator systemu może użyć ładnego narzędzia o nazwie logrotat Aby okresowe wyczyszczenie dzienników.

W kilku słowach, logrotat Zmieni nazwę lub kompresję głównego dziennika, gdy spełniony jest warunek (więcej o tym za minutę), aby następne wydarzenie było rejestrowane na pustym pliku.

Ponadto usunie "stary" pliki dziennika i zachowają najnowsze. Oczywiście możemy zdecydować, co "stary" oznacza i jak często chcemy, aby logrotat wyczyścił dla nas dzienniki.

Instalowanie logrotanu w Linux

Żeby zainstalować logrotat, Po prostu użyj menedżera pakietów:

---------- Na Debian i Ubuntu ---------- # aktualizacja umiejętności i instalacja logrotatu ---------- Na Centos, Rhel i Fedora ---------- # Aktualizacja Yum && Yum Instaluj logrotate 

Warto zauważyć, że plik konfiguracyjny (/etc/logrotatan.conf) może wskazywać, że inne, bardziej szczegółowe ustawienia mogą być umieszczane na indywidualnych .conf pliki w środku /etc/logrotatan.D.

Sugerowane przeczytanie: Zarządzaj dziennikami systemowymi (konfiguruj, obracaj i importuj do bazy danych) za pomocą logrotatanu

Tak będzie, jeśli i tylko wtedy, gdy istnieje następujący wiersz i nie zostanie skomentowany:

obejmują /etc /logrotatan.D 

Będziemy trzymać się tego podejścia, ponieważ pomoże nam to zachować porządek i korzystać z DebiaN Pudełko dla następujących przykładów.

Skonfiguruj logrotat w Linux

Będąc bardzo wszechstronnym narzędziem, logrotat zapewnia wiele dyrektyw, które pomogą nam skonfigurować, kiedy i jak logi będą obracane, a co powinno się stać zaraz potem.

Włóżmy następujące treści /etc/logrotatan.D/Apache2.conf (Pamiętaj, że najprawdopodobniej będziesz musiał utworzyć ten plik) i zbadać każdą linię, aby wskazać jego cel:

Apache2.conf
/var/log/apache2/* cotygodniowe obracanie 3 Rozmiar 10 m Compress opóźnieniemPress 

Pierwsza linia wskazuje, że dyrektywy wewnątrz bloku mają zastosowanie do wszystkich dzienników w środku /var/log/apache2:

  • co tydzień oznacza, że ​​narzędzie będzie próbowało obracać dzienniki co tydzień. Inne możliwe wartości są codziennie i co miesiąc.
  • Obróć 3 wskazuje, że należy przechowywać tylko 3 obracane dzienniki. Zatem najstarszy plik zostanie usunięty w czwartym kolejnym uruchomieniu.
  • Rozmiar = 10 m Ustawia minimalny rozmiar, aby obrót odbył się na 10 m. Innymi słowy, każdy dziennik nie zostanie obrócony, dopóki nie osiągnie 10 MB.
  • Kompresja I opóźnienie są używane do stwierdzenia, że ​​wszystkie obrócone dzienniki, z wyjątkiem najnowszego, powinny zostać skompresowane.

Wykonajmy suchy bieg, aby zobaczyć, co zrobiłby logrotat, gdyby został teraz wykonany. Użyj -D Opcja, po której następuje plik konfiguracyjny (możesz faktycznie uruchomić logrotat, pomijając tę ​​opcję):

# logrotat -d /etc /logrotan.D/Apache2.conf 

Wyniki przedstawiono poniżej:

Obróć dzienniki Apache za pomocą logrotanu

Zamiast ściskać dzienniki, moglibyśmy je zmienić po nazwie data Kiedy zostały obrócone. Aby to zrobić, użyjemy DATEEXT dyrektywa. Jeśli nasz format daty jest inny niż domyślny YyyyMmdd, Możemy to określić za pomocą format daty.

Sugerowane przeczytanie: Zainstaluj „atop”, aby monitorować aktywność rejestrowania procesów systemowych Linux

Zauważ, że możemy nawet zapobiec rotacji, jeśli dziennik jest pusty Notifempty. Ponadto, powiedzmy Logrotate, aby wysłał obrócony dziennik do administratora systemu ([chroniony e -mail] w takim przypadku) dla jego / jej odniesienia (będzie to wymagało skonfigurowania serwera poczty, który jest poza zakresem tego artykułu).

Jeśli chcesz uzyskać e -maile o logrotatach, możesz skonfigurować serwer poczty postfix, jak pokazano tutaj: Zainstaluj pocztę pocztową postfix

Tym razem będziemy używać /etc/logrotatan.D/Squid.conf tylko się obracać /var/log/squid/access.dziennik:

kałamarnica.conf
/var/log/squid/access.log Monthly Utwórz 0644 root root Rotate 5 Rozmiar = 1m Dateext DateFormat -%d%m%y notifempty poczta [e -mail chroniony] 

Jak widać na poniższym obrazku, ten dziennik nie musiał być obracany. Jednak gdy stan rozmiaru jest spełniony (Rozmiar = 1m), obrócony dziennik zostanie przemianowany dostęp.Log-25082020 (Jeśli dziennik został obrócony 25 sierpnia 2020 r) i główny dziennik (dostęp.dziennik) zostanie odtworzone z ustawionymi uprawnieniami dostępu 0644 i z źródło Jako właściciel i właściciel grupy.

Wreszcie, gdy liczba dzienników w końcu sięgnie 6, najstarszy dziennik zostanie wysłany do poczty [chroniony e -mail].

Obróć dzienniki kałamarnicy za pomocą logrotatu

Załóżmy teraz, że chcesz uruchomić niestandardowe polecenie, gdy rotacja ma miejsce. Aby to zrobić, umieść wiersz z takim poleceniem między dyrektywami Postrotate i Endscript.

Załóżmy na przykład, że chcemy wysłać wiadomość e -mail do root, gdy którykolwiek z dzienników w środku /var/log/myservice Zostaje obracany. Dodajmy linie na czerwono do /etc/logrotatan.D/Squid.conf:

kałamarnica.conf
/var/log/myservice/* Miesięczny Utwórz 0644 Korzenie Obróć 5 Rozmiar = 1m Postrotat echo „Właśnie miała miejsce rotacja."| Poczta główna endscript  

Wreszcie, należy zauważyć, że opcje występują w /etc/logrotatan.D/*.conf Zastąp te w głównym pliku konfiguracyjnym w przypadku konfliktów.

Logrotat i Cron

Domyślnie instalacja logrotatu tworzy plik crontab w środku /etc/cron.codziennie o imieniu logrotat. Ponieważ tak jest w przypadku innych plików crontab w tym katalogu, zostanie on wykonywany codziennie od początku 6:25 Jeśli Anacron nie jest zainstalowany.

Sugerowane przeczytanie: 11 Przykłady zadań związanych z planowaniem cron w Linux

W przeciwnym razie wykonanie rozpocznie się 7:35. Aby zweryfikować, uważaj na linię zawierającą Cron.codziennie w obu /etc/crontab Lub /etc/anacrontab.

Streszczenie

W systemie, który generuje kilka dzienników, podawanie takich plików można znacznie uprościć za pomocą logrotatanu. Jak wyjaśniliśmy w tym artykule, będzie automatycznie obracać, kompresować, usuwać i pocztą okresowo lub gdy plik osiągnie dany rozmiar.

Upewnij się tylko, że ma działać jako zadanie CRON, a logrotat znacznie ułatwi ci sytuację. Aby uzyskać więcej informacji, patrz strona Man.

Czy masz jakieś pytania lub sugestie dotyczące tego artykułu? Daj nam znać, używając poniższego formularza komentarza.