Zarządzanie logami systemowymi (logrotate) - rotowanie logów

Red Hat 6.x / CentOS 6.x
Ważnym aspektem dbania o porządek w logach systemowych jest ich rotacja. Bez niej pliki rosłyby do niebotycznych rozmiarów zapychając nam filesystem. Na szczęście z pomocą przychodzi nam logrotate, który uruchamiany cyklicznie przez cron porządkuje nam pliki.

Konfiguracja logrotate odbywa się poprzez pliki /etc/logrotate.conf oraz /etc/logrotate.d/*. Każdy instalowany pakiet może umieścić swoje definicje rotacji logów w katalogu /etc/logrotate.d nie ingerując w zawartość głównego pliku konfiguracyjnego.

Struktura konfiguracji rotacji sprowadza się do zdefiniowania kilku opcji, które opisane są w manualu dla logrotate. Możemy zdefiniować częstotliwość rotacji w odstępach czasowych (daily, weekly, monthly lub yearly) lub po uzyskaniu przez log zadanej zajętości (opcje size, minsize oraz maxsize). Przy użyciu opcji rotate możemy określić ilość archiwalnych plików pozostawionych w systemie, a użycie compress pozwala na automatyczne gzipowanie zrotowanych logów. Możemy również definiować takie opcje jak uruchamianie skryptów przed i po rotacji pliku, adres email na który mają być wysyłane zrotowane logi, oraz kilkanaście innych.

Przykładowa konfiguracja może wyglądać następująco:

[root@rsyslog-server logrotate.d]# vi remote_rsyslog
/var/log/rsyslog-server/*
{
    create 0600 root root
    weekly
    rotate 10
    minsize 1M
    compress
}

Powyższy przykład realizuje cotygodniową(weekly) rotację wszystkich logów zapisywanych do katalogu /var/log/rsyslog-server/, jeśli ich objętość jest większa niż 1Mb (minsize). Nowe pliki logów będą tworzone z uprawnieniami rw dla użytkownika root (create). Po rotacji logi zostaną skompresowane (compress), a w systemie pozostanie 10 najnowszych logów (rotate).

Określenie takich definicji jest możliwe zarówno dla pojedynczego pliku, wszystkich plików w danym katalogu, ale również dla kilku niezależnie ulokowanych plików . Aby zastosować reguły dla kilku plików należy umieścić ich nazwy w kolejnych liniach przed definicjami rotacji, np:

/var/log/rsyslog-server/cups
/var/log/rsyslog-server/sshd
/var/log/rsyslog-c1/cups
/var/log/rsyslog-c1/sshd
/var/log/rsyslog-c2/sshd
{
    daily
    rotate 10
    minsize 1M
    compress
}

Standardowo po zrotowaniu pliku dodawana jest na końcu jego nazwy kolejna cyfra. Możemy przedefiniować to zachowanie, używając jako wyróżnika daty rotacji. Służą do tego dwie opcje: dateext, który informuje rsyslog, że chcemy używać dat, oraz dateformat, który zdefiniuje nam format w jakim data będzie zapisywana, np:

/var/log/rsyslog-server/*
{
    weekly
    rotate 10
    dateext
    dateformat -%Y%m%d
}

Domyślnym formatem daty jest właśnie -%Y%m%d, czyli -{rok}{miesiac}{dzien}, i jeśli jest on dla nas zadowalający, możemy pominąć parametr dateformat.

Logrotate zapisuje daty ostatniej rotacji poszczególnych logów w pliku /var/lib/logrotate.status, więc w każdej chwili możemy podejrzeć kiedy dany plik był ostatnio zrotowany.

Brak komentarzy:

Prześlij komentarz