Baza wiedzy Proste instrukcje dotyczące pracy z usługą Profitserver
Główny Baza wiedzy Jak czytać logi Linuxa i gdzie je znaleźć

Jak czytać logi Linuxa i gdzie je znaleźć


Gdy napotkasz jakiekolwiek problemy z wydajnością serwera, pierwszą rzeczą, którą powinieneś zrobić, jest sprawdzenie logów systemu Linux . W logu systemowym znajdziesz przydatne komunikaty diagnostyczne z różnych komponentów systemu operacyjnego, takich jak jądro czy 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ń:

  1. emerg - awaria, najwyższy priorytet;
  2. alert - pilne ostrzeżenie;
  3. crit - zdarzenie krytyczne;
  4. err - błąd zwykły;
  5. warn - ostrzeżenie zwykłe;
  6. notice - powiadomienie;
  7. info - wiadomość informacyjna;
  8. debug - informacje dotyczące debugowania;

Obecnie głównymi usługami zbierającymi logi w Linuksie są rsyslog i systemd-journald . Są one kompatybilne z większością nowoczesnych pakietów dystrybucyjnych i działają niezależnie.

rsyslog

Logi tej usługi znajdują się w folderze „ /var/log/ ” w postaci zwykłych plików tekstowych. Komunikaty logu są umieszczane w różnych plikach w zależności od rodzaju zdarzenia. Na przykład „ /var/log/auth.log ” zawiera informacje o autoryzacji użytkowników w systemie, a „ /var/log/kern.log ” zawiera komunikaty jądra. Nazwy plików mogą się różnić w zależności od pakietu dystrybucyjnego, dlatego przyjrzyjmy się plikowi konfiguracyjnemu, aby zorientować się, co znajduje się w pliku „ /etc/rsyslog.d/50-default.conf ”.

Сбор логов Linux утилитой rsyslog

Reguły te wyświetlają, który plik zawiera poszczególne typy komunikatów dziennika. Lewa część wyświetla typ komunikatu w następującym formacie: „ [Źródło].[Priorytet] ”, a prawa część wyświetla nazwę pliku dziennika. Podczas zapisywania typu komunikatu można dodać znak „ * ”. Oznacza on wartość pustą lub „ brak ”, co powoduje usunięcie go z listy. Przyjrzyjmy się bliżej dwóm pierwszym regułom.

“auth,authpriv.* /var/log/auth.log”
“*.*;auth,authpriv.none -/var/log/syslog”

Pierwsza reguła oznacza, że ​​wszystkie komunikaty otrzymane z mechanizmu autoryzacji będą rejestrowane w pliku „ /var/log/auth.log ”. Wszystkie próby autoryzacji (zarówno udane, jak i nieudane) będą rejestrowane w tym pliku. Druga reguła oznacza, że ​​wszystkie komunikaty z wyjątkiem tych związanych z autoryzacją będą rejestrowane w pliku „ /var/log/syslog ”. Te dwa pliki są zazwyczaj najpopularniejsze. Poniższe reguły definiują ścieżkę do przechowywania logów jądra „ kern.* ” i logów usług pocztowych „ mail.* ”.

Pliki dziennika można otwierać za pomocą dowolnego edytora tekstu, takiego jak less , cat , tail . Otwórzmy plik „ /var/log/auth.log ” .

less /var/log/auth.log
Запись в лог-файле Линукс о неудачной попытке авторизации SSH

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.

  1. Znak czasowy wiadomości – „12 lut 06:18:33”
  2. Nazwa komputera, który wysłał wiadomość – „vds”
  3. Nazwa aplikacji lub usługi, która wysłała wiadomość – „sshd”
  4. Identyfikator procesu - [653]
  5. 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:

Czytamy Linux

Ten plik rejestruje również polecenia z zaawansowanymi uprawnieniami

Как правильно прочитать лог Linux

Otwórzmy plik /var/log/syslog

Podświetlony komunikat na zrzucie ekranu to komunikat o wyłączeniu interfejsu sieciowego.

Narzędzie logorotate

Do wyszukiwania informacji w długich plikach tekstowych użyj narzędzia grep . Wszystkie wiadomości otrzymane z usługi pptpd znajdziesz w pliku „ /var/log/syslog ”.

