Als je problemen ondervindt met de prestaties van je server, is het eerste wat je moet doen je Linux-logboeken controleren . In het systeemlogboek vind je nuttige diagnostische berichten van verschillende componenten van het besturingssysteem, zoals de kernel of diverse services, waardoor je de oorzaak van de storing daar waarschijnlijk kunt vinden.
Elk bericht in het log wordt gegenereerd als resultaat van bepaalde gebeurtenissen in het besturingssysteem: van de gebruiker, autorisatie tot service shutdown of applicatie failure. Deze gebeurtenissen hebben verschillende prioriteiten, afhankelijk van hoe kritisch ze zijn. Er zijn de volgende typen gebeurtenissen in Linux:
emerg- mislukking, hoogste prioriteit;alert- dringende waarschuwing;crit- kritieke gebeurtenis;err- gewone fout;warn- gewone waarschuwing;notice- kennisgeving;info- informatiebericht;debug- foutopsporingsinformatie;
Op dit moment zijn rsyslog en systemd-journald de belangrijkste services voor het verzamelen van logbestanden in Linux . Ze worden meegeleverd met de meeste moderne distributiepakketten en werken onafhankelijk van elkaar.
rsyslog
De logbestanden van deze service bevinden zich in de map “ /var/log/ ” in de vorm van gewone tekstbestanden. Logberichten worden in verschillende bestanden geplaatst, afhankelijk van het type gebeurtenis. Zo bevat “ /var/log/auth.log ” informatie over de autorisatie van gebruikers in het systeem en “ /var/log/kern.log ” kernelberichten. Bestandsnamen kunnen verschillen per distributiepakket, dus laten we eens kijken naar het configuratiebestand “ /etc/rsyslog.d/50-default.conf ” om een idee te krijgen van waar de bestanden zich bevinden .
Deze regels laten zien welk bestand elk type logbericht bevat. Het linkergedeelte toont het type bericht in de volgende vorm: “ [Bron].[Prioriteit] ”, en het rechtergedeelte toont de naam van het logbestand. Bij het schrijven van het berichttype kan het teken “ * ” worden toegevoegd. Dit betekent een lege waarde of “ geen ”, waardoor het bericht uit de lijst wordt verwijderd. Laten we de eerste twee regels eens nader bekijken.
“auth,authpriv.* /var/log/auth.log”
“*.*;auth,authpriv.none -/var/log/syslog”
De eerste regel houdt in dat alle berichten die van het autorisatiemechanisme worden ontvangen, worden opgeslagen in het bestand “ /var/log/auth.log ”. Alle autorisatiepogingen (zowel geslaagde als mislukte) worden in dit bestand geregistreerd. De tweede regel geeft aan dat alle berichten, behalve die met betrekking tot autorisatie, worden opgeslagen in het bestand “ /var/log/syslog ”. Deze twee bestanden worden doorgaans het meest gebruikt. De volgende regels definiëren het pad voor het opslaan van kernel-logbestanden “ kern.* ” en mailservice-logbestanden “ mail.* ”.
Logbestanden kunnen worden geopend met behulp van een teksteditor zoals less , cat of tail . Laten we het bestand " /var/log/auth.log " openen.
less /var/log/auth.log
Elke regel van het bestand is een apart bericht dat is ontvangen van de applicatie of service. Alle berichten, ongeacht hun bron, hebben één formaat en bestaan uit 5 delen. Laten we het gemarkeerde bericht in de schermafbeelding als voorbeeld nemen.
- Tijdstempel bericht - "12 feb 06:18:33"
- Naam van de computer die het bericht heeft verzonden - "vds"
- Naam van de applicatie of service die het bericht heeft verzonden - "sshd"
- Proces-ID - [653]
- Berichttekst - "Wachtwoord voor mihail geaccepteerd vanaf 188.19.42.165 poort 2849 ssh2"
Dit was een voorbeeld van een succesvolle verbinding met SSH.
En dit is hoe een mislukte inlogpoging eruitziet:
Dit bestand registreert ook opdrachten met geavanceerde machtigingen
Laten we het bestand /var/log/syslog openen.
Een gemarkeerd bericht op de schermafbeelding is het bericht over het afsluiten van de netwerkinterface.
Gebruik het grep- hulpprogramma om informatie in lange tekstbestanden te doorzoeken . Alle berichten die van de pptpd- service zijn ontvangen, vindt u in het bestand " /var/log/syslog ".
grep 'pptpd' /var/log/syslog
Tijdens de diagnose kunt u het hulpprogramma `tail` gebruiken om de laatste regels van enkele bestanden weer te geven. Met de opdracht " tail -f /var/log/syslog " kunt u de logbestanden in realtime bekijken.
De rsyslog -service is zeer flexibel en krachtig. Hij kan worden gebruikt voor het verzamelen van logbestanden op lokale systemen, maar ook op bedrijfsniveau. Volledige documentatie is te vinden op de officiële website: https://www.rsyslog.com/
Rotatie van logs in Linux
Logbestanden worden continu vastgelegd, waardoor de bestandsgrootte voortdurend toeneemt. Het rotatiemechanisme zorgt voor automatische archivering van oude logbestanden en de aanmaak van nieuwe bestanden. Afhankelijk van de regels kan dit dagelijks, wekelijks, maandelijks of op basis van een groottelimiet gebeuren. Wanneer nieuwe logbestanden worden aangemaakt, kunnen oude bestanden worden verwijderd of per e-mail worden verzonden. Logrotatie wordt uitgevoerd door het hulpprogramma logrotate . De belangrijkste configuratie is te vinden in het bestand " /etc/logrotate.conf ". De inhoud van de bestanden wordt ook verwerkt in de map " /etc/logrotate.d/ " .
Nieuwe regels kunnen worden vastgelegd in het hoofdconfiguratiebestand. Het is echter beter om een apart bestand aan te maken in “ /etc/logrotate.d/ ”. Standaard bevinden zich een aantal bestanden in deze map.
Laten we eens kijken naar het bestand “ /etc/logrotate.d/rsyslog ” dat de rotatieregels bevat voor de logbestanden van de rsyslog- service.
Eerst moet de regel het pad naar het logbestand bevatten en daarna moeten alle richtlijnen tussen gebogen haakjes staan.
- draaien 7 - aantal te bewaren bestanden - 7
- dagelijks - maak elke dag een nieuw bestand aan
- samendrukken - oude bestanden comprimeren en archiveren
Zoals je op de schermafbeelding kunt zien, bevindt zich in de map “ /var/log/ ” het hoofdlogbestand “ syslog ” en 7 archiefbestanden, die overeenkomen met de regels in het configuratiebestand.
Een meer gedetailleerde beschrijving van logrotate is te vinden in de handleiding door het commando " man logrotate " uit te voeren.
Linux-logs verzamelen - journald
De logverzamelingsservice systemd-journald maakt deel uit van het initialisatiesysteem systemd . Linux-logbestanden worden opgeslagen in " /var/log/journal/ " in een speciaal formaat en kunnen worden geopend met behulp van het hulpprogramma journalctl . Het formaat van de records is exact hetzelfde als in rsyslog.
Het commando `journalctl` zonder attributen toont alle records, maar is niet geschikt voor grotere logbestanden. Laten we eens kijken naar enkele opties van dit hulpprogramma.
journalctl -b- toon alle records sinds de laatste startjournalctl -S "2020-02-17 12:00" -U "2020-02-17 12:10"- toon record binnen een bepaalde tijdsperiodejournalctl -u pptpd- gegevens van een bepaalde dienst weergevenjournalctl -k- kernelberichten weergevenjournalctl -p err- berichten met een bepaalde prioriteit weergeven, in dit geval berichten met een hogere prioriteit (crit, alert, emerg)journalctl -f- berichten in realtime weergeven
Voor meer flexibiliteit kunt u deze opties combineren. Laten we alle fouten van de pptpd- service weergeven.
journalctl -u pptpd -p err
Als u het pad naar het uitvoerbare bestand als attribuut opgeeft, toont het hulpprogramma alle berichten die door dit bestand zijn verzonden. Laten we alle berichten weergeven die door het bestand " /usr/bin/sudo " zijn verzonden sinds 04:15 op 18 februari 2020. Het toont in feite alle opdrachten die met hogere rechten zijn uitgevoerd.
journalctl -S "2020-02-18 04:15" /usr/bin/sudo
Om erachter te komen hoeveel schijfruimte logbestanden in beslag nemen, voert u de volgende opdracht uit
journalctl --disk-usage
Om het logbestand te beperken tot 1 GB voert u de volgende opdracht uit
journalctl --vacuum-size=1G
Binaire bestanden openen
Laten we nu eens kijken naar enkele speciale bestanden in de map " /var/log/ ", waar alle inlogpogingen worden opgeslagen. Deze bestanden zijn binair en kunnen alleen met speciale programma's worden geopend.
Het bestand /var/log/wtmp bevat informatie over geslaagde inlogpogingen. Gebruik het hulpprogramma 'last' om het te openen.
/var/log/btmp - bevat alle mislukte inlogpogingen. Het kan worden geopend met lastb met geavanceerde machtigingen. Het attribuut -n definieert het aantal regels dat vanaf het einde van het bestand wordt weergegeven.
/var/log/lastlog - bevat het tijdstip van de laatste inlogactie voor elk accountrecord. Het kan worden geopend met lastlog.