Rsyslog ist ein Open-Source-Dienstprogramm für die Protokollverarbeitung. Es ermöglicht die Protokollierung von Daten unterschiedlicher Systemtypen in einem zentralen Repository. Rsyslog ist ein Syslog-Protokoll mit mehr Erweiterungen, Funktionen und Vorteilen.
Was macht rsyslog so leistungsfähig? Rsyslog kann über eine Million Nachrichten pro Sekunde an lokale Ziele liefern, wenn eine begrenzte Verarbeitung angewendet wird.
In diesem Tutorial lernen wir, wie man rsyslog installiert und konfiguriert auf Ubuntu 20.04 .
Rsyslog-Funktionen
Rsyslog kam 2004 auf den Markt und erweitert das Syslog-Protokoll um neue Funktionen:
- Unterstützung des RELP-Protokolls
- Unterstützung für gepufferten Betrieb
- Abhören von TCP/UDP-Verbindungen (mit Beschränkungen für Ports, IPs)
- Unterstützung für das Laden vieler Module (z. B. Modul zur Unterstützung des RELP-Protokolls)
- Unterstützung für Verwerfungsnachrichten, die speziell konfigurierte Regeln enthalten
In Rsyslog bleiben die Konfigurationsdateien dieselben wie in Syslog. Das bedeutet einfach, dass Sie eine syslog.conf-Datei direkt in rsyslog.conf kopieren können und es funktioniert.
Was sind Protokolle und Syslog?
Bevor wir zum Konfigurationsprozess selbst gehen, sehen wir uns zuerst an, wofür Protokolle verwendet werden. Die Protokollinformationen können Ihnen wirklich helfen zu sehen, was genau auf Ihrem System passiert ist oder was genau unter der Haube vor sich geht.
Lassen Sie mich Ihnen ein Beispiel geben:wenn Ihr PC plötzlich eingefroren ist oder vielleicht abgestürzt ist oder sogar Ausfallzeiten Ihres Systems und viele weitere nützliche Informationen, die Sie nicht auf die übliche Weise sehen können, wenn Fehlermeldungen angezeigt werden.
Wenn Sie wissen, wie Protokolle richtig verwendet werden, können sie Ihnen viele Funktionen und Vorteile für Diagnoseinformationen über das System selbst bieten.
Standardmäßig verwendet Linux den Syslog-Daemon, um Protokolle darüber aufzuzeichnen, wie das System läuft, und diese Protokolle dann in einem zentralen Repository unter /var/log abzulegen wo wir sie untersuchen und untersuchen können.
Einfach ausgedrückt wird alles, von Kernel-Ereignissen bis hin zu Benutzeraktionen, von Linux protokolliert, sodass Sie fast jede Aktion sehen können, die auf Ihrem PC oder Ihren Servern ausgeführt wird.
Im Linux-Dateisystem gibt es ein spezielles Verzeichnis zum Speichern von Protokollen namens /var/log . Dieses Verzeichnis enthält alle Protokolle des Betriebssystems selbst wie:Dienste oder verschiedene Anwendungen, die auf dem System ausgeführt werden.
Mal sehen, wie Verzeichnisse und Protokollstrukturen auf frischem Linux Ubuntu 20.04 aussehen.
Verzeichnis, in dem verschiedene Arten von Protokollen gespeichert sind:
/var/log/syslog - Speichert alle Startmeldungen, Anwendungsstartmeldungen usw. Speichert praktisch alle globalen Systemprotokolle.
/var/log/cron - Die Cron-Jobs sind im Grunde eine Art geplante und automatisierte Aufgabe, die im System erstellt wird und regelmäßig und wiederholt ausgeführt wird. Sie können sehen, was dieses Protokollverzeichnis speichern würde.
/var/log/kern.log - speichert Kernel-Protokolle. Egal um welche Protokolle es sich handelt. Ereignisprotokolle, Fehler oder Warnprotokolle.
/var/log/auth.log - Authentifizierungsprotokolle
/var/log.boot.log - Systemstartprotokolle
/var/log/mysql.d - MySQL-Protokolle
/var/log/httpd - Apache-Protokollverzeichnis
/var/log/maillog - Mailserverprotokolle
Rsyslog Centralized Log Server auf Ubuntu 20.04 einrichten
Nach einem kurzen Überblick, was Protokolle, Syslog sind und wo rsyslog seinen Platz hat, gehen wir zum Konfigurationsprozess selbst über.
Voraussetzungen
- Zwei Server mit Ubuntu 20.04
- Eine statische IP-Adresse:Beispiel:192.168.0.101 muss auf dem Rsyslog-Servercomputer konfiguriert werden und 192.168.0.102 wird auf dem Rsyslog-Clientcomputer konfiguriert
Auf dem Ubuntu 20.04-System ist rsyslog standardmäßig installiert die mit Standardsystempaketen geliefert wurden.
Sie können überprüfen, ob es ausgeführt wird:
$ sudo systemctl status rsyslog
● rsyslog.service - System Logging Service
Loaded: loaded (/lib/systemd/system/rsyslog.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2021-03-22 21:16:34 UTC; 12h ago
TriggeredBy: ● syslog.socket
Docs: man:rsyslogd(8)
https://www.rsyslog.com/doc/
Main PID: 566 (rsyslogd)
Tasks: 4 (limit: 2281)
Memory: 2.7M
CGroup: /system.slice/rsyslog.service
└─566 /usr/sbin/rsyslogd -n -iNONE
Führen Sie den folgenden Befehl aus, um die derzeit installierte Rsyslog-Version zu überprüfen:
$ rsyslogd -v
Ausgabe:
rsyslogd 8.2001.0 (aka 2020.01) compiled with: PLATFORM: x86_64-pc-linux-gnu PLATFORM (lsb_release -d): FEATURE_REGEXP: Yes GSSAPI Kerberos 5 support: Yes FEATURE_DEBUG (debug build, slow code): No 32bit Atomic operations supported: Yes 64bit Atomic operations supported: Yes memory allocator: system default Runtime Instrumentation (slow code): No uuid support: Yes systemd support: Yes Config file: /etc/rsyslog.conf PID file: /run/rsyslogd.pid Number of Bits in RainerScript integers: 64
Falls nicht installiert oder ausgeführt, installieren Sie rsyslog mit den folgenden Befehlen:
$ sudo apt-get update
$ sudo apt-get install rsyslog
Jetzt ist es an der Zeit, zu rsyslog.conf zu gehen Datei, um einige Zeilen zu entkommentieren und zu ändern, um den rsyslog-Dienst im Servermodus auszuführen:
$ sudo nano /etc/rsyslog.conf
Entkommentieren Sie diese vier Zeilen, die die udp- und tcp-Portbindung aktivieren:
# provides UDP syslog reception
module(load="imudp")
input(type="imudp" port="514")
# provides TCP syslog reception
module(load="imtcp")
input(type="imtcp" port="514")
Der nächste Schritt, den wir hinzufügen müssen, ist das Erstellen einer neuen Vorlage. Wir müssen eine neue Vorlage zum Empfangen von Remote-Nachrichten erstellen. Eine Vorlage gibt dem rsyslog-Server Anweisungen zum Speichern eingehender syslog-Nachrichten.
HINWEIS: Vorlage direkt vor GLOBAL DIRECTIVES hinzufügen Abschnitt:
$template remote-incoming-logs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log"
*.* ?remote-incoming-logs
& ~
Die obige Zeile zeigt an, dass empfangene Protokolle verarbeitet und im Verzeichnis /var/log/ gespeichert werden. Sie können in der Datei /etc/rsyslog.conf definieren, wo rsyslog-Protokolle abgelegt werden sollen.
Der Dateiname enthält die Variablen %HOSTNAME% und %PROGRAMNAME%, die für den Namen des Clientcomputers und des Clientprogramms stehen, das die Protokollnachricht erzeugt hat.
Speichern Sie dies und starten Sie den rsyslog-Dienst neu:
$ sudo systemctl restart rsyslog
Bestätigen Sie, dass der rsyslog-Dienst die konfigurierten Ports abhört:
$ ss -tunelp | grep 514
udp UNCONN 0 0 0.0.0.0:514 0.0.0.0:* ino:33591 sk:1 <->
udp UNCONN 0 0 [::]:514 [::]:* ino:33592 sk:4 v6only:1 <->
tcp LISTEN 0 25 0.0.0.0:514 0.0.0.0:* ino:33595 sk:7 <->
tcp LISTEN 0 25 [::]:514 [::]:* ino:33596 sk:9 v6only:1 <->
Wenn Sie vielleicht einen ufw-Firewall-Dienst haben, müssen Sie rsyslog-Firewall-Portregeln zulassen:
sudo ufw allow 514/tcp
sudo ufw allow 514/udp
Zum Verifizieren der Konfiguration , führen Sie den folgenden Befehl aus:
sudo rsyslogd -N1 -f /etc/rsyslog.conf
Rsyslog auf dem Client konfigurieren
Sobald diese Konfiguration des rsyslog-Servers abgeschlossen ist, besteht der nächste Schritt darin, Ihren rsyslog-Client-Rechner so zu konfigurieren, dass er Protokolle an die Remote sendet rsyslog-Server.
Während wir mit der Datei rsyslog.conf auf einem Remote-Server arbeiten, wird dieser diese Datei auf der Client-Seite mit Ihrem bevorzugten Editor öffnen und einige Änderungen bearbeiten:
sudo nano /etc/rsyslog.conf
Und Beibehaltung des FQDN zulassen:Um rsyslog alternativ mit dem vollständig qualifizierten Domänennamen (FQDN, wie z. B. system1.example.com) statt einfach dem Hostnamen (system1) senden zu lassen, verwenden Sie die Anweisung:
$PreserveFQDN on
Fügen Sie am Ende den konfigurierten Remote-rsyslog-Server hinzu.
@192.168.0.101:514
Oder Sie können das Senden von Protokollen über UDP aktivieren. Verwenden Sie für TCP @@ anstelle von einem
*.* @@192.168.0.101:514
Fügen Sie am Ende die folgenden Variablen hinzu, falls der rsyslog-Server ausfällt:
$ActionQueueFileName queue
$ActionQueueMaxDiskSpace 1g
$ActionQueueSaveOnShutdown on
$ActionQueueType LinkedList
$ActionResumeRetryCount -1
Starten Sie dann den rsyslog-Dienst neu:
sudo systemctl restart rsyslog
Überprüfen Sie die Protokolle
Nachdem die Konfiguration auf dem Client-Rechner abgeschlossen ist, möchten wir überprüfen, ob alles gut gelaufen ist.
Gehen Sie zu Ihrem Rsyslog-Server, um die Protokolle von Ihrem Client-Rechner zu überprüfen:
$ ls /var/log/
Sie werden so etwas finden:
In meinem Fall ist das Verzeichnis namens obrad der Name meines Client-Rechners, den ich derzeit verwende. Wir betreten dieses Verzeichnis und sehen etwa Folgendes:
Sie sollten alle von Rsyslog generierten Protokolldateien sehen.
Sie können jedes dieser Protokolle mit dem folgenden Befehl überprüfen:Lassen Sie uns zum Beispiel systemd.log inspizieren .
$ tail -f /var/log/obrad/systemd.log
Und Sie werden so etwas sehen:
2021-03-25T11:31:59+00:00 obrad systemd[1206]: Started VTE child process 42166 launched by gnome-terminal-server process 3186.
2021-03-25T11:32:28+00:00 obrad systemd[1206]: Created slice dbus\x2d:1.2\x2dorg.gnome.gedit.slice.
2021-03-25T11:32:28+00:00 obrad systemd[1206]: Started dbus-:[email protected].
2021-03-25T11:32:31+00:00 obrad systemd[1206]: dbus-:[email protected]: Succeeded.
Wie Sie sehen können, habe ich Terminal und Gedit-Textbearbeitung auf meinem Client-Rechner gestartet und Rsyslog generiert und dies in der Ausgabe angezeigt.
Schlussfolgerung
In diesem Tutorial haben wir gelernt, wie die grundlegenden Parameter für rsyslog mithilfe des Client-Server-Modells unter Ubuntu 20.04 konfiguriert werden. Die anderen Alternativen für Rsyslog sind syslog-ng, FluentD, Logstash, GreyLog2 und Logagent, Filebeat.