grep 'pptpd' /var/log/syslog
plik „/etc/logrotate.d/rsyslog”

Podczas diagnostyki możesz użyć narzędzia tail , które wyświetla kilka ostatnich wierszy plików. Polecenie „ tail -f /var/log/syslog ” pozwoli Ci obserwować rejestrowanie logów w czasie rzeczywistym.

Usługa rsyslog jest bardzo elastyczna i wydajna. Można jej używać do zbierania logów zarówno 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, dlatego rozmiar plików stale rośnie. Mechanizm rotacji zapewnia automatyczne archiwizowanie starych logów i tworzenie nowych plików. W zależności od reguł, rotacja może odbywać się codziennie, co tydzień, co miesiąc lub zgodnie z limitem 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ą narzędzia logrotate . Główną konfigurację można znaleźć w pliku „ /etc/logrotate.conf ”. Zawartość plików jest również przetwarzana w folderze „ /etc/logrotate.d/ ”.

Nowe reguły można rejestrować w głównym pliku konfiguracyjnym. Najlepiej jednak utworzyć osobny plik w katalogu „ /etc/logrotate.d/ ”. Domyślnie w tym katalogu znajduje się kilka plików.

Настраиваем ротацию логов в Линукс

Przyjrzyjmy się plikowi „ /etc/logrotate.d/rsyslog ” zawierającemu reguły rotacji logów usługi rsyslog.

Пример вывода всех ошибок pptpd в лог-файлах

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 folderze „ /var/log/ ” znajduje się główny dziennik „ syslog ” oraz 7 archiwów, co odpowiada regułom w pliku konfiguracyjnym.

Bardziej szczegółowy opis polecenia logrotate znajdziesz w podręczniku, wykonując polecenie „ man logrotate

Zbieranie logów Linux - journald

Usługa zbierania logów systemd-journald jest częścią systemu inicjalizacyjnego systemd . Pliki logów systemu Linux są przechowywane w katalogu „ /var/log/journal/ ” w specjalnym formacie i można je otwierać za pomocą narzędzia journalctl . Format rekordów jest dokładnie taki sam jak w rsyslog.

Polecenie journalctl bez atrybutów wyświetla 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 startu
  • journalctl -S "2020-02-17 12:00" -U "2020-02-17 12:10" - pokaż rekord w określonym przedziale czasowym
  • journalctl -u pptpd - pokaż zapisy konkretnej usługi
  • journalctl -k - pokaż komunikaty jądra
  • journalctl -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

Dla większej elastyczności możesz połączyć te opcje. Pokażmy wszystkie błędy usługi pptpd.

journalctl -u pptpd -p err
ostatnia utilita

Jeśli podasz ścieżkę do pliku wykonywalnego jako atrybut, narzędzie wyświetli wszystkie wiadomości wysłane przez ten plik. Pokażmy wszystkie wiadomości wysłane przez plik „ /usr/bin/sudo ” od godziny 04:15 18 lutego 2020 r. W rzeczywistości pokaże to wszystkie polecenia wykonane z wyższymi uprawnieniami.

journalctl -S "2020-02-18 04:15" /usr/bin/sudo
komandytowy lastb

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 kilku specjalnym plikom w folderze „ /var/log/ ”, w którym przechowywane są wszystkie próby logowania. Pliki te są binarne i można je otwierać tylko za pomocą specjalnych programów.

Plik /var/log/wtmp zawiera informacje o udanych próbach logowania. Użyj ostatniego narzędzia, aby go otworzyć.

serwis lastlog

/var/log/btmp – zawiera wszystkie nieudane próby logowania. Można go otworzyć poleceniem lastb z zaawansowanymi uprawnieniami. Atrybut -n określa liczbę wierszy wyświetlanych od końca pliku.

/var/log/lastlog – zawiera czas ostatniego logowania dla każdego rekordu konta. Można go otworzyć za pomocą lastlog.

❮ Poprzedni artykuł Edytory tekstu Linux
Następny artykuł ❯ Jak skonfigurować interfejsy sieciowe w CentOS

Zapytaj nas o VPS

Jesteśmy zawsze gotowi odpowiedzieć na Państwa pytania o każdej porze dnia i nocy.