När du stöter på problem med din servers prestanda är det första du vill göra att kontrollera dina Linux-loggar . I systemloggen kan du hitta några användbara diagnostikmeddelanden från olika komponenter i operativsystemet, som kärnan eller olika tjänster, så du hittar troligtvis orsaken till felet där.
Varje meddelande i loggen genereras som ett resultat av vissa händelser i operativsystemet: från användaren, auktorisering till serviceavstängning eller applikationsfel. Dessa händelser har olika prioriteringar beroende på hur kritiska de är. Det finns följande typer av händelser i Linux:
emerg- misslyckande, högsta prioritet;alert- brådskande varning;crit- kritisk händelse;err- vanligt fel;warn- vanlig varning;notice- anmälan;info- informationsmeddelande;debug- felsökningsinformation;
För närvarande är de viktigaste logginsamlingstjänsterna i Linux rsyslog och systemd-journald . De följer med de flesta moderna distributionspaket och fungerar oberoende av varandra.
rsyslog
Loggar för den här tjänsten finns i mappen ” /var/log/ ” i form av vanliga textfiler. Loggmeddelanden placeras i olika filer beroende på typ av händelse. Till exempel innehåller ” /var/log/auth.log ” information om användarnas behörighet i systemet, och ” /var/log/kern.log ” innehåller kärnmeddelanden. Filnamn kan variera mellan distributionspaket, så låt oss ta en titt på konfigurationsfilen för att få en uppfattning om var ” /etc/rsyslog.d/50-default.conf ” finns.
Dessa regler visar vilken fil som innehåller varje typ av loggmeddelanden. Den vänstra delen visar meddelandetypen i följande form " [Källa].[Prioritet] " och den högra delen visar namnet på loggfilen. Medan meddelandetypen skrivs kan tecknet " * " läggas till. Det betyder tomt värde eller " inget " som tar bort det från listan. Låt oss titta närmare på de två första reglerna.
“auth,authpriv.* /var/log/auth.log”
“*.*;auth,authpriv.none -/var/log/syslog”
Den första regeln innebär att alla meddelanden som tas emot från auktoriseringsmekanismen kommer att registreras i filen " /var/log/auth.log ". Alla auktoriseringsförsök (både lyckade och misslyckade) kommer att registreras i den här filen. Den andra regeln anger att alla meddelanden utom de som är kopplade till auktorisering kommer att registreras i filen " /var/log/syslog ". Dessa två filer är vanligtvis de mest populära. Följande regler definierar sökvägen för att lagra kärnloggar " kern.* " och e-posttjänstloggar " mail.* ".
Loggfiler kan öppnas med hjälp av valfri textredigerare, som less , cat eller tail . Nu öppnar vi filen " /var/log/auth.log " .
less /var/log/auth.log
Varje rad i filen är ett separat meddelande som tas emot från applikationen eller tjänsten. Alla meddelanden oavsett källa har ett format och består av 5 delar. Låt oss ta det markerade meddelandet i skärmdumpen som ett exempel.
- Meddelande tidsstämpel - "12 feb 06:18:33"
- Namnet på datorn som skickade meddelandet - "vds"
- Namn på applikationen eller tjänsten som skickade meddelandet - "sshd"
- Process-ID - [653]
- Meddelandetext - "Accepterat lösenord för mihail från 188.19.42.165 port 2849 ssh2"
Detta var ett exempel på en framgångsrik anslutning till SSH.
Och så här ser ett misslyckat inloggningsförsök ut:
Den här filen registrerar också kommandon med avancerade behörigheter
Låt oss öppna /var/log/syslog -filen
Ett markerat meddelande på skärmdumpen är meddelandet om avstängning av nätverksgränssnittet.
För att söka efter information i långa textfiler, använd grep- verktyget. Du hittar alla meddelanden som tas emot från pptpd- tjänsten i filen " /var/log/syslog ".
grep 'pptpd' /var/log/syslog
Under diagnostiken kan du använda verktyget tail som kan visa flera sista rader i filer. Med kommandot " tail -f /var/log/syslog " kan du se logginspelningar i realtid.
Tjänsten rsyslog är mycket flexibel och kraftfull. Den kan användas för att samla in loggar i lokala system såväl som på företagsnivå. Du hittar fullständig dokumentation på den officiella webbplatsen https://www.rsyslog.com/
Loggar rotation i Linux
Loggregistrering sker kontinuerligt, så storleken på filerna växer ständigt. Rotationsmekanismen säkerställer automatisk arkivering av gamla loggar och skapandet av nya filer. Beroende på reglerna kan det ske dagligen, veckovis, månadsvis eller med en storleksgräns. När nya loggar skapas kan gamla helt enkelt raderas eller skickas via e-post. Loggrotation utförs av verktyget logrotate . Du hittar huvudkonfigurationen i filen " /etc/logrotate.conf ". Filinnehållet bearbetas också i mappen " /etc/logrotate.d/ ".
Nya regler kan loggas in i huvudkonfigurationsfilen. Det är dock bäst att skapa en separat fil i " /etc/logrotate.d/ ". Som standard finns det ett fåtal filer i den här katalogen.
Låt oss ta en titt på filen " /etc/logrotate.d/rsyslog " som innehåller rotationsregler för loggar från rsyslog- tjänsten.
Först bör regeln innehålla sökvägen till loggfilen och sedan gå alla riktlinjer inom böjda parenteser.
- rotera 7 - antal filer att behålla - 7
- dagligen - skapa en ny fil varje dag
- komprimera - komprimera och arkivera gamla filer
Du kan se på skärmdumpen att i mappen " /var/log/ " finns huvudloggen " syslog " och 7 arkiv, vilket motsvarar reglerna i konfigurationsfilen.
Du hittar en mer detaljerad beskrivning av logrotate i manualen, genom att köra kommandot " man logrotate ".
Samla Linux-loggar - journalförd
Logginsamlingstjänsten systemd-journald är en del av initialiseringssystemet systemd . Linux-loggfiler lagras i " /var/log/journal/ " i ett speciellt format och kan öppnas med hjälp av verktyget journalctl . Postformatet är exakt detsamma som i rsyslog.
Kommandot journalctl utan attribut visar alla poster men det är inte lämpligt för större loggar. Låt oss ta en titt på några alternativ i det här verktyget.
journalctl -b- visa alla poster sedan senaste startjournalctl -S "2020-02-17 12:00" -U "2020-02-17 12:10"- visa rekord inom en viss tidsperiodjournalctl -u pptpd- visa register över en viss tjänstjournalctl -k- visa kärnmeddelandenjournalctl -p err- visa meddelanden med en viss prioritet, meddelanden med högre prioritet i detta fall (crit, alert, emerg)journalctl -f- visa meddelanden i realtid
För bättre flexibilitet kan du kombinera dessa alternativ. Nu ska vi visa alla fel i pptpd- tjänsten.
journalctl -u pptpd -p err
Om du anger sökvägen till den körbara filen som ett attribut kommer verktyget att visa alla meddelanden som skickats av den här filen. Nu visar vi alla meddelanden som skickats av filen " /usr/bin/sudo " sedan 04:15 den 18 februari 2020. Faktum är att det kommer att visa alla kommandon som körts med högre behörigheter.
journalctl -S "2020-02-18 04:15" /usr/bin/sudo
För att ta reda på hur mycket diskutrymme loggfiler tar upp för att utföra följande kommando
journalctl --disk-usage
Utför följande kommando för att begränsa loggfilen till 1 Gb
journalctl --vacuum-size=1G
Öppna binära filer
Nu ska vi titta på några specialfiler i mappen " /var/log/ " där alla inloggningsförsök lagras. Dessa filer är binära och kan endast öppnas med specialprogram.
/var/log/wtmp innehåller information om lyckade inloggningsförsök. Använd verktyget "last" för att öppna den.
/var/log/btmp - innehåller alla misslyckade inloggningsförsök. Den kan öppnas med lastb med avancerade behörigheter. Attributet -n definierar antalet rader som visas från slutet av filen.
/var/log/lastlog - innehåller tiden för den senaste inloggningsåtgärden för varje kontopost. Den kan öppnas med lastlog