DIgilife - stock.adobe.com
So verwalten Sie Speicher mit rsyslog und Log Forwarding
Folgen Sie dieser Schritt-für-Schritt-Anleitung, um einen automatisierten Prozess zur Zentralisierung von Protokollen mit den Funktionen von rsyslog zu planen und zu implementieren.
Log-Dateien (Protokolldateien) sind ein wichtiger Bestandteil der Arbeit eines jeden Linux-Administrators. Sie ermöglichen es Systemadministratoren, fehlerhafte Hardware, falsch konfigurierte Dienste und andere Anzeichen für Probleme zu erkennen.
Die heutigen Netzwerkumgebungen sind stärker verteilt als je zuvor, daher ist es unerlässlich, eine effiziente Methode zur Speicherung und Analyse von Log-Dateien zu finden. Der Zugriff auf Log-Dateien für Compliance-Anforderungen und Service Level Agreements (SLA) ist ebenfalls von entscheidender Bedeutung.
Der rsyslog-Dienst erleichtert diese Aufgaben, indem er die zentrale Speicherung, Sortierung und Aufbewahrung wichtiger Betriebssystem- und Anwendungsprotokolldateien ermöglicht. Er benötigt nur wenige Ressourcen und ist relativ einfach zu konfigurieren, was ihn zu einer hervorragenden Option für die Verwaltung von Remote-Server-Protokolldateien macht, ohne dabei die Speicherkosten aus den Augen zu verlieren.
Dieser Artikel beschreibt ein Beispielszenario, das aus einem Server im Hauptsitz des Unternehmens als Protokollspeicher (Log File Repository) und mehreren Remote-Servern besteht, die Protokoll-Dateien an diesen Server weiterleiten. Wir erklären Konfigurationsoptionen und Befehle, sodass Sie die Tipps leicht an Ihre eigene Umgebung anpassen können.
Passen Sie das folgende Beispielszenario an Ihre eigene Umgebung an:
- Ein zentraler Protokollspeicherserver unter Linux am Hauptsitz.
- Remote-Server in Zweigstellen, die einige oder alle Protokolldateien an den Server am Hauptsitz weiterleiten. In diesem Szenario heißt der Beispiel-Remote-Server remote_server1.
Allgemeine Anforderungen von rsyslog
Wählen Sie die Hardwarekomponenten Ihres zentralen Protokollspeicherservers sorgfältig aus. Obwohl rsyslog selbst ein leichtgewichtiger Dienst ist, kann er dennoch das Netzwerk und die Speichersubsysteme belasten, wenn viele Remote-Server gleichzeitig darauf schreiben.
Beginnen Sie mit folgenden Mindesthardwareanforderungen:
Der Speicher ist das wichtigste zu berücksichtigende Subsystem. NVMe-SSDs sind aufgrund ihrer Geschwindigkeit und Zuverlässigkeit eine gute Standardwahl.
Auch die Festplattenkonfigurationen sind auf diesem Server von entscheidender Bedeutung. Beginnen Sie damit, das Linux-Verzeichnis /var/log auf einer vom Betriebssystem getrennten Partition zu platzieren. Durch die Trennung der beiden auf unterschiedliche physische Speichergeräte wird die I/O-Konkurrenz reduziert. Aktivieren Sie schließlich die Festplattenverschlüsselung, um die Sicherheit und Vertraulichkeit der Log-Dateieinträge zu gewährleisten. Diese Verschlüsselung ist möglicherweise erforderlich, um Compliance-Anforderungen zu erfüllen.
Einige Unternehmen könnten für diese Aufgabe problemlos einen Raspberry Pi oder einen ähnlichen Einplatinencomputer mit angeschlossenem Hochgeschwindigkeitsspeicher verwenden.
Evaluieren Sie den zentralen rsyslog-Server
Die meisten Linux-Distributionen der Enterprise-Klasse enthalten standardmäßig rsyslog. Verwenden Sie den bevorzugten Paketmanager Ihrer Distribution, um rsyslog zu installieren oder zu aktualisieren, bevor Sie dessen Konfigurationsdatei ändern.
In diesem Beispielszenario verwenden Sie einen zentralisierten Server am Hauptstandort der Firma. Die Zweigstellen leiten ihre Protokolle an diesen Server weiter, und der Großteil Ihrer Konfiguration erfolgt auf diesem Gerät.
Geben Sie unter Red Hat Enterprise Linux, Rocky, AlmaLinux und ähnlichen Distributionen einen der folgenden Befehle ein:
dnf install rsyslog
dnf update rsyslog
Geben Sie unter Debian, Ubuntu Server oder ähnlichen Distributionen einen der folgenden Befehle ein:
apt install rsyslog
apt update rsyslog
Starten Sie den Dienst und aktivieren Sie ihn mit den folgenden Befehlen, damit er beim Systemstart ausgeführt wird:
systemctl start rsyslog
systemctl enable rsyslog
Konfigurieren Sie den zentralen rsyslog-Server
Konfigurieren Sie den zentralen Server so, dass er eingehende Protokolldateien von den Remote-Servern empfängt. Beginnen Sie mit der Sicherung der Standardkonfigurationsdatei:
cp /etc/rsyslog.conf /etc/rsyslog.conf.orig
Öffnen Sie anschließend die Datei /etc/rsyslog.conf mit einem Texteditor wie Vim oder Nano.
vim /etc/rsyslog.conf
Legen Sie fest, ob die Protokollübertragungen über TCP oder UDP erfolgen sollen. UDP ist oft akzeptabel, aber TCP bietet zusätzliche Fehlerbehandlung und Zuverlässigkeit. Außerdem kann es Netzwerküberlastungen besser bewältigen, was in Szenarien mit hohem Datenverkehr wichtig sein kann.
Entfernen Sie die Auskommentierung oder fügen Sie die folgenden Zeilen in die Datei /etc/rsyslog.conf ein:
module(load="imtcp")
input(type="imtcp" port="514")
Diese Zeilen geben TCP unter Verwendung des Standard-rsyslog-Ports 514 an. Sie können jedoch benutzerdefinierte Portnummern für jeden Remote-Server konfigurieren, um eingehende Daten besser zu organisieren. Wenn Sie beispielsweise den Port 10514 dem remote_Server1 zuweisen, können Sie den zentralen Server so konfigurieren, dass er Daten von diesem Gerät anhand dieser Portnummer erkennt. Ändern Sie den Eintrag wie folgt:
input (type="imtcp" port="10514")
Sie müssen mit ziemlicher Sicherheit für jeden der externen Server einen separaten Speicherort für Log-Dateien einrichten. Verwenden Sie dazu rsyslog-Regeln. In diesem Beispiel werden die Logs nach dem Namen des externen Servers remote_server1 getrennt, in diesem Fall:
ruleset(name="remote_server1") {
action(type="omfile"
file="/var/log/remote/server1/%HOSTNAME%/%PROGRAMNAME%.log")
}
input(type="imtcp" port="10514" ruleset="remote_server1")
Wiederholen Sie diesen Eintrag und ändern Sie den Namen des Servers entsprechend Ihrer Umgebung. Sie können die Regelsätze auch anpassen, um dienstspezifische Protokolle an bestimmte Dateien weiterzuleiten.
Sie müssen außerdem die Firewall des zentralen Servers so konfigurieren, dass sie eingehende Netzwerkverbindungen über den TCP-Port 514 akzeptiert. Verwenden Sie die folgenden Befehle, wenn Ihr Server Firewalls unterstützt:
firewall-cmd --permanent --zone=public --add-port=514/tcp
firewall-cmd --reload
Passen Sie diese Befehle an Ihre gewünschten Zonen- und Portanforderungen an. Achten Sie darauf, die benutzerdefinierten Portnummern hinzuzufügen, die Sie möglicherweise für jeden Remote-Server ausgewählt haben. Beachten Sie, dass der Port ebenfalls in der Firewall geöffnet sein muss, wenn er verwendet wird.
Implementieren Sie abschließend ein Verwaltungs-Tool wie logrotate, um die Protokolle auf dem zentralen Server zu archivieren. Die Archivierung ist für eine effektive Verwaltung der Protokollspeicherung von entscheidender Bedeutung.
Konfigurieren Sie die rsyslog-Clients in den Zweigstellen
Die Einrichtung ist auf den externen Servern in den Zweigstellen wesentlich einfacher. Installieren Sie bei Bedarf rsyslog auf jedem Gerät. Bearbeiten Sie die Konfigurationsdatei /etc/rsyslog.conf, um entweder alle Protokolle oder ausgewählte Protokolldateien weiterzuleiten.
Um alle Protokolle über TCP weiterzuleiten, fügen Sie die folgende Zeile zum Abschnitt Rules der Konfigurationsdatei hinzu:
*.* @@central_server:514
Wenn Sie den zentralen Server für UDP-Verbindungen konfiguriert haben, verwenden Sie stattdessen ein einzelnes @-Zeichen. Wenn Sie benutzerdefinierte Portnummern zur Identifizierung von Servern verwenden, legen Sie diese anstelle der Standardnummer 514 fest.
Verwenden Sie die folgenden Einstellungen, um Protokolle für bestimmte Dienste, wie zum Beispiel FTP-Protokolleinträge, weiterzuleiten:
ftp.* @@central_server:514
Starten Sie den rsyslog-Dienst nach dem Bearbeiten der Konfigurationsdatei mit dem folgenden Befehl neu:
systemctl restart rsyslog
Sie können auch die Schweregrade ändern, die rsyslog in die Protokolldateien schreibt. Hier sind die möglichen Schweregrade:
emerg = 0
alert = 1
crit = 2
error = 3
warn = 4
notice = 5
info = 6
debug = 7
Überprüfen Sie Ihre Konfiguration jedes Mal, wenn Sie Änderungen an diesen Servern vornehmen. Bestimmte Dienste fügen rsyslog Log-Dateikonfigurationen hinzu. Der allgegenwärtige Apache-Webserver beispielsweise stützt sich auf rsyslog und kann seine Log-Dateien mit dieser Konfiguration weiterleiten.
Manchmal kann es hilfreich sein, zusätzlich zu den Servereinträgen auch die Logs der Linux-Workstations zu zentralisieren. Diese verwenden eine ähnliche Konfiguration. Beachten Sie, dass macOS rsyslog unterstützt, sodass Sie auch diese Systeme in Ihre Protokollierungsarchitektur integrieren können. Da viele Netzwerkgeräte auf Linux basieren, sollten Sie in Betracht ziehen, sie in dieses Design aufzunehmen.
Testen Sie die Konfiguration
Verwenden Sie den Befehl logger, um Testmeldungen von jedem Remote-Server zu generieren. Vergewissern Sie sich, dass die Meldungen auf dem zentralen Server angekommen sind. Überprüfen Sie die Einträge in der Konfigurationsdatei und die Firewall-Einstellungen, wenn Probleme auftreten.
Bewährte Verfahren
Das Tools rsyslog bietet einen zuverlässigen Mechanismus. Nutzen Sie die folgenden bewährten Verfahren, um das Beste aus ihm herauszuholen:
- Verwenden Sie schnelle und zuverlässige Speichergeräte.
Erwägen Sie, aktuelle Protokolle auf einem Hot Storage zu speichern.
Erwägen Sie, archivierte Protokolle auf einem Cold Storage zu speichern.
- Trennen Sie Server-Protokolldateien in bestimmte Verzeichnisse.
- Verwenden Sie das TCP-Protokoll für höchste Zuverlässigkeit.
- Sichern Sie Ihre Protokolldateien mit Linux-Berechtigungen, SELinux und Festplattenverschlüsselung.
- Rotieren und archivieren Sie Ihre Protokolldateien mit Tools wie logrotate.
Stellen Sie sicher, dass Ihre Protokolldateien den Service Level Agreements und Compliance-Anforderungen entsprechen. Am wichtigsten ist es, Ihre Protokolle zu lesen. Wenn Sie Automatisierung oder einen manuellen Überprüfungsprozess verwenden, überprüfen Sie Ihre Protokolldateien auf Anomalien, verdächtige Aktivitäten und Fehlkonfigurationen. Überprüfen Sie die rsyslog-Konfiguration regelmäßig, um sicherzustellen, dass Sie die benötigten Informationen aus Diensten, Anwendungen und dem Betriebssystem protokollieren.