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
}
/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
}
/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
}
{
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