Gdy napotkasz jakiekolwiek problemy z wydajnością serwera, pierwszą rzeczą, którą powinieneś zrobić, jest sprawdź logi Linuxa. W logu systemowym możesz znaleźć pomocne komunikaty diagnostyczne z różnych komponentów systemu operacyjnego, takich jak jądro lub różne usługi, więc najprawdopodobniej znajdziesz tam przyczynę awarii.
Każda wiadomość w dzienniku jest generowana w wyniku pewnych zdarzeń w systemie operacyjnym: od użytkownika, autoryzacji do zamknięcia usługi lub awarii aplikacji. Zdarzenia te mają różne priorytety w zależności od tego, jak krytyczne są. W systemie Linux występują następujące typy zdarzeń:
emerg- awaria, najwyższy priorytet;alert- pilne ostrzeżenie;crit- zdarzenie krytyczne;err- błąd zwykły;warn- ostrzeżenie zwykłe;notice- powiadomienie;info- wiadomość informacyjna;debug- informacje dotyczące debugowania;
W tej chwili głównymi usługami zbierającymi logi w systemie Linux są: rsyslog oraz dziennik systemowySą kompatybilne z większością nowoczesnych pakietów dystrybucyjnych i działają niezależnie.
rsyslog
Dzienniki tej usługi znajdują się w „/ var / log /” folder w formie zwykłych plików tekstowych. Wiadomości dziennika są umieszczane w różnych plikach w zależności od typu zdarzenia. Na przykład, „/var/log/auth.log„zawiera informacje o uprawnieniach użytkowników w systemie, a także/var/log/kern.log” zawiera komunikaty jądra. Nazwy plików mogą się różnić w różnych pakietach dystrybucyjnych, więc przyjrzyjmy się plikowi konfiguracyjnemu, aby zorientować się, co się tam znajduje./etc/rsyslog.d/50-default.conf".
Te reguły wyświetlają, który plik zawiera każdy typ komunikatów dziennika. Lewa część wyświetla typ komunikatu w następującej formie „[Źródło].[Priorytet]” a prawa część wyświetla nazwę pliku dziennika. Podczas pisania typu wiadomości „*” znak może być dodany. Oznacza to pustą wartość lub „Żaden” co usuwa ją z listy. Przyjrzyjmy się bliżej pierwszym dwóm zasadom.
“auth,authpriv.* /var/log/auth.log”
“*.*;auth,authpriv.none -/var/log/syslog”
Pierwsza reguła oznacza, że wszystkie wiadomości otrzymane z mechanizmu autoryzacji zostaną zapisane w „/var/log/auth.log” plik. Wszystkie próby autoryzacji (zarówno udane, jak i nie) zostaną zarejestrowane w tym pliku. Druga reguła wskazuje, że wszystkie wiadomości, z wyjątkiem tych związanych z autoryzacją, zostaną zarejestrowane w pliku „/ var / log / syslog” plik. Te dwa pliki są zazwyczaj najpopularniejsze. Poniższe reguły definiują ścieżkę do przechowywania dzienników jądra „kern.*„i dzienniki usług pocztowych”poczta.*"
Pliki dziennika można otwierać za pomocą dowolnego edytora tekstu, takiego jak mniej, jak, ogon. Otwórzmy „/var/log/auth.log" plik
less /var/log/auth.log
Każdy wiersz pliku jest osobną wiadomością otrzymaną z aplikacji lub usługi. Wszystkie wiadomości, niezależnie od ich źródła, mają jeden format i składają się z 5 części. Weźmy jako przykład wyróżnioną wiadomość na zrzucie ekranu.
- Znak czasowy wiadomości – „12 lut 06:18:33”
- Nazwa komputera, który wysłał wiadomość – „vds”
- Nazwa aplikacji lub usługi, która wysłała wiadomość – „sshd”
- Identyfikator procesu - [653]
- Tekst wiadomości - „Zaakceptowano hasło dla mihail z 188.19.42.165 port 2849 ssh2”
Oto przykład udanego połączenia z SSH.
A tak wygląda nieudana próba logowania:
Ten plik rejestruje również polecenia z zaawansowanymi uprawnieniami
Otwórzmy / var / log / syslog filet
Podświetlony komunikat na zrzucie ekranu to komunikat o wyłączeniu interfejsu sieciowego.
Do wyszukiwania informacji w długich plikach tekstowych użyj grep narzędzie. Możesz znaleźć wszystkie wiadomości otrzymane od pptpd usługa w „/ var / log / syslog" plik.
grep 'pptpd' /var/log/syslog
Podczas diagnostyki możesz skorzystać ogon narzędzie, które może wyświetlić kilka ostatnich wierszy plików. Polecenie „tail -f / var / log / syslog”umożliwi Ci oglądanie rejestrowanych logów w czasie rzeczywistym.
Obsługa rsyslog jest bardzo elastyczny i wydajny. Może być używany do zbierania kłód w systemach lokalnych, jak i na poziomie przedsiębiorstwa. Pełną dokumentację można znaleźć na oficjalnej stronie internetowej https://www.rsyslog.com/
Rotacja logów w systemie Linux
Rejestracja logów odbywa się w sposób ciągły, więc rozmiar plików stale rośnie. Mechanizm rotacji zapewnia automatyczną archiwizację starych logów i tworzenie nowych plików. W zależności od zasad może się to odbywać codziennie, co tydzień, co miesiąc lub według limitu rozmiaru. W miarę tworzenia nowych logów stare można po prostu usunąć lub wysłać e-mailem. Rotacja logów odbywa się za pomocą logrotate narzędzie. Główną konfigurację można znaleźć w „/etc/logrotate.conf” plik. Zawartość plików jest również przetwarzana w „/etc/logrotate.d/" teczka
Nowe reguły można rejestrować w głównym pliku konfiguracyjnym. Jednak najlepiej jest utworzyć osobny plik w „/etc/logrotate.d/”. Domyślnie w tym katalogu znajduje się kilka plików
Przyjrzyjmy się plikowi „/etc/logrotate.d/rsyslog„zawiera reguły rotacji dla kłód rsyslog service.
Najpierw reguła powinna zawierać ścieżkę do pliku dziennika, a następnie wszystkie wytyczne w nawiasach klamrowych.
- obróć 7 - ilość przechowywanych plików - 7
- codziennie - twórz nowy plik każdego dnia
- kompresować - kompresuj i archiwizuj stare pliki
Na zrzucie ekranu widać, że w „/ var / log /„w folderze znajdują się główne logi”syslog” i 7 archiwów, co odpowiada regułom w pliku konfiguracyjnym.
Bardziej szczegółowy opis polecenia logrotate można znaleźć w podręczniku, wykonując polecenie „człowiek logrotate” polecenie
Zbieranie logów Linux - journald
Usługa pozyskiwania drewna dziennik systemowy jest częścią systemu inicjalizacji systemdPliki dziennika systemu Linux są przechowywane w „/var/log/dziennik/„w specjalnym formacie i można je otworzyć za pomocą journalctl użyteczność. Format rekordów jest dokładnie taki sam jak w rsyslog.
Command journalctl bez atrybutów pokazuje wszystkie rekordy, ale nie nadaje się do większych logów. Przyjrzyjmy się niektórym opcjom tego narzędzia.
journalctl -b- pokaż wszystkie rekordy od ostatniego startujournalctl -S "2020-02-17 12:00" -U "2020-02-17 12:10"- pokaż rekord w określonym przedziale czasowymjournalctl -u pptpd- pokaż zapisy konkretnej usługijournalctl -k- pokaż komunikaty jądrajournalctl -p err- pokaż wiadomości o określonym priorytecie, w tym przypadku wiadomości o wyższym priorytecie (krytyczne, alarmowe, ratunkowe)journalctl -f- wyświetlaj wiadomości w czasie rzeczywistym
Aby uzyskać większą elastyczność, możesz połączyć te opcje. Pokażmy wszystkie błędy pptpd usługa
journalctl -u pptpd -p err
Jeśli podasz ścieżkę do pliku wykonywalnego jako atrybut, narzędzie pokaże wszystkie wiadomości wysłane przez ten plik. Pokażmy wszystkie wiadomości wysłane przez plik „/usr/bin/sudo” od 04:15 18 lutego 2020. W rzeczywistości pokaże wszystkie polecenia wykonane z wyższymi uprawnieniami.
journalctl -S "2020-02-18 04:15" /usr/bin/sudo
Aby dowiedzieć się, ile miejsca na dysku zajmują pliki dziennika, wykonaj następujące polecenie
journalctl --disk-usage
Aby ograniczyć rozmiar pliku dziennika do 1 GB wykonaj następujące polecenie
journalctl --vacuum-size=1G
Otwieranie plików binarnych
Przyjrzyjmy się teraz niektórym specjalnym plikom w „/ var / log /” folder, w którym przechowywane są wszystkie próby logowania. Te pliki są binarne i można je otwierać tylko za pomocą specjalnych programów.
/ var / log / wtmp zawiera informacje o udanych próbach logowania. Użyj ostatniego narzędzia, aby je otworzyć.
/var/log/btmp - zawiera wszystkie nieudane próby logowania. Można go otworzyć za pomocą lastb z zaawansowanymi uprawnieniami. Atrybut -n określa liczbę wierszy wyświetlanych od końca pliku.
/var/log/loadlog - zawiera czas ostatniej akcji logowania dla każdego rekordu konta. Można go otworzyć za pomocą ostatni log