uczyć się o ogólnym logowaniu / logrotacji na Linuksie?


13

Załóżmy, że poza dziennikami serwera WWW Apache nigdy nie miałem kontaktu z jakimikolwiek (profesjonalnymi) dziennikami w żadnym systemie operacyjnym. Logowanie, choć rozumiem niektóre podstawy, jest całkiem nowym tematem. W tej chwili inwestycja w pełne zapoznanie się z tym tematem wydaje się być dość duża, ale nawet jeszcze nie wiem, czy warto wiedzieć więcej niż najbardziej abstrakcyjne pojęcia.

Jakie zasoby zasugerowałbyś, aby ktoś w tej sytuacji zużył (samouczki, strony podręcznika, książki), aby dowiedzieć się o logowaniu?

Jakie dzienniki powinien czytać zwykły użytkownik systemu Linux codziennie / co miesiąc? Czy założenie jest nawet poprawne, że zostały napisane z myślą o czytelności dla ludzi, czy też są ogólnie oceniane i wykorzystywane przez inne narzędzia?

Co zwykły użytkownik * nix i programista powinien wiedzieć o tych dziennikach?

Co musisz wiedzieć o rotacji dzienników, jeśli nie oczekuje się, że będziesz zarządzać profesjonalnymi serwerami WWW z dużą ilością zdarzeń?


Czy masz coś przeciwko, że ja (lub ty) edytuję tytuł, aby czytać „na Linux” zamiast „na Ubuntu”, ponieważ są to w zasadzie te same pytania (patrz moja odpowiedź)? W ten sposób mniej prawdopodobne jest, że skończymy z zamkniętymi duplikatami pytań na temat „uczenia się logowania na archu”, „uczenia się logowania na centOS” itp.
goldilocks

Nie mam nic przeciwko takim zmianom, o ile odpowiedzi są dobre :)
erikbwork

Odpowiedzi:


18

[Zostało to napisane kilka lat przed powszechnym przyjęciem dziennika na systemowych systemach i nie dotyczy go. Obecnie (pod koniec 2018 r.) Zarówno dziennik, jak i (r) syslog, opisane poniżej, są używane w dystrybucjach takich jak Debian. W innych przypadkach może być konieczne zainstalowanie programu rsyslog, jeśli chcesz go używać jednocześnie, ale integracja z dziennikiem jest prosta.]

Nie będę omawiać rejestrowania w odniesieniu do Ubuntu szczególnie, ponieważ temat jest ogólnie ustandaryzowany dla Linuksa (i uważam, że większość lub całość tego, co mam do powiedzenia, jest również prawdą dla każdego smaku * nix, ale nie uwierz mi na słowo). Nie powiem też wiele o „jak czytać logi” poza odpowiedzią na to pytanie:

Czy założenie jest nawet poprawne, że zostały napisane z myślą o czytelności dla ludzi, czy też są ogólnie oceniane i wykorzystywane przez inne narzędzia?

Myślę, że to zależy od aplikacji, ale ogólnie, przynajmniej w odniesieniu do tego, co trafia do syslog (patrz poniżej), powinny być czytelne dla ludzi. „Sensowne dla mnie” to kolejna kwestia, lol. Jednak mogą być również skonstruowane w taki sposób, aby ułatwić ich analizowanie przy użyciu standardowych narzędzi (grep, awk itp.) Do określonych celów.

Niezależnie od tego, po pierwsze, istnieje rozróżnienie między aplikacjami, które wykonują własne rejestrowanie, a aplikacjami korzystającymi z rejestratora systemu. Apache domyślnie jest tym pierwszym, chociaż można go skonfigurować tak, aby działał później (co myślę, że większość osób uznałoby za niepożądane). Aplikacje, które wykonują własne logowanie, mogłyby to zrobić w dowolny sposób, korzystając z dowolnej lokalizacji pliku (plików), więc nie ma o tym wiele do powiedzenia. Logger systemu jest ogólnie określany jako syslog.

syslog

„Syslog” to tak naprawdę standard, który jest implementowany z procesem demona zwanym ogólnie syslogd (d jest dla demona!). Dominującym demonem syslog obecnie używanym na Linuksie, w tym ubuntu, jest rsyslogd. Rsyslogd może wiele zdziałać, ale jak skonfigurowano po wyjęciu z pudełka w większości dystrybucji, emuluje tradycyjny syslog, w którym sortuje się rzeczy do zwykłych plików tekstowych /var/log. Możesz znaleźć dokumentację na ten temat /usr/share/doc/rsyslog-doc-[version](uwaga, jest też /usr/share/doc/rsyslog-[version], ale to tylko uwagi z pakietu źródłowego, takie jak NEWSi ChangeLog). Jeśli tam jest, to jest HTML, ale Stack Exchange nie pozwala na osadzanie lokalnych łączy plików:

