operativsystemloggar ger en mängd diagnostisk information om din dator, och Linux är inget undantag. Allt från kärnhändelser till användaråtgärder loggas av Linux, så att du kan se nästan alla åtgärder som utförs på dina servrar. I det här avsnittet förklarar vi vad Linux-loggar är, var du kan hitta dem och hur du tolkar dem.
Linux systemloggar
Linux har en särskild katalog för lagring av loggar som heter/var/log
., Den här katalogen innehåller loggar från själva operativsystemet, tjänster och olika applikationer som körs på systemet. Så här ser den här katalogen ut på ett typiskt Ubuntu-system.
några av de viktigaste Linux-systemloggarna är:
-
/var/log/syslog
och/var/log/messages
lagra alla globala systemaktivitetsdata, inklusive startmeddelanden. Debian – baserade system som Ubuntu lagrar detta i/var/log/syslog
, medan Red Hat-baserade system som RHEL eller CentOS använder/var/log/messages
., -
/var/log/auth.log
och/var/log/secure
lagra alla säkerhetsrelaterade händelser som inloggningar, Root-användaråtgärder och utdata från pluggable authentication modules (PAM). Ubuntu och Debian använder/var/log/auth.log
, medan Red Hat och CentOS använder/var/log/secure
. -
/var/log/kern.log
lagrar kärnhändelser, fel och varningsloggar, vilket är särskilt användbart för felsökning av anpassade kärnor. -
/var/log/cron
lagrar information om schemalagda uppgifter (cron-jobb)., Använd dessa data för att verifiera att dina cron-jobb körs framgångsrikt.
vissa program skriver också loggfiler i den här katalogen. Till exempel skriver Apache-webbservern loggar till katalogen /var/log/apache2
(på Debian), medan MySQL skriver loggar till katalogen /var/log/mysql
. Vissa program loggar också via syslog, vilket vi förklarar i nästa avsnitt.
syslog
Vad är Syslog?
Syslog är en standard för att skapa och överföra loggar. Ordet ”syslog” kan hänvisa till något av följande.,
- syslog-tjänsten, som tar emot och behandlar syslog-meddelanden. Den lyssnar på händelser genom att skapa ett uttag som finns på
/dev/log
, vilka program kan skriva till. Det kan skriva meddelanden till en lokal fil eller vidarebefordra meddelanden till en fjärrserver. Det finns olika syslog implementeringar inklusive rsyslogd och syslog-ng. - syslog-protokollet (RFC 5424), som är ett transportprotokoll som anger hur man överför loggar över ett nätverk. Det är också ett dataformat som definierar hur meddelanden är strukturerade., Som standard använder den port 514 för plaintext-meddelanden och port 6514 för krypterade meddelanden.
- ett syslog-meddelande, vilket är en loggformaterad i syslog-meddelandeformatet. Ett syslog-meddelande består av en standardiserad rubrik och ett meddelande som innehåller loggens innehåll.
eftersom syslog kan vidarebefordra meddelanden till fjärrservrar, används det ofta för att vidarebefordra systemloggar till loghanteringslösningar som SolarWinds® Loggly® och SolarWinds Papertrail™.
Syslog Format och fält
Syslog meddelanden innehåller en standardiserad rubrik med flera fält., Dessa inkluderar tidsstämpeln, namnet på programmet som genererade händelsen, platsen i systemet där meddelandet uppstod och dess prioritet. Du kan ändra detta format i din syslog implementation konfigurationsfil, men med hjälp av standardformatet gör det lättare att tolka, analysera och rutt syslog händelser.
här är ett exempelloggmeddelande med standardformatet. Det är från sshd-demonen, som styr fjärrloggar till systemet., Det här meddelandet beskriver ett misslyckat inloggningsförsök:
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
detta genererar följande logg:
nedan hittar du beskrivningar av några av de vanligaste syslog-fälten när du söker eller felsöker problem.
tidsstämpel
tidsstämpelfältet anger tid och datum meddelandet genererades på det system som skickade meddelandet. Exemplet tidsstämpel bryter ner så här:
- ”2019-06-05″är År, Månad och dag.
- ”T”är ett obligatoriskt element i tidsstämpelfältet, som skiljer datum och tid.,
- ”22:14:15.003″är tidernas 24-timmarsformat, inklusive antalet millisekunder (003).
- ”Z”anger UTC-tid. I stället för z kunde exemplet ha inkluderat en förskjutning, till exempel -08:00, vilket indikerar att tiden förskjuts från UTC med åtta timmar.
värdnamn
fältet värdnamn (”server1” i exemplet ovan) anger namnet på värden eller systemet som ursprungligen skickade meddelandet.
Appnamn
fältet appnamn (”sshd:auth” i exemplet) anger namnet på programmet som skickade meddelandet.,
prioritet
prioritetsfältet eller pri för kort (”<34>” I exemplet ovan) berättar hur brådskande eller svår händelsen är. Det är en kombination av två numeriska fält: anläggningen och svårighetsgraden. Anläggningen anger vilken typ av process som skapade händelsen, från 0 för kärnmeddelanden till 23 för lokala applikationer. Svårighetsgraden varierar från 0-7, med 0 som indikerar en nödsituation och 7 som indikerar en felsökningshändelse.
pri kan matas ut på två sätt., Den första är som ett enda nummer, prival, som beräknas som anläggningens fältvärde multiplicerat med åtta, då läggs resultatet till stränghetsfältets värde: (anläggning) (8) + (svårighetsgrad). Den andra är pri-text, som kommer att matas ut i strängformatet ” – anläggningen.svårighetsgrad”. Det senare formatet kan ofta vara lättare att läsa och söka, men tar upp mer lagringsutrymme.
loggning med Systemd
många Linux-distributioner levereras med systemd, vilket är en process-och servicehanterare. Systemd implementerar sin egen loggningstjänst kallad journald som kan ersätta eller komplettera syslog., Journald loggar på ett väsentligt annorlunda sätt än systemd, varför det har sin egen sektion i den ultimata guiden till loggning. Du kan läsa mer om loggning via systemd i avsnittet systemd loggning.