So richten Sie den zentralen Protokollierungsserver mit Rsyslog unter Ubuntu 20.04 ein

Rsyslog ist ein Open-Source-Dienstprogramm für die Protokollverarbeitung. Es ermöglicht die Protokollierung von Daten unterschiedlicher Arten von Systemen in einem zentralen Repository. Rsyslog ist ein Syslog-Protokoll mit mehr Erweiterungen, Funktionen und Vorteilen.

Was macht rsyslog so mächtig? Rsyslog kann bei eingeschränkter Verarbeitung über eine Million Nachrichten pro Sekunde an lokale Ziele übermitteln.

In diesem Tutorial lernen wir, wie man installiert und konfiguriert rsyslog an Ubuntu 20.04.

Rsyslog-Funktionen

Rsyslog kam im Jahr 2004. 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 Einschränkungen Port, IPs)
  • Unterstützung für das Laden vieler Module (für example Modul zur Unterstützung des RELP-Protokolls)
  • Unterstützung für Nachricht verwerfen, die speziell konfigurierte Regeln enthält

In Rsyslog bleiben die Konfigurationsdateien dieselben wie bei Syslog. Das bedeutet einfach, dass Sie eine syslog.conf-Datei direkt in rsyslog.conf kopieren können und es funktioniert.

Was sind Logs 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.

Lass mich dir eine geben example: wenn Ihr PC plötzlich kraus oder vielleicht abgestürzt ist oder sogar Ausfallzeiten Ihres Systems und viele weitere nützliche Informationen, die Sie nicht in der üblichen Weise sehen können, wenn Fehlermeldungen angezeigt werden.

Wenn Sie wissen, wie Sie Protokolle richtig verwenden, 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 legt diese Protokolle dann in einem zentralen Repository ab: /var/log 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 Server 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.

Sehen wir uns an, wie Verzeichnisse und Strukturen von Protokollen auf dem neuen Linux-ubuntu 20.04 aussehen.

Liste / var / log

Verzeichnis, in dem verschiedene Arten von Protokollen gespeichert sind:

/var / log / syslog – Speichert alle Startnachrichten, Anwendungsstartnachrichten 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-Logs. Egal um welche Logs 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 – Mailserver-Logs

Einrichten des zentralisierten Rsyslog-Protokollservers unter Ubuntu 20.04

Nach einem kurzen Überblick, was Logs, Syslog und wo rsyslog seinen Platz hat, kommen wir zum eigentlichen Konfigurationsprozess.

Voraussetzungen

  • Zwei Server mit Ubuntu 20.04
  • Eine statische IP-Adresse: example 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 installiert standardmäßig die mit Standard-Systempaketen geliefert wurde.

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) kompiliert mit: PLATFORM: x86_64-pc-linux-gnu PLATFORM (lsb_release -d): FEATURE_REGEXP: Ja GSSAPI Kerberos 5-Unterstützung: Ja FEATURE_DEBUG (Debug-Build, langsamer Code): Nein 32bit Atomic Operations unterstützt : Ja Unterstützte 64-Bit-Atomoperationen: Ja Speicherzuordnung: Systemstandard Laufzeitinstrumentierung (langsamer Code): Nein uuid-Unterstützung: Ja systemd-Unterstützung: Ja Konfigurationsdatei: /etc/rsyslog.conf PID-Datei: /run/rsyslogd.pid Anzahl der Bits in RainerScript-Ganzzahlen: 64

Falls es nicht installiert ist oder ausgeführt wird, installieren Sie rsyslog mit den folgenden Befehlen:

$ sudo apt-get-Update
$ sudo apt-get install rsyslog

Jetzt ist es Zeit zu gehen rsyslog.conf Datei, um Kommentare zu entfernen und einige Zeilen 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, besteht darin, eine neue Vorlage zu erstellen. Wir müssen eine neue Vorlage für den Empfang von Remote-Nachrichten erstellen. Eine Vorlage gibt dem rsyslog-Server Anweisungen, wie eingehende Syslog-Nachrichten gespeichert werden.

HINWEIS: Vorlage direkt vorher hinzufügen GLOBALE RICHTLINIEN Sektion:

$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 erstellt werden sollen.

Der Dateiname enthält die Variablen %HOSTNAME% und %PROGRAMNAME% stehen für den Client-Rechner und den Client-Programmnamen, der die Protokollnachricht erzeugt hat.

Konfigurationsdatei für Rsyslog Konfigurationsdatei für Rsyslog

Save dies und dann den rsyslog-Dienst neu starten:

$ sudo systemctl restart rsyslog

Bestätigen Sie, dass der rsyslog-Dienst konfigurierte Ports überwacht:

$ 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 möglicherweise einen ufw-Firewalldienst haben, müssen Sie die Portregeln für die rsyslog-Firewall zulassen:

sudo ufw allow 514/tcp
sudo ufw allow 514/udp

Zu Konfiguration überprüfen, 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 Fernbedienung senden rsyslog-Server.

Wenn wir mit der Datei rsyslog.conf auf einem Remote-Server arbeiten, wird diese Datei auf der Client-Seite mit Ihrem bevorzugten Editor geöffnet und einige Änderungen bearbeitet:

sudo nano /etc/rsyslog.conf

Und die Beibehaltung des FQDN zulassen: Alternativ können Sie rsyslog mit dem vollqualifizierten Domänennamen (FQDN wie system1.example.com) statt einfach den Hostnamen (system1) verwenden Sie die Direktive:

$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 eins

*.* @@192.168.0.101:514

Fügen Sie zum Schluss 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 finden so etwas:

Auflistung von var/log-Dateien und VerzeichnissenListe / var / log

In meinem Fallverzeichnis mit dem Namen obrad ist der Name meines Client-Rechners, den ich derzeit verwende. Wir geben dieses Verzeichnis ein und sehen in etwa so:

Liste der var/log/hostname-DateienListe var/log/hostname

Sie sollten alle von Rsyslog generierten Protokolldateien sehen.

Sie können jedes dieser Protokolle mit dem folgenden Befehl überprüfen: Let’s for example prüfen systemd.log.

$ 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 dbusx2d:1.2x2dorg.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 Text Edit auf meinem Client-Rechner gestartet und Rsyslog generiert und in der Ausgabe angezeigt.

Fazit

In diesem Tutorial haben wir gelernt, wie man die grundlegenden Parameter für rsyslog mit dem Client-Server-Modell unter Ubuntu 20.04 konfiguriert. Die anderen Alternativen für Rsyslog sind syslog-ng, FluentD, Logstash, GreyLog2 und Logagent, Filebeat.