Operating system logs dostarcza bogactwo informacji diagnostycznych o komputerze, a Linux nie jest wyjątkiem. Wszystko, od zdarzeń jądra po akcje użytkownika, jest rejestrowane przez Linuksa, dzięki czemu możesz zobaczyć prawie każdą akcję wykonywaną na Twoich serwerach. W tej sekcji wyjaśnimy czym są logi Linuksa, gdzie można je znaleźć i jak je interpretować.
Logi systemu Linux
Linux posiada specjalny katalog do przechowywania logów o nazwie/var/log
., Ten katalog zawiera logi z samego systemu operacyjnego, usług i różnych aplikacji uruchomionych w systemie. Oto jak ten katalog wygląda na typowym systemie Ubuntu.
niektóre z najważniejszych dzienników systemu Linux obejmują:
-
/var/log/syslog
I/var/log/messages
przechowują wszystkie globalne dane dotyczące aktywności systemu, w tym komunikaty startowe. Systemy oparte na Debianie, takie jak Ubuntu, przechowują to w/var/log/syslog
, podczas gdy systemy oparte na Red hacie, takie jak RHEL lub CentOS, używają/var/log/messages
., -
/var/log/auth.log
I/var/log/secure
przechowują wszystkie zdarzenia związane z bezpieczeństwem, takie jak loginy, akcje użytkownika root i dane wyjściowe z pluggable authentication modules (Pam). Ubuntu i Debian używają/var/log/auth.log
, podczas gdy Red Hat i CentOS używają/var/log/secure
. -
/var/log/kern.log
przechowuje zdarzenia jądra, błędy i dzienniki ostrzeżeń, które są szczególnie pomocne w rozwiązywaniu problemów z niestandardowymi jądrami. -
/var/log/cron
przechowuje informacje o zaplanowanych zadaniach (zadaniach cron)., Użyj tych danych, aby sprawdzić, czy zadania cron działają pomyślnie.
niektóre aplikacje również zapisują pliki dziennika w tym katalogu. Na przykład serwer Apache zapisuje logi do katalogu /var/log/apache2
(w Debianie), podczas gdy MySQL zapisuje logi do katalogu /var/log/mysql
. Niektóre aplikacje również logują się przez syslog, co wyjaśnimy w następnej sekcji.
syslog
Co to jest Syslog?
Syslog jest standardem do tworzenia i przesyłania dzienników. Słowo „syslog” może odnosić się do dowolnego z poniższych.,
- usługa syslog, która odbiera i przetwarza wiadomości syslog. Nasłuchuje zdarzeń poprzez utworzenie gniazda znajdującego się pod adresem
/dev/log
, do którego aplikacje mogą pisać. Może zapisywać wiadomości do pliku lokalnego lub przekazywać wiadomości do zdalnego serwera. Istnieją różne implementacje syslog, w tym rsyslogd i syslog-ng. - protokół syslog (RFC 5424), który jest protokołem transportowym, który określa sposób przesyłania dzienników przez sieć. Jest to również format danych określający, w jaki sposób wiadomości są strukturyzowane., Domyślnie używa portu 514 dla wiadomości tekstowych i portu 6514 dla zaszyfrowanych wiadomości.
- wiadomość syslog, która jest dowolnym dziennikiem sformatowanym w formacie wiadomości syslog. Wiadomość syslog składa się ze znormalizowanego nagłówka i wiadomości zawierającej zawartość dziennika.
ponieważ syslog może przekazywać wiadomości na zdalne serwery, jest często używany do przekazywania dzienników systemowych do rozwiązań zarządzania dziennikami, takich jak SolarWinds ® Loggly® i SolarWinds Papertrail™.
Format Syslog i pola
wiadomości Syslog zawierają ustandaryzowany nagłówek z kilkoma polami., Obejmują one znacznik czasu, nazwę aplikacji, która wygenerowała Zdarzenie, lokalizację w systemie, z którego pochodzi wiadomość, oraz jej priorytet. Format ten można zmienić w pliku konfiguracyjnym implementacji syslog, ale użycie standardowego formatu ułatwia parsowanie, analizowanie i trasowanie zdarzeń syslog.
oto przykładowy komunikat dziennika w domyślnym formacie. Pochodzi z demona sshd, który kontroluje zdalne logowanie do systemu., Ten Komunikat opisuje nieudaną próbę logowania:
Jun 4 22:14:15 server1 sshd : Failed password for root from 10.0.2.2 port 22 ssh2
<%pri%>%protocol-version% %timestamp:::date-rfc3339% %HOSTNAME% %app-name% %procid% %msgid% %msg%n
generuje to następujący dziennik:
poniżej znajdziesz opisy niektórych z najczęściej używanych pól syslog podczas wyszukiwania lub rozwiązywania problemów.
Timestamp
pole timestamp wskazuje godzinę i datę wygenerowania wiadomości w systemie wysyłającym wiadomość. Przykładowy znacznik czasu rozkłada się w następujący sposób:
- „2019-06-05″to rok, miesiąc i dzień.
- ” T ” jest wymaganym elementem pola timestamp, oddzielającym datę i czas.,
- „22:14:15.003″jest 24-godzinnym formatem czasu, zawierającym liczbę milisekund (003).
- „Z” oznacza czas UTC. Zamiast z, Przykład mógł zawierać przesunięcie, takie jak -08: 00, co wskazuje, że czas jest przesunięty od UTC o osiem godzin.
Nazwa hosta
pole Nazwa hosta („server1” w powyższym przykładzie) wskazuje nazwę hosta lub systemu, który pierwotnie wysłał wiadomość.
Nazwa aplikacji
pole nazwa aplikacji (w przykładzie”SSHD:auth”) wskazuje nazwę aplikacji, która wysłała wiadomość.,
priorytet
pole priority lub PRI w skrócie („<34>” w powyższym przykładzie) informuje, jak pilne lub poważne jest Zdarzenie. Jest to kombinacja dwóch pól liczbowych: facility i the severity. Funkcja określa typ procesu, który wytworzył Zdarzenie, w zakresie od 0 dla wiadomości jądra do 23 dla aplikacji lokalnych. Stopień ciężkości waha się od 0 do 7, przy czym 0 oznacza stan awaryjny, a 7-Zdarzenie debugowania.
Pri może być wyprowadzany na dwa sposoby., Pierwsza jest pojedynczą liczbą, prival, która jest obliczana jako wartość pola obiektu pomnożona przez osiem, a następnie wynik jest dodawany do wartości pola dotkliwości: (obiekt) (8) + (dotkliwość). Drugi to PRI-text, który będzie wyświetlany w formacie string ” facility.dotkliwość”. Ten ostatni format często może być łatwiejszy do odczytania i wyszukiwania,ale zajmuje więcej miejsca.
logowanie za pomocą Systemd
wiele dystrybucji Linuksa dostarcza systemd, który jest menedżerem procesów i usług. Systemd implementuje własną usługę logowania o nazwie journald, która może zastąpić lub uzupełnić syslog., Journald loguje się w znacznie inny sposób niż systemd, dlatego ma własną sekcję w Ultimate Guide to Logging. Możesz dowiedzieć się więcej o logowaniu przez systemd w sekcji logowania Systemd.