Syslog Dziennik systemowy
System rejestrujący zdarzenia - syslog Jądro systemu, usługi systemowe i różne aplikacje zapisują informacje o swoim działaniu w dziennikach systemowych (logach). Dlatego pierwszym miejscem, do którego należy zajrzeć, kiedy jakaś usługa nie uruchamia się poprawnie, jest odpowiedni dziennik. W systemach uniksowych i linuksowych dominującym systemem rejestracji zdarzeń jest syslog. Poznamy bliżej jedną z jego nowszych wersji o nazwie rsyslog.
Katalog dzienników /var/log Pliki do których syslog zapisuje zdarzenia
Pliki w /var/log messages lub syslog - główny dziennik systemowy dmesg - komunikaty o urządzeniach wykrytych w trakcie startu systemu i o ładowanych sterownikach do tych urządzeń, do ich obejrzenia można posłużyć się programem dmesg boot.log - komunikaty skryptów startowych daemon.log - komunikaty usług kern.log - wszystkie komunikaty generowanie przez jądro auth.log - komunikaty pochodzące z części systemu odpowiedzialnej za uwierzytelnianie użytkowników (np. informacje o poleceniach wykonanych przez sudo) mail.log - komunikaty związane z obsługą poczty wtmp - zapisy logowania użytkowników do systemu, do ich oglądania służy polecenie last lastlog - informacja o ostatnich logowaniach, do jej oglądania służy polecenie lastlog
Konfiguracja demona syslog (rsyslog) Za zbieranie informacji o działaniu systemu i umieszczania ich w plikach odpowiada usługa systemowa syslogd (lub nowsza rsyslogd). Plikiem konfiguracyjnym dla syslogd jest /etc/syslog.conf a dla rsyslogd /etc/rsyslog.conf (zachowana jest zgodność wstecz). (r)syslog umożliwia sortowanie komunikatów ze względu na źródło ich pochodzenia i stopień ważności oraz na kierowanie ich w różne miejsca: do plików, na terminale użytkowników a także na inne komputery.
Plik konfiguracyjny Plik konfiguracyjny opisuje reguły systemu rejestrowania. Podstawowy format jest następujący: usługa.poziom <tab> przeznaczenie Usługa określa z jakiej części systemu pochodzi informacja. Może przyjąć następujące wartości: auth, authpriv, cron, daemon, kern, ftp, local0-7, lpr, mail, mark, news, syslog, user, uucp.
Plik konfiguracyjny c.d. Poziom określa priorytety komunikatów. Wszystkie wiadomości o tym lub wyższym priorytecie trafiają do dziennika. Poziomy ważności są następujące (w kolejności rosnącego znaczenia): debug, info, notice, warning (warn), error (err), crit, alert, emerg (panic). Znak "=" przed nazwą poziomu wskazuje, że należy zbierać wiadomości o dokładnie takim poziomie, a "!" oznacza "oprócz tego i wyższych poziomów". Symbol "*" oznacza wszystkie usługi i poziomy a "none" - "żaden poziom". W pojedynczej regule może występować wiele usług oddzielonych przecinkami lub par usługa-poziom oddzielonych średnikami.
/etc/rsyslogd.conf Przeznaczenie określa gdzie trafiają zebrane komunikaty. Może to być między innymi: plik - należy podać pełną ścieżkę np. /var/log/messages łącze nazwane (przydatne przy debugowaniu) - nazwa łącza jest poprzedzona znakiem terminal np. tty6 maszyna zdalna - nazwa maszyny poprzedzona jest znakiem @, np. @192.168.0.1 lista użytkowników np: root,admin (stara składnia) lub :omusrmsg:root,admin (składnia rsyslog); * lub :omusrmsg:* spowoduje wyświetlenie komunikatu wszystkim zalogowanym użytkownikom śmietnik: ~
Przykłady mail.info /var/log/mail.log Powyższy wpis spowoduje, że komunikaty systemu pocztowego o poziomach info i wyższych będą trafiały do pliku /var/log/mail.log *.emerg;user.none * Wszystkie komunikaty awaryjne oprócz takich, które są generowane przez procesy użytkownika, pojawią się na ekranach wszystkich zalogowanych użytkowników.
Logger Testowanie sysloga Polecenie logger jest interfejsem do systemu syslog z poziomu interpretera poleceń (powłoki). Warto je wykorzystać do testowania zmian w pliku konfiguracyjnym. Na przykład aby sprawdzić regułę: local2.info /tmp/test.log logger -p local2.info "test local2 info"
Logrotate Samo zbieranie i czytanie dzienników to nie wszystko o co powinien zadbać administrator - na maszynach z setką intensywnie pracujących użytkowników mogą one przyrastać bardzo szybko powodując przepełnienie systemu plików. Należy pamiętać, że samo skasowanie pliku nie rozwiązuje problemu (i-węzeł pliku nie zostanie zwolniony, dopóki plik nie zostanie zamknięty). Aby ułatwić zadania administratorowi system udostępnia polecenie logrotate, które umożliwia rotację plików z dziennikami, ich kompresję, przesyłanie pocztą do użytkowników i usuwanie. Jest zazwyczaj uruchamiany codziennie jako zadanie regularne przez podsystem cron. Jego plik konfiguracyjny to /etc/logrotate.conf
Analiza dzienników Istnieją również narzędzia wspomagające analizowanie dzienników, tworzące odpowiednie raporty i przesyłające je pod wskazany adres. Przykładami takich narzędzi są swatch i logcheck.
Zadanie Skonfiguruj syslog tak, aby: wszystkie zapisy z poziomu debug trafiały do pliku /var/log/debug.log wszystkie komunikaty poziomu co najmniej crit poza komunikatami związanymi z pocztą trafiały do pliku /var/log/critical, komunikaty z poziomu emerg pochodzące od local2 (na potrzeby testowania) trafiały do wszystkich zalogowanych użytkowników, korzystając z xconsole można było śledzić błędy (co najmniej poziom err) związane z uwierzytelnianiem.
Rozwiązanie *.=debug -/var/log/debug.log *.=debug ~ *.crit;mail.none /var/log/critical local2.emerg * auth.err /dev/xconsole
Cron Crontab -e Crontab min hour day/month month day/week Execution time 30 0 1 1,6,12 * 00:30 Hrs on 1st of Jan, June & Dec. 0 20 * 10 1-5 8.00 PM every weekday (Mon-Fri) only in Oct. 0 0 1,10,15 * * midnight on 1st,10th & 15th of month 5,10 0 10 * 1 At 12.05,12.10 every Monday & on 10th of every month