Wenn Sie Probleme mit der Serverleistung haben, sollten Sie als Erstes Ihre Linux-Logs überprüfen . Im Systemprotokoll finden Sie hilfreiche Diagnosemeldungen verschiedener Betriebssystemkomponenten wie dem Kernel oder diversen Diensten. Die Fehlerursache lässt sich dort höchstwahrscheinlich finden.
Jede Meldung im Protokoll wird als Ergebnis bestimmter Ereignisse im Betriebssystem generiert: vom Benutzer, der Autorisierung bis hin zum Herunterfahren eines Dienstes oder einem Anwendungsfehler. Diese Ereignisse haben je nach ihrer Kritikalität unterschiedliche Prioritäten. Unter Linux gibt es folgende Ereignistypen:
emerg- Fehler, höchste Priorität;alert- dringende Warnung;crit- kritisches Ereignis;err- gewöhnlicher Fehler;warn- gewöhnliche Verwarnung;notice- Benachrichtigung;info- Informationsnachricht;debug- Debugging-Informationen;
Aktuell sind rsyslog und systemd-journald die wichtigsten Dienste zum Sammeln von Protokolldateien unter Linux . Sie sind in den meisten modernen Distributionspaketen enthalten und funktionieren unabhängig voneinander.
rsyslog
Die Protokolle dieses Dienstes befinden sich im Ordner „ /var/log/ “ als einfache Textdateien. Je nach Ereignistyp werden die Protokollmeldungen in unterschiedlichen Dateien gespeichert. Beispielsweise enthält „ /var/log/auth.log “ Informationen zur Benutzerauthentifizierung im System, und „ /var/log/kern.log “ enthält Kernelmeldungen. Da die Dateinamen je nach Distribution variieren können, werfen wir einen Blick in die Konfigurationsdatei „ /etc/rsyslog.d/50-default.conf “ , um zu verstehen, wo sich die Dateien befinden.
Diese Regeln zeigen an, welche Datei welchen Protokollmeldungstyp enthält. Der linke Teil zeigt den Meldungstyp im Format „ [Quelle].[Priorität] “ an, der rechte Teil den Namen der Protokolldatei. Beim Eintragen des Meldungstyps kann ein „ * “ hinzugefügt werden. Dies bedeutet einen leeren Wert oder „ none “, wodurch der Eintrag aus der Liste entfernt wird. Betrachten wir die ersten beiden Regeln genauer.
“auth,authpriv.* /var/log/auth.log”
“*.*;auth,authpriv.none -/var/log/syslog”
Die erste Regel besagt, dass alle vom Autorisierungsmechanismus empfangenen Meldungen in der Datei „ /var/log/auth.log “ protokolliert werden. Alle Autorisierungsversuche (erfolgreiche wie fehlgeschlagene) werden in dieser Datei registriert. Die zweite Regel legt fest, dass alle Meldungen außer den Autorisierungsmeldungen in der Datei „ /var/log/syslog “ gespeichert werden. Diese beiden Dateien sind üblicherweise am weitesten verbreitet. Die folgenden Regeln definieren den Pfad zum Speichern der Kernel-Logs („ kern.* “) und der Mail-Service-Logs („ mail.* “) .
Logdateien lassen sich mit jedem beliebigen Texteditor öffnen, beispielsweise less , cat oder tail . Öffnen wir die Datei „ /var/log/auth.log “.
less /var/log/auth.log
Jede Zeile der Datei stellt eine separate Nachricht dar, die von der Anwendung oder dem Dienst empfangen wurde. Alle Nachrichten haben unabhängig von ihrer Quelle ein einheitliches Format und bestehen aus fünf Teilen. Nehmen wir als Beispiel die hervorgehobene Nachricht im Screenshot.
- Zeitstempel der Nachricht: „12. Feb. 06:18:33“
- Name des Computers, der die Nachricht gesendet hat – „vds“
- Name der Anwendung oder des Dienstes, der die Nachricht gesendet hat – „sshd“
- Prozess-ID - [653]
- Nachrichtentext – „Passwort für Mihail von 188.19.42.165 Port 2849 SSH2 akzeptiert“
Dies war ein Beispiel für eine erfolgreiche Verbindung zu SSH.
Und so sieht ein erfolgloser Anmeldeversuch aus:
Diese Datei zeichnet auch Befehle mit erweiterten Berechtigungen auf
Öffnen wir die Datei /var/log/syslog .
Eine hervorgehobene Meldung auf dem Screenshot ist die Meldung zum Herunterfahren der Netzwerkschnittstelle.
Zum Durchsuchen langer Textdateien verwenden Sie das Dienstprogramm grep . Alle vom pptpd- Dienst empfangenen Meldungen finden Sie in der Datei „ /var/log/syslog “.
grep 'pptpd' /var/log/syslog
Während der Diagnose können Sie das Dienstprogramm „tail“ verwenden , das die letzten Zeilen einiger Dateien anzeigt. Mit dem Befehl „ tail -f /var/log/syslog “ können Sie die Protokollaufzeichnung in Echtzeit verfolgen.
Der Dienst rsyslog ist sehr flexibel und leistungsstark. Er kann sowohl für die Protokollerfassung auf lokalen Systemen als auch auf Unternehmensebene eingesetzt werden. Die vollständige Dokumentation finden Sie auf der offiziellen Website https://www.rsyslog.com/
Protokollrotation unter Linux
Die Protokollierung erfolgt kontinuierlich, wodurch die Dateigröße stetig zunimmt. Ein Rotationsmechanismus sorgt für die automatische Archivierung alter Protokolle und die Erstellung neuer Dateien. Je nach Konfiguration kann dies täglich, wöchentlich, monatlich oder nach Erreichen einer bestimmten Größe erfolgen. Sobald neue Protokolle erstellt wurden, können alte entweder gelöscht oder per E-Mail versendet werden. Die Protokollrotation wird vom Dienstprogramm logrotate durchgeführt . Die Hauptkonfiguration finden Sie in der Datei „ /etc/logrotate.conf “. Die Dateiinhalte werden auch im Ordner „ /etc/logrotate.d/ “ verarbeitet.
Neue Regeln können in die Hauptkonfigurationsdatei eingetragen werden. Es empfiehlt sich jedoch, eine separate Datei in „ /etc/logrotate.d/ “ zu erstellen. Standardmäßig befinden sich in diesem Verzeichnis bereits einige Dateien.
Werfen wir einen Blick auf die Datei „ /etc/logrotate.d/rsyslog ", die Rotationsregeln für die Protokolle des rsyslog- Dienstes enthält.
Die Regel sollte zunächst den Pfad zur Protokolldatei enthalten und anschließend alle Angaben in geschweiften Klammern.
- drehen 7 - Anzahl der aufzubewahrenden Dateien - 7
- Unterricht - jeden Tag eine neue Datei erstellen
- komprimieren - alte Dateien komprimieren und archivieren
Auf dem Screenshot ist zu sehen, dass sich im Ordner „ /var/log/ “ das Hauptprotokoll „ syslog “ und 7 Archive befinden, was den Regeln in der Konfigurationsdatei entspricht.
Eine detailliertere Beschreibung von logrotate finden Sie im Handbuch, das Sie mit dem Befehl „ man logrotate “ aufrufen können.
Sammeln von Linux-Protokollen – journald
Der Log-Erfassungsdienst systemd-journald ist Bestandteil des Initialisierungssystems systemd . Linux-Logdateien werden in einem speziellen Format unter „ /var/log/journal/ “ gespeichert und können mit dem Dienstprogramm journalctl geöffnet werden . Das Format der Datensätze entspricht exakt dem von rsyslog.
Der Befehl `journalctl` ohne Attribute zeigt zwar alle Datensätze an, ist aber für größere Protokolldateien nicht geeignet. Schauen wir uns einige Optionen dieses Tools an.
journalctl -b- alle Datensätze seit dem letzten Start anzeigenjournalctl -S "2020-02-17 12:00" -U "2020-02-17 12:10"- Aufzeichnung innerhalb eines bestimmten Zeitraums anzeigenjournalctl -u pptpd- Aufzeichnungen eines bestimmten Dienstes anzeigenjournalctl -k- Kernel-Meldungen anzeigenjournalctl -p err- Nachrichten einer bestimmten Priorität anzeigen, in diesem Fall Nachrichten mit höherer Priorität (Krit, Alarm, Notfall)journalctl -f- Nachrichten in Echtzeit anzeigen
Für mehr Flexibilität können Sie diese Optionen kombinieren. Lassen Sie uns alle Fehler des pptpd- Dienstes anzeigen.
journalctl -u pptpd -p err
Wenn Sie den Pfad zur ausführbaren Datei als Attribut angeben, zeigt das Dienstprogramm alle von dieser Datei gesendeten Meldungen an. Lassen Sie uns alle Meldungen anzeigen, die die Datei „ /usr/bin/sudo “ seit 04:15 Uhr am 18. Februar 2020 gesendet hat. Tatsächlich werden alle Befehle angezeigt, die mit höheren Berechtigungen ausgeführt wurden.
journalctl -S "2020-02-18 04:15" /usr/bin/sudo
Um herauszufinden, wie viel Speicherplatz Protokolldateien beanspruchen, führen Sie den folgenden Befehl aus
journalctl --disk-usage
Um die Protokolldatei auf 1 GB zu begrenzen, führen Sie den folgenden Befehl aus
journalctl --vacuum-size=1G
Öffnen von Binärdateien
Schauen wir uns nun einige spezielle Dateien im Ordner „ /var/log/ “ an, in dem alle Anmeldeversuche gespeichert werden. Diese Dateien sind binär und können nur mit speziellen Programmen geöffnet werden.
Die Datei /var/log/wtmp enthält Informationen über erfolgreiche Anmeldeversuche. Verwenden Sie das Dienstprogramm „last“, um sie zu öffnen.
Die Datei `/var/log/btmp` enthält alle fehlgeschlagenen Anmeldeversuche. Sie kann mit `lastb` und erweiterten Berechtigungen geöffnet werden. Das Attribut `-n` definiert die Anzahl der Zeilen, die vom Ende der Datei angezeigt werden.
/var/log/lastlog – enthält den Zeitpunkt der letzten Anmeldung für jeden Account-Datensatz. Es kann mit lastlog geöffnet werden.