Linux-Logs mit rsyslog verwalten

Linux-Systeme erzeugen kontinuierlich Protokolle vom Kernel, von Diensten und Anwendungen. Eine saubere Verwaltung dieser Logdateien ist entscheidend, um Fehler zu analysieren, Aktivitäten nachzuverfolgen und einen reibungslosen Betrieb sicherzustellen.

rsyslog ist ein weit verbreiteter Logging-Daemon, der Protokolle sammelt, verarbeitet, speichert und bei Bedarf weiterleiten kann. Dank flexibler Konfiguration, Filterregeln und verschiedenen Ausgabemöglichkeiten eignet er sich sowohl für einfache Umgebungen als auch für komplexe Infrastrukturen.

In diesem Leitfaden erfahren Sie, wie Sie rsyslog nutzen, um Logs anzuzeigen, eigene Regeln zu definieren und Protokolle an entfernte Server weiterzuleiten.

Was ist rsyslog und warum ist es wichtig?

rsyslog ist ein modernes Logging-Tool, das in den meisten Linux-Distributionen standardmäßig enthalten ist. Es entstand als erweiterte Variante von syslog und bietet bessere Leistung sowie zusätzliche Funktionen. Im Gegensatz zu klassischen syslog-Diensten unterstützt rsyslog mehrere Eingangsquellen, fortgeschrittene Filterung, regelbasierte Weiterleitung und Remote-Logging. Damit eignet es sich nicht nur für die lokale Logverwaltung, sondern auch zum Aufbau zentralisierter Logging-Systeme, in denen Protokolle vieler Systeme an einer Stelle gesammelt werden.

Zentrale Funktionen von rsyslog

  • Modulare Architektur: Eingaben, Filter und Ausgaben werden per Plugin eingebunden.
  • Flexible Konfiguration: Regeln können nach Priorität, Quelle, Programmname oder Nachrichteninhalt erstellt werden.
  • Remote-Weiterleitung: Versand von Logs über TCP oder UDP an externe Server.
  • Unterstützung strukturierter Daten: Verarbeitung von JSON und RFC 5424 für bessere Auswertung.
  • Hohe Performance: Multi-Threading ermöglicht die Bearbeitung großer Logmengen.
  • Eigene Regeln: Präzise Steuerung, welche Protokolle wo und wie gespeichert werden.
  • Mehrere Eingänge: Erfassung von Kernel-, Service-, Anwendungs- und Skript-Logs.
  • Strukturierte Ausgaben: Formatierte Protokolle für bessere Lesbarkeit und Analyse.

Wie rsyslog funktioniert: Input, Filter und Output

rsyslog arbeitet nach einem dreistufigen Modell aus Input, Filter und Output:

  • Input: Erfassung von Logs über Sockets (imuxsock), Kernelmeldungen (imklog), Dateien (imfile) oder Netzwerkprotokolle (imtcp, imudp).
  • Filter: Anwendung von Regeln basierend auf Facility, Schweregrad oder individuellen Ausdrücken.
  • Output: Weiterleitung der gefilterten Logs an Dateien, Datenbanken, entfernte Server oder Queues mit anpassbarer Formatierung.

Dieses Modell ermöglicht die flexible Anpassung sowohl für einzelne Server als auch für große Umgebungen.

Häufige Speicherorte für Logdateien unter Linux

Protokolle werden unter /var/log/ gespeichert. Zu den wichtigsten Dateien gehören:

  • /var/log/syslog: Allgemeine System- und Anwendungsprotokolle (Debian/Ubuntu).
  • /var/log/messages: Allgemeines Systemlog (Red Hat, CentOS, Fedora).
  • /var/log/auth.log: Authentifizierungen, Logins, sudo, SSH (für Sicherheitsüberwachung).
  • /var/log/kern.log: Kernel-Meldungen, hilfreich bei Hardware- oder Modulproblemen.
  • /var/log/dmesg: Kernel-Buffer nach dem Boot, insbesondere Hardware-Initialisierung.
  • /var/log/cron.log: Protokollierung geplanter Cron-Jobs.

Logs mit Basisbefehlen unter Linux anzeigen

Bevor rsyslog konfiguriert wird, lassen sich Logdateien mit Standardbefehlen untersuchen:

  • cat: Gesamten Inhalt einer Datei ausgeben.
  • more: Datei seitenweise anzeigen.
  • less: Scrollbare Anzeige, vor- und rückwärts.
  • tail: Zeigt die letzten 10 Zeilen einer Datei.
  • tail -f: Neue Logeinträge in Echtzeit mitverfolgen.
  • zless / zcat / zgrep: Gelesene oder komprimierte .gz-Logs öffnen.

Logs filtern mit grep, awk und sed

Linux stellt mächtige Werkzeuge zur Textverarbeitung bereit, um Logs zu durchsuchen und auszuwerten:

  • grep: Sucht nach Begriffen oder Mustern.

$ grep "error" /var/log/syslog
$ grep -i "failed" /var/log/auth.log

  • awk: Felder aus strukturierten Logeinträgen extrahieren.

