Når du støder på problemer med din servers ydeevne, er det første, du bør gøre, at tjekke dine Linux-logfiler . I systemloggen kan du finde nogle nyttige diagnosticeringsmeddelelser fra forskellige komponenter i operativsystemet, såsom kernen eller forskellige tjenester, så du vil højst sandsynligt finde årsagen til fejlen der.
Hver meddelelse i loggen genereres som et resultat af visse hændelser i operativsystemet: fra brugeren, autorisation til servicenedlukning eller applikationsfejl. Disse begivenheder har forskellige prioriteter afhængigt af, hvor kritiske de er. Der er følgende typer begivenheder i Linux:
emerg- fiasko, højeste prioritet;alert- presserende advarsel;crit- kritisk begivenhed;err- almindelig fejl;warn- almindelig advarsel;notice- meddelelse;info- informationsmeddelelse;debug- debugging information;
I øjeblikket er de primære logindsamlingstjenester i Linux rsyslog og systemd-journald . De følger med de fleste moderne distributionspakker og fungerer uafhængigt.
rsyslog
Logfiler for denne tjeneste findes i mappen “ /var/log/ ” i form af almindelige tekstfiler. Logmeddelelser placeres i forskellige filer afhængigt af hændelsestypen. For eksempel indeholder “ /var/log/auth.log ” oplysninger om brugernes autorisation i systemet, og “ /var/log/kern.log ” indeholder kernemeddelelser. Filnavne kan variere på tværs af distributionspakker, så lad os se på konfigurationsfilen for at få en idé om, hvor “ /etc/rsyslog.d/50-default.conf ” er placeret.
Disse regler viser, hvilken fil der indeholder hver type logmeddelelse. Den venstre del viser meddelelsestypen i følgende format " [Kilde].[Prioritet] ", og den højre del viser navnet på logfilen. Under skrivning af meddelelsestypen kan tegnet " * " tilføjes. Det betyder en tom værdi eller " ingen ", der fjerner den fra listen. Lad os se nærmere på de to første regler.
“auth,authpriv.* /var/log/auth.log”
“*.*;auth,authpriv.none -/var/log/syslog”
Den første regel betyder, at alle beskeder modtaget fra autorisationsmekanismen vil blive registreret i filen " /var/log/auth.log ". Alle autorisationsforsøg (både vellykkede og mislykkede) vil blive registreret i denne fil. Den anden regel angiver, at alle beskeder undtagen dem, der er forbundet med autorisation, vil blive registreret i filen " /var/log/syslog ". Disse to filer er normalt de mest populære. Følgende regler definerer stien til lagring af kernelogfiler " kern.* " og mailtjenestelogfiler " mail.* " .
Logfiler kan åbnes ved hjælp af enhver teksteditor, f.eks. less , cat eller tail . Lad os åbne filen “ /var/log/auth.log ” .
less /var/log/auth.log
Hver linje i filen er en separat besked modtaget fra applikationen eller tjenesten. Alle beskeder uanset deres kilde har ét format og består af 5 dele. Lad os tage den fremhævede besked på skærmbilledet som et eksempel.
- Besked tidsstempel - "12. feb 06:18:33"
- Navnet på den computer, der sendte beskeden - "vds"
- Navn på applikationen eller tjenesten, der sendte beskeden - "sshd"
- Proces-id - [653]
- Meddelelsestekst - "Accepteret adgangskode til mihail fra 188.19.42.165 port 2849 ssh2"
Dette var et eksempel på en vellykket forbindelse til SSH.
Og sådan ser et mislykket loginforsøg ud:
Denne fil optager også kommandoer med avancerede tilladelser
Lad os åbne /var/log/syslog -filen
En fremhævet besked på skærmbilledet er beskeden om nedlukning af netværksgrænsefladen.
Brug grep- værktøjet til at søge efter information i lange tekstfiler . Du kan finde alle beskeder modtaget fra pptpd- tjenesten i filen " /var/log/syslog ".
grep 'pptpd' /var/log/syslog
Under diagnosticeringen kan du bruge værktøjet tail , der kan vise de sidste linjer i filer. Kommandoen " tail -f /var/log/syslog " giver dig mulighed for at se logfilerne i realtid.
Tjenesten rsyslog er meget fleksibel og kraftfuld. Den kan bruges til at indsamle logfiler i lokale systemer såvel som på virksomhedsniveau. Du kan finde fuld dokumentation på den officielle hjemmeside https://www.rsyslog.com/
Log rotation i Linux
Logregistrering sker kontinuerligt, så størrelsen på filerne vokser konstant. Rotationsmekanismen sikrer automatisk arkivering af gamle logs og oprettelse af nye filer. Afhængigt af reglerne kan det ske dagligt, ugentligt, månedligt eller med en størrelsesgrænse. Når nye logs oprettes, kan gamle blot slettes eller sendes via e-mail. Logrotation udføres af logrotate -værktøjet. Du kan finde hovedkonfigurationen i filen " /etc/logrotate.conf ". Filindholdet behandles også i mappen " /etc/logrotate.d/ ".
Nye regler kan logges i den primære konfigurationsfil. Det er dog bedst at oprette en separat fil i “ /etc/logrotate.d/ ”. Som standard er der et par filer i denne mappe.
Lad os se på filen “ /etc/logrotate.d/rsyslog ”, der indeholder rotationsregler for logfiler fra rsyslog- tjenesten.
Først skal reglen indeholde stien til logfilen og derefter gå alle retningslinjer i buede parenteser.
- drej 7 - antal filer at beholde - 7
- dagligt - Opret en ny fil hver dag
- komprimere - komprimere og arkivere gamle filer
Du kan se på skærmbilledet, at i mappen " /var/log/ " findes hovedloggen " syslog " og 7 arkiver, hvilket svarer til reglerne i konfigurationsfilen.
Du kan finde en mere detaljeret beskrivelse af logrotate i manualen, hvor du udfører kommandoen " man logrotate ".
Indsamling af Linux-logfiler - journalført
Logindsamlingstjenesten systemd-journald er en del af initialiseringssystemet systemd . Linux-logfiler gemmes i " /var/log/journal/ " i et særligt format og kan åbnes ved hjælp af journalctl- værktøjet. Records-formatet er nøjagtigt det samme som i rsyslog.
Kommandoen journalctl uden attributter viser alle poster, men den er ikke egnet til større logfiler. Lad os se på nogle muligheder i dette værktøj.
journalctl -b- vis alle poster siden sidste startjournalctl -S "2020-02-17 12:00" -U "2020-02-17 12:10"- vis rekord inden for et bestemt tidsrumjournalctl -u pptpd- vise registreringer af en bestemt tjenestejournalctl -k- Vis kernebeskederjournalctl -p err- vis meddelelser med en bestemt prioritet, meddelelser med højere prioritet i dette tilfælde (crit, alert, emerg)journalctl -f- Vis beskeder i realtid
For bedre fleksibilitet kan du kombinere disse muligheder. Lad os vise alle fejl i pptpd- tjenesten.
journalctl -u pptpd -p err
Hvis du angiver stien til den eksekverbare fil som en attribut, vil værktøjet vise alle beskeder sendt af denne fil. Lad os vise alle beskeder sendt af filen “ /usr/bin/sudo ” siden kl. 04:15 den 18. februar 2020. Faktisk vil det vise alle kommandoer udført med højere tilladelser.
journalctl -S "2020-02-18 04:15" /usr/bin/sudo
For at finde ud af, hvor meget diskplads logfiler optager for at udføre følgende kommando
journalctl --disk-usage
For at begrænse logfilen til 1 Gb skal du udføre følgende kommando
journalctl --vacuum-size=1G
Åbning af binære filer
Lad os nu se på nogle specialfiler i mappen " /var/log/ ", hvor alle loginforsøg er gemt. Disse filer er binære og kan kun åbnes med specialprogrammer.
/var/log/wtmp indeholder oplysninger om vellykkede loginforsøg. Brug det sidste værktøj til at åbne det.
/var/log/btmp - indeholder alle mislykkede loginforsøg. Den kan åbnes med lastb med avancerede tilladelser. Attribut -n definerer antallet af viste linjer fra slutningen af filen.
/var/log/lastlog - indeholder tidspunktet for den sidste login-handling for hver kontopost. Den kan åbnes med lastlog