file://usr/share/doc/rsyslog-doc/index.html

Więc możesz spróbować skopiować to wklejając. Jeśli go nie ma, może być częścią osobnego pakietu, który nie jest zainstalowany. Zapytaj swój system pakowania (np apt-cache search rsyslog | grep doc.).

Konfiguracja jest w /etc/rsyslog.conf, która ma stronę podręcznika man rsyslog.conf, chociaż chociaż strona podręcznika stanowi dobre odniesienie, może być mniej przenikalna jako wprowadzenie. Na szczęście podstawy zapasowego pliku rsyslog.conf są zgodne z tradycyjnymi syslog.conf, dla których istnieje wiele wstępów i samouczków. Ten na przykład; to, co chcesz od tego zabrać, podczas podglądania lokalnego pliku rsyslog.conf, to zrozumienie udogodnień i priorytetów („priorytet” jest czasami nazywany loglevel), ponieważ są one częścią wyżej wspomnianego standardu syslog. Powodem, dla którego ten standard jest ważny, jest fakt, że rsyslog faktycznie pobiera swoje rzeczy przez jądro, a to, co implementuje jądro, jest standardem.

W odniesieniu do $dyrektyw w rsyslog.conf, są one specyficzne dla rsyslog i jeśli zainstalujesz ten opcjonalny pakiet doc, znajdziesz przewodnik po nich rsyslog_conf_global.html.

Baw się dobrze ... jeśli jesteś ciekawy, jak aplikacje korzystają z rejestratora systemu, spójrz na man loggeri man 3 syslog.

Log Rotation

Normatywny sposób obracania kłód odbywa się za pomocą narzędzia o nazwie logrotate(i jest to man logrotate). Normatywną metodą korzystania z logrotate jest demon cron , chociaż nie trzeba tego robić w ten sposób (np. Jeśli masz tendencję do wyłączania pulpitu codziennie, równie dobrze możesz to zrobić tylko raz podczas uruchamiania przed uruchomieniem syslog, ale, oczywiście po zamontowaniu systemu plików rw).

Jest to wprowadzenie do logrotate dobre tutaj . Zauważ, że logrotate jest nie tylko dla syslog , może być w ogóle używany z dowolnym plikiem. Podstawowym plikiem konfiguracyjnym jest /etc/logrotate.conf, ale ponieważ konfiguracja ma dyrektywę „dołącz”, zwykle większość rzeczy trafia do poszczególnych plików w /etc/logrotate.dkatalogu (tutaj d dotyczy katalogu, a nie demona; logrotate nie jest demonem).

Ważną rzeczą do rozważenia podczas korzystania z logrotate jest to, w jaki sposób aplikacja będzie ponownie działać, gdy plik dziennika zostanie „obrócony” - innymi słowy przeniesiony - podczas działania aplikacji. Syslogd WRT (r), po prostu przestanie zapisywać do tego dziennika (myślę, że jest to uzasadnione względami bezpieczeństwa). Zwykłym sposobem radzenia sobie z tym jest poinformowanie syslog o ponownym uruchomieniu (i ponownym otwarciu wszystkich swoich plików), dlatego postrotatew plikach logrotate conf zobaczysz dyrektywę wysyłającą SIGHUP do demona syslog.


2
Jeśli również wspomnisz syslog-ng, napiszesz wszystko, co można powiedzieć o logowaniu do systemu Linux. Doskonała odpowiedź.
Nils

Nauczyłem się wiele i mam więcej źródeł do przeczytania. Dzięki! Btw. Dlaczego miałoby być źle używać rejestrowania systemu dla apache? A które dzienniki powinienem przeczytać?
erikbwork

@ erikb85 1) Głównie dlatego, że apache generuje dużo danych wyjściowych. Dawno nie musiałem konfigurować apache, więc nie pamiętam, jak elastyczny jest WRT w wysyłaniu określonych rzeczy do syslog (ale sądzę, że bardzo elastyczny) 2) Dzienniki WRT, które chcesz przeczytać, spójrz na logikę w twoim /etc/rsyslog.conf. Na przykład: często wchodzą rzeczy powyżej pewnego priorytetu /var/log/messages, a rzeczy poniżej /var/log/notice. Lubię też mieć dziennik, który zawiera wszystko, co powoduje podwójne i potrójne nakładanie się, ale jeśli trzymasz je obracane, to nie jest wielka sprawa.
goldilocks

Żeby tylko potwierdzić, rsyslogczy nie ma wokół tego opakowania demona logrotate, prawda? Dlaczego tak ?
Thomas

@Thomas Wykonują różne cele, chociaż (r) syslog może wprowadzić rotację, aby oszczędzić potrzeby logrotate. Jednak ich oddzielne oznacza, że ​​możesz używać logrotate do rzeczy innych niż pliki syslog.
goldilocks,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.