/
/

Linux Log Management: fortgeschrittene Techniken und Best Practices

von Team Ninja
Linux Log Management blog image

Kurzüberblick

Dieser NinjaOne-Blogbeitrag bietet eine umfassende Liste grundlegender CMD-Befehle und einen tiefen Einblick in die Windows-Befehle mit über 70 wichtigen CMD-Befehlen für Anfänger:innen und Fortgeschrittene. Der Blogartikel erklärt praktische Befehle der Eingabeaufforderung für die Dateiverwaltung, die Navigation in Verzeichnissen, die Fehlersuche im Netzwerk, Festplattenoperationen und die Automatisierung mit echten Beispielen zur Steigerung der Produktivität. Egal, ob Sie grundlegende CMD-Befehle lernen oder fortgeschrittene Windows CLI-Tools beherrschen möchten, dieser Leitfaden hilft Ihnen, die Eingabeaufforderung effektiver zu verwenden.

Schlüsselpunkte

  • Leiten Sie Logs an ELK, (r)syslog oder journald weiter, damit Sie Ereignisse systemübergreifend korrelieren können, statt jeden Host einzeln zu prüfen.
  • Konfigurieren Sie Rotationsintervall, Aufbewahrungsanzahl und Komprimierung in /etc/logrotate.conf, um volle Festplatten zu vermeiden und Logs gleichzeitig für Fehlerbehebung und Compliance verfügbar zu halten.
  • Nutzen Sie TLS mit rsyslog, wenn Sie Logs an einen zentralen Server weiterleiten, um Datenlecks während der Übertragung zu verhindern.
  • Verwenden Sie grep, awk, sed und journalctl, um Logs in Echtzeit zu durchsuchen, zu filtern und auszuwerten, etwa nach Dienst, Priorität oder Boot-Vorgang.
  • Journald eignet sich für systemd-basierte Hosts, (r)syslog für Legacy- und gemischte Umgebungen und ELK für die zentrale Log-Analyse in großem Maßstab.

Ein wirksames Linux Log Management bedeutet: Logs zentralisieren (ELK, (r)syslog oder journald), Aufbewahrungsrichtlinien mit logrotate festlegen, die Log-Übertragung per TLS absichern und für die Auswertung Kommandozeilen-Tools wie grep, awk und journalctl einsetzen. Dieser Artikel geht auf jede dieser Praktiken im Detail ein.

Linux-Logs sind eine wahre Fundgrube für Systemaktivitäten und liefern Einblicke in Abläufe, Fehler und Sicherheitsvorfälle. Ein wirksames Log Management ist für Systemadministrator:innen und Unternehmen entscheidend. Logs dienen als historische Aufzeichnung und helfen bei der Analyse nach Vorfällen, beim Performance-Tuning und bei der Einhaltung gesetzlicher Vorgaben. Die Überwachung von Logs in Echtzeit hilft dabei, Anomalien und mögliche Sicherheitsverletzungen zu erkennen und rechtzeitig einzugreifen. Die Fehlerbehebung wird effizienter, weil Administrator:innen die Ursachen anhand von Log-Mustern genau bestimmen. Letztlich sichert ein robustes Log Management den laufenden Betrieb, erhöht die Systemzuverlässigkeit und beschleunigt die Problemlösung.
Allerdings bringt Log Management auch Herausforderungen mit sich. Die schiere Menge an Logs, die verschiedene Anwendungen und Dienste erzeugen, kann Administrator:innen überfordern. Unterschiedliche Log-Formate und Speicherorte erschweren die Zusammenführung und damit die ganzheitliche Analyse. Unzureichende Aufbewahrungsrichtlinien können dazu führen, dass der Speicherplatz vollläuft. Eine effiziente und sichere Log-Übertragung ist unerlässlich, um Datenlecks während des Transfers zu verhindern.
Hinzu kommt: Die manuelle Log-Analyse ist zeitaufwendig und fehleranfällig. Und das Gleichgewicht zwischen umfassender Protokollierung und Performance zu halten, ist eine heikle Aufgabe. Um diese Herausforderungen zu meistern, braucht es schlanke Prozesse, automatisierte Tools, Zentralisierung, Aufbewahrungsrichtlinien und wirksame Analysetechniken, mit denen sich aus den Daten aussagekräftige Erkenntnisse gewinnen lassen.