$ awk '{print $1, $2, $5}' /var/log/syslog

  • sed: Textbereiche bearbeiten oder extrahieren.

$ sed -n '/Start/,/End/p' /var/log/syslog
$ sed 's/error/ERROR/g' /var/log/syslog

Durch die Kombination dieser Werkzeuge lassen sich effiziente Pipelines erstellen, um Logs zu analysieren und Probleme wie fehlgeschlagene Logins oder Servicefehler aufzuspüren.

rsyslog über /etc/rsyslog.conf konfigurieren

Das Verhalten von rsyslog wird hauptsächlich in der zentralen Konfigurationsdatei /etc/rsyslog.conf gesteuert. Diese Datei legt fest, wie eingehende Meldungen verarbeitet, gefiltert und weitergeleitet werden – abhängig von Quelle (Facility), Schweregrad (Severity) und Ziel (Action).

Grundformat einer Regel

Eine typische Regel in rsyslog.conf folgt diesem Aufbau:

FACILITY.LEVEL ACTION

  • FACILITY: Quelle der Logmeldung (z. B. auth, cron, daemon, kern, mail, user).
  • LEVEL: Schweregrad der Meldung (z. B. debug, info, notice, warning, err, crit, alert, emerg).
  • ACTION: Zielort des Logs (z. B. Datei, Remote-Server, Programm).

Häufige Konfigurationsbeispiele

Auth-Logs in separate Datei schreiben:

Kernel-Logs separat speichern:

Nur kritische Mail-Fehler protokollieren:

mail.crit    /var/log/mail_critical.log

Alle Meldungen außer Mail und Auth protokollieren:

*.info;mail.none;authpriv.none    /var/log/general.log

Nicht benötigte Logs verwerfen:

User-Meldungen an die Konsole senden:

Eigene Logging-Regeln hinzufügen

Mit rsyslog lassen sich individuelle Regeln anlegen, um gezielt Ereignisse einzelner Dienste oder Programme zu erfassen. So können Logs getrennt analysiert oder sicherheitskritische Vorgänge im Detail überwacht werden.

SSH-Aktivitäten protokollieren

Neue Konfigurationsdatei in /etc/rsyslog.d/ anlegen:

$ sudo nano /etc/rsyslog.d/10-ssh.conf

Folgende Regel hinzufügen:

authpriv.*    /var/log/ssh.log

rsyslog neu starten:

$ systemctl restart rsyslog.service

Logs für eigene Anwendungen sammeln

Neue Konfigurationsdatei erstellen:

$ sudo nano /etc/rsyslog.d/20-myapp.conf

Regel zur Erfassung hinzufügen:

if ($programname == 'myapp') then /var/log/myapp.log
& stop

Dienst neu starten:

$ systemctl restart rsyslog.service

Logs an einen Remote-Server weiterleiten

Die zentrale Sammlung von Logs erleichtert die Überwachung mehrerer Systeme. rsyslog kann Protokolle von einem Client an einen externen Server senden.

Client konfigurieren

Neue Konfigurationsdatei erstellen:

$ sudo nano /etc/rsyslog.d/60-remote.conf

Folgende Regel hinzufügen:

Hinweis: @ für UDP, @@ für TCP. IP-Adresse anpassen.

Server konfigurieren

Datei /etc/rsyslog.conf auf dem Server bearbeiten:

module(load="imtcp")
input(type="imtcp" port="514")

Optional Logs nach Hostname und Programmname speichern:

$template RemoteLogs,"/var/log/remote/%HOSTNAME%/%PROGRAMNAME%.log"
*.* ?RemoteLogs

rsyslog auf beiden Systemen neu starten:

$ sudo systemctl restart rsyslog

Konfiguration testen

Testmeldung senden:

$ logger -p local0.info "Test message from rsyslog"

Anschließend prüfen, ob die Meldung in der vorgesehenen Logdatei (z. B. /var/log/syslog oder benutzerdefinierter Pfad) erscheint.

Best Practices für den Einsatz von rsyslog

  • Separate Dateien für unterschiedliche Dienste oder Anwendungen nutzen.
  • Logdateien mit sicheren Berechtigungen schützen.
  • Logrotation aktivieren, um zu große Dateien zu vermeiden.
  • Zentrale Protokollierung für mehrere Systeme einsetzen.
  • Logs regelmäßig überwachen, um Probleme frühzeitig zu erkennen und zu beheben.

Fazit

In diesem Artikel haben Sie gelernt, wie rsyslog unter Linux konfiguriert wird. Dabei wurden die Struktur der /etc/rsyslog.conf-Datei erklärt, eigene Regeln für SSH und Anwendungen erstellt, Logs an einen Remote-Server weitergeleitet und die Einrichtung getestet. Durch die Beachtung bewährter Praktiken stellen Sie sicher, dass Ihre Protokollierung zuverlässig, organisiert und sicher bleibt und die Systemverwaltung erleichtert wird.

Quelle: vultr.com

Jetzt 200€ Guthaben sichern

Registrieren Sie sich jetzt in unserer ccloud³ und erhalten Sie 200€ Startguthaben für Ihr Projekt.

Das könnte Sie auch interessieren: