Rsyslog ist ein Open-Source-Protokollierungsprogramm, das das IP-Netzwerk verwendet, um alle Protokolldateien an einen zentralen Protokollserver zu senden. Es ist eine verbesserte Version von Syslog unter Linux. Es ermöglicht Systemadministratoren, alle Server von einem einzigen Standort aus zu überwachen.
Rsyslog arbeitet in einem Client/Server-Modell, das Protokolle von Remote-Clients auf Port 514 oder einem beliebigen konfigurierten benutzerdefinierten Port über das TCP/UDP-Protokoll empfängt. Es unterstützt auch Datenbanken (MySQL, PostgreSQL), die zum Speichern von Protokollen verwendet werden.
Hier bei LinuxAPT helfen wir unseren Kunden im Rahmen unserer Server Management Services regelmäßig dabei, entsprechende Rsyslog-Konfigurationsabfragen auf Linux-Systemen durchzuführen.
In diesem Zusammenhang werden wir untersuchen, wie Rsyslog unter Debian 10 / 11 installiert und konfiguriert wird.
Schritte zum Installieren und Konfigurieren von Rsyslog Server auf einem Debian-Linux-System
1. Rsyslog-Server installieren
Installieren Sie zunächst das Rsyslog-Paket aus dem Debian-Repository auf Ihrem Servercomputer. Führen Sie den folgenden Befehl aus:
$ sudo apt-get install rsyslog -y
Überprüfen Sie nach Abschluss der Installation, ob Rsyslog ordnungsgemäß ausgeführt wird, wie unten angezeigt:
$ sudo systemctl status rsyslog
Wenn alles in Ordnung ist, ist der Rsyslog-Dienst jetzt auf Ihrem Server-Rechner betriebsbereit.
2. Rsyslog-Server konfigurieren
Jetzt, da es läuft, konfigurieren Sie Rsyslog so, dass es als Server auf Ihrem Debian-System läuft. Öffnen Sie die Konfigurationsdatei /etc/rsyslog.conf:
$ sudo vim /etc/rsyslog.conf
Suchen Sie die folgenden Zeilen und kommentieren Sie sie für den Empfang von UDP- und TCP-Protokollen von Remote-Clients aus:
# provides UDP syslog reception
module(load="imudp")
input(type="imudp" port="514")
# provides TCP syslog reception
module(load="imtcp")
input(type="imtcp" port="514")
Als Nächstes müssen wir die Vorlage angeben, die der Rsyslog-Daemon verwendet, um eingehende Protokolle von Client-Systemen zu speichern. Hängen Sie die folgenden Zeilen am Ende Ihrer Konfigurationsdatei an:
$template remote-incoming-logs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log"
*.* ?remote-incoming-logs
Starten Sie dann rsyslog neu, damit die Änderungen wirksam werden:
$ sudo systemctl restart rsyslog
Rsyslog überwacht Port 514. Sie können den Standardport in der Konfigurationsdatei ändern. Um zu überprüfen, ob der rsyslog-Daemon auf Port 514 lauscht, führen Sie den folgenden ss-Befehl aus:
$ sudo ss -tunlp | grep 514
3. Firewall für rsyslog konfigurieren
Der rsyslog-Daemon ist jetzt auf dem Server konfiguriert. Wenn Sie sich hinter der UFW-Firewall befinden, lassen Sie Port 514 zu, damit der Server Protokollnachrichten von Clients empfangen kann. Führen Sie die Befehle aus:
$ sudo ufw allow 514/tcp
$ sudo ufw allow 514/udp
Starten Sie die Firewall neu, damit die neuen Regeln angewendet werden. Führen Sie den Befehl aus:
$ sudo ufw reload
4. Rsyslog-Client konfigurieren
Konfigurieren Sie als Nächstes den Rsyslog-Client so, dass Protokollmeldungen an den Rsyslog-Server gesendet werden. Stellen Sie sicher, dass RSyslog korrekt auf Ihrem Client-Rechner installiert ist.
Öffnen Sie zuerst die Konfigurationsdatei:
$ sudo nano /etc/rsyslog.conf
Kopieren Sie die folgenden Zeilen und fügen Sie sie am Ende der Datei ein:
#Enable sending system logs over UDP to rsyslog server
*.* @rsyslog-server-ip:514
#Enable sending system logs over TCP to rsyslog server
*.* @@rsyslog-server-ip:514
Die obige Konfiguration weist den Client an, Protokolldateien mit TCP- und UDP-Protokollen an den rsyslog-Server zu senden. Ersetzen Sie rsyslog-server-ip durch Ihre Server-IP-Adresse.
Wenn der Remote-Server ausfällt und Sie Ihre Protokolle behalten müssen, können Sie den Festplatten-Warteschlangenpuffer festlegen, indem Sie die folgenden Zeilen zur Client-Konfigurationsdatei hinzufügen:
##Set disk queue when rsyslog server will be down:
$ActionQueueFileName queue
$ActionQueueMaxDiskSpace 1g
$ActionQueueSaveOnShutdown on
$ActionQueueType LinkedList
$ActionResumeRetryCount -1
Speichern und schließen Sie die Datei. Laden Sie den rsyslog-Dienst neu, damit die Änderungen angewendet werden:
$ sudo systemctl restart rsyslog
5. Client-Protokolldateien anzeigen
Rsyslog-Protokolldateien werden im Ordner /var/log/ auf Ihrem Server gespeichert. Um die Protokolle des Clients anzuzeigen, verwenden Sie den folgenden ls-Befehl:
$ ls /var/log/
Standardmäßig werden die Protokolldateien des Clients in einem Ordner gespeichert, der nach dem Hostnamen des Clientsystems benannt ist. In meinem Fall hat das Client-System den Hostnamen Debian.
Führen Sie als Nächstes den folgenden Befehl aus, um die im Verzeichnis des Clients enthaltenen Protokolle anzuzeigen:
$ sudo ls -l /var/log/debian/
Sie können Protokolle auch in Echtzeit auf Ihrem Terminal anzeigen. Lassen Sie uns die Protokolle des Root-Benutzers anzeigen. Führen Sie den folgenden Befehl aus:
$ sudo tail -f /var/log/debian/sudo.log