Log-Typen und der Umgang mit ihnen

Logging-
Ansatz
ELK (Elasticsearch, Logstash und Kibana)(r)syslogjournald
LoggingLogs werden mit Logstash erfasst. Elasticsearch indexiert und speichert die Logs.Logs werden vom (r)syslog-Daemon verwaltet. Sie lassen sich in verschiedene Dateien schreiben.Logs werden vom journald-Daemon verwaltet und im Binärformat gespeichert.
TransportLogstash verarbeitet die Logs und transportiert sie zu Elasticsearch.syslog-ng und rsyslog übertragen Logs an entfernte Server oder in lokale Dateien.Nativer systemd-Dienst für die Log-Speicherung.
IndexierungElasticsearch indexiert und durchsucht Logs und bietet leistungsstarke Indexierung.(r)syslog kann Logs zur zentralen Indexierung an andere Systeme weiterleiten.systemd-journald speichert Logs in indexierten Dateien unter /var/log/journal.
Log-SucheKibana bietet eine grafische Oberfläche für Log-Analyse und Visualisierung.Logs lassen sich mit Kommandozeilen-Tools oder Tools von Drittanbietern durchsuchen.Das Kommandozeilen-Tool journalctl durchsucht und zeigt Logs an.
Vorteile
  • Zentrale Log-Verarbeitung.
  • Hochgradig anpassbare Indexierung.
  • Interaktive Dashboards (Kibana).
  • Auf Linux-Systemen überall verfügbar.
  • Schlank und effizient.
  • Flexibel beim Weiterleiten von Logs.
  • Effiziente Speicherung von Metadaten.
  • Erfasst Logs des Bootvorgangs.
Nachteile
  • Erfordert Einrichtung und Wartung.
  • Ressourcenintensiv (RAM, Speicher).
  • Komplexe Konfiguration (Logstash).
Für erweiterte Funktionen sind unter Umständen zusätzliche Tools nötig.Eingeschränkte Abwärtskompatibilität.

Auf Linux-Systemen liegen Logs standardmäßig im Verzeichnis /var/log, auch wenn das technisch gesehen willkürlich ist: Mit den passenden Berechtigungen können Sie Logs an jedem beliebigen Ort ablegen. Jede Log-Datei hat einen bestimmten Zweck, vom Protokollieren der Systemstart-Meldungen (dmesg) bis zur Überwachung von Anmeldeversuchen (auth.log).
Um etwa kernelbezogene Meldungen anzuzeigen, verwenden Sie:
dmesg | less
Weitere Beispiele finden Sie weiter unten im Abschnitt „Kommandozeile meistern“.

Eine anschauliche Erklärung liefert das verfügbare Video Linux-Logs verstehen: Übersicht mit Beispielen.

Linux-Logs verwalten

Zentrales Log Management

Die Zentralisierung von Logs verbessert Analyse und Fehlerbehebung, weil Log-Daten aus unterschiedlichen Quellen in einem einzigen Repository zusammenlaufen. Das vereinfacht den Zugriff und liefert ein Gesamtbild der Systemaktivität. So erkennen Administrator:innen Muster, Anomalien und potenzielle Probleme in der gesamten Infrastruktur schnell.
Zentralisierte Logs erleichtern es, verschiedene Log-Quellen miteinander in Beziehung zu setzen. Dadurch lässt sich die Ursache von Problemen, die sich über mehrere Systeme oder Anwendungen erstrecken, leichter zurückverfolgen. Administrator:innen können einheitliche Analysemethoden anwenden und Probleme so schneller erkennen und beheben.
Darüber hinaus ermöglichen zentralisierte Logs den Einsatz fortgeschrittener Such-, Filter- und Reporting-Tools, mit denen sich relevante Informationen effizient aus großen Datenmengen herausfiltern lassen. Das erleichtert es, kritische Ereignisse zu identifizieren, das Systemverhalten zu verstehen und auf Sicherheitsvorfälle zu reagieren.
Die Zentralisierung gibt Administrator:innen ein umfassendes, gut zugängliches und strukturiertes Log-Repository an die Hand. Sie reduziert den Zeit- und Arbeitsaufwand für Analyse und Fehlerbehebung erheblich, fördert ein proaktives Systemmanagement und erhält die Betriebsintegrität.
Denken Sie daran: Jeder Ansatz hat seine Stärken und Schwächen. Welcher der richtige ist, hängt von Faktoren wie der Größe Ihrer Umgebung, den konkreten Anwendungsfällen, den verfügbaren Ressourcen und Ihrer Vertrautheit mit den Technologien ab.
Die Zentralisierung von Logs bringt mehrere Vorteile mit sich, darunter eine schlankere Analyse und eine effiziente Fehlerbehebung. Der ELK-Stack (Elasticsearch, Logstash, Kibana) ist dafür eine beliebte Wahl. Elasticsearch indexiert und durchsucht Logs, Logstash parst und leitet sie weiter, und Kibana sorgt für die Visualisierung.

Effizientes Backup und Aufbewahrung von Logs

journald setzt auf ein binäres Log-Format für eine effiziente Speicherung. Die Log-Rotation läuft in journald automatisiert und platzsparend ab. Nähert sich der Log-Speicher einem vordefinierten Schwellenwert, werden ältere Logs nach und nach gelöscht. So bleibt das Speicherlimit eingehalten und aktuelle Logs stehen weiterhin für Analysen zur Verfügung.
Bei (r)syslog/logrotate gelten auf den meisten Systemen, die dies noch als primäres Logging-System nutzen, dieselben Standardregeln. Die Konfiguration von logrotate-Richtlinien ist ein entscheidender Schritt, um Log-Dateien effizient zu verwalten. Indem Sie Log-Dateien definieren, das Rotationsintervall festlegen, Aufbewahrungsrichtlinien setzen und weitere Optionen nutzen, stellen Sie sicher, dass Logs sinnvoll verwaltet werden. So vermeiden Sie Speicherplatzprobleme und halten Logs für Analysen und Compliance-Zwecke vor.
Auch Backups sind für historische Auswertungen und Compliance unverzichtbar. Nutzen Sie Tools wie rsync, um Backups effizient zu erstellen. Automatisieren Sie die Sicherungen mit Cron-Jobs, damit sie regelmäßig laufen. Um die Größe von Log-Dateien im Griff zu behalten, setzen Sie logrotate ein und konfigurieren Richtlinien für die Aufbewahrung.

logrotate-Richtlinien konfigurieren

Logrotate ist ein unverzichtbares Tool für die Verwaltung von Log-Dateien auf Linux-Systemen. Damit steuern Sie Log-Rotation, Komprimierung und Aufbewahrungsrichtlinien. Hier eine kurze Anleitung zur Konfiguration von logrotate-Richtlinien:

Konfigurationsdatei

Öffnen Sie die logrotate-Konfigurationsdatei in einem Texteditor:
sudo nano /etc/logrotate.conf

Log-Dateien definieren

Legen Sie in der Konfigurationsdatei fest, welche Log-Dateien Sie verwalten möchten. Verwenden Sie dafür die Blocksyntax von logrotate:

/path/to/log/file {
    options
}

Optionen

Passen Sie das Verhalten über verschiedene Optionen an. Zu den gängigen Optionen zählen:

  • daily: Logs täglich rotieren.
  • weekly: Logs wöchentlich rotieren.
  • monthly: Logs monatlich rotieren.
  • rotate X: X rotierte Logs aufbewahren.
  • compress: Rotierte Logs komprimieren.
  • delaycompress: Rotierte Logs komprimieren, die Komprimierung aber bis zur nächsten Rotation aufschieben.

Aufbewahrungsrichtlinien anwenden

Um eine Aufbewahrungsrichtlinie für Log-Dateien festzulegen, nutzen Sie die Option rotate gefolgt von der Anzahl der rotierten Logs, die Sie behalten möchten. Zum Beispiel:

/var/log/syslog {
    daily
    rotate 7
}

Rotationsintervall anpassen

Mit den Optionen daily, weekly oder monthly legen Sie fest, wie oft die Log-Rotation stattfindet.

Eigene Richtlinien anwenden

Für einzelne Anwendungen können Sie eigene logrotate-Richtlinien erstellen, indem Sie separate Konfigurationsdateien im Verzeichnis /etc/logrotate.d/ ablegen.

Testen und ausführen

Testen Sie Ihre logrotate-Konfiguration mit dem Flag -d, um den Rotationsvorgang zu simulieren, ohne Änderungen vorzunehmen:
sudo logrotate -d /etc/logrotate.conf
Wenn alles passt, führen Sie die Log-Rotation so aus:
sudo logrotate /etc/logrotate.conf

Sichere Log-Übertragung

Die sichere Übertragung von Logs ist entscheidend, um Datenschutzverletzungen zu verhindern. Setzen Sie Transport Layer Security (TLS) mit Tools wie OpenSSL ein, um Log-Daten während der Übertragung zu verschlüsseln. Konfigurieren Sie außerdem Protokolle wie rsyslog für die verschlüsselte Weiterleitung über Netzwerkverbindungen. Ein zentraler rsyslog-Server ist eine recht verbreitete Nicht-systemd-Variante für ein zentrales Logging-System, oft mit einer komfortablen, durchsuchbaren Weboberfläche: Sie senden die Syslogs all Ihrer Server an eine SQL-Datenbank auf einem zentralen rsyslog-Server und lassen dort dann etwa php-syslog-ng laufen.

Kommandozeile meistern für die Log-Analyse

Mit Kommandozeilen-Tools analysieren Administrator:innen Logs besonders effizient. Nutzen Sie grep, um in Log-Dateien nach Mustern zu suchen, awk, um strukturierte Daten zu extrahieren, und sed, um Meldungen zu bearbeiten. Um Logs etwa nach einem bestimmten Schlüsselwort zu filtern:
grep -i „keyword“ /var/log/syslog # Suche nach einem Schlüsselwort in /var/log/syslog, Groß-/Kleinschreibung wird ignoriert

Umgang mit (r)syslog-Logs

Logs anzeigen
  • cat /var/log/syslog # Das gesamte Syslog anzeigen.
  • tail -n 50 /var/log/messages # Die letzten 50 Zeilen des messages-Logs anzeigen.
  • tail -f /var/log/messages # „folgt“ dem Log (hält es offen und zeigt neu angehängte Zeilen an)
Nach bestimmten Mustern suchen

grep „error„ /var/log/syslog # Im Syslog nach dem Wort „error“ suchen.

Logs weiterleiten

echo „This is a test log“ | logger # Einen eigenen Log-Eintrag an (r)syslog senden.

Umgang mit systemd-/journald-Logs

Allgemeine Logs und Systemlogs anzeigen
  • journalctl # Alle verfügbaren Logs anzeigen.
  • journalctl -u sshd # Logs des SSH-Dienstes anzeigen.
Nach bestimmten Mustern suchen
  • journalctl -p err # Logs mit Priorität „err“ oder höher anzeigen.
  • journalctl /usr/bin/bash # Logs eines bestimmten Prozesses bzw. Befehls anzeigen.
Boot-Logs anzeigen
  • journalctl -b # Logs des aktuellen Bootvorgangs anzeigen.
Notfall-Logs anzeigen

Der Befehl „journalctl -xe“ zeigt das systemd-Journal mit zusätzlichen Informationen zu Fehlern an. Konkret werden Einträge mit der Priorität „emergency“ und höher ausgegeben, ergänzt um weitere Details zu den Fehlern, etwa Ursache und Kontext.
Das bewirken die einzelnen Bestandteile des Befehls:

  • -xe: Dies sind Optionen und Parameter, die an den Befehl journalctl übergeben werden:
  • -x: Diese Option erweitert die Einträge und zeigt die vollständige Meldung jedes Log-Eintrags an, inklusive zusätzlicher Details wie Kontext und Fehlerursachen.
  • -e: Diese Option zeigt Logs mit der Prioritätsstufe „emergency“ und höher an. In den Log-Stufen des systemd-Journals ist „emergency“ die höchste Schweregradstufe.

Wenn Sie den Befehl journalctl -xe ausführen, erhalten Sie einen Echtzeit-Stream der Logs mit der Prioritätsstufe „emergency“ und höher, inklusive detaillierter Informationen zu Fehlern und Problemen, die auf Ihrem System aufgetreten sein könnten. Diese Zusatzinformationen sind besonders hilfreich, wenn Sie kritische Probleme beheben müssen, die sofortiges Handeln erfordern.

Umgang mit ELK-Logging

Log-Daten indexieren

So indexieren Sie Log-Daten mit Logstash in Elasticsearch:
logstash -f /path/to/config.conf

Logs in Kibana abfragen

Öffnen Sie einen Browser und rufen Sie http://localhost:5601 auf.
Nutzen Sie die Query Language von Kibana, um Logs zu filtern und zu durchsuchen. Erstellen Sie Visualisierungen und Dashboards, um Log-Daten auszuwerten.

Fortgeschrittene Techniken: Parsing und Visualisierung

Zu den fortgeschrittenen Techniken gehören das Parsen strukturierter Logs und die Visualisierung der Daten. Tools wie jq eignen sich gut zum Parsen von Logs im JSON-Format und ermöglichen es, gezielt einzelne Felder zu extrahieren. Visualisieren Sie Log-Daten mit den Dashboards von Kibana, um Einblicke in das Systemverhalten zu gewinnen.

Logs nutzen: der Weg zu einem exzellenten Betrieb

In der Linux-Administration ist ein fortgeschrittenes Log Management ein unverzichtbares Tool zur Optimierung. Die Bedeutung von Logs anzuerkennen, die Analyse auf der Kommandozeile souverän zu beherrschen, Log-Daten zu zentralisieren und verlässliche Backup- und Übertragungsverfahren zu etablieren: Das sind die Grundlagen für Systemintegrität und Sicherheit. Mit diesen Praktiken für das Linux Log Management sind Administrator:innen für eine schnelle Fehlerbehebung gerüstet und können ihre Systeme aufmerksam überwachen.

Wenn Sie diese Praktiken anschaulich erklärt bekommen möchten, sehen Sie sich Linux Log Management: Techniken und Best Practices an.

FAQs

Die meisten Linux-Distributionen speichern Logs standardmäßig in /var/log, verteilt auf Dateien wie syslog, auth.log und dmesg. Administrator:innen können den Speicherort mit den passenden Berechtigungen aber beliebig umleiten.

Syslog-basierte Tools wie rsyslog schreiben Logs im Klartext in Dateien und können sie an entfernte Systeme weiterleiten. Journald dagegen speichert Logs in einem indexierten Binärformat, das von systemd verwaltet und mit journalctl abgefragt wird.

Konfigurieren Sie logrotate-Richtlinien wie Rotationsintervall, Aufbewahrungsanzahl und Komprimierung in /etc/logrotate.conf oder in einer Datei unter /etc/logrotate.d/, damit Log-Dateien automatisiert rotiert und bereinigt werden.

Das könnte Sie auch interessieren

Sind Sie bereit, die schwierigsten Aufgaben der IT zu vereinfachen?