GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

Konfigurieren der Remoteprotokollierung mit rsyslog in CentOS/RHEL

Remote-Protokollierung

Die Standardkonfiguration der Systemprotokollverwaltung rotiert Protokolldateien jede Woche und bewahrt sie für vier Rotationen auf. Es ist oft wünschenswert, Protokolle länger als den vierwöchigen Standard zu führen, insbesondere wenn Systemleistungstrends im Zusammenhang mit Aufgaben ermittelt werden, wie z. B. Finanzabschlüsse am Monatsende, die nur einmal im Monat ausgeführt werden. Durch das Senden von Protokollnachrichten an einen entfernten Protokollhost mit dediziertem Massenspeicher können Administratoren große Archive von Systemprotokollen für ihre Systeme verwalten, ohne die Standardkonfiguration für die Protokollrotation zu ändern, die verhindern soll, dass Protokolle übermäßig viel Speicherplatz beanspruchen.

Die zentrale Sammlung von Systemprotokollmeldungen kann auch sehr nützlich sein, um den Zustand von Systemen zu überwachen und Probleme schnell zu identifizieren. Es bietet auch einen Sicherungsspeicherort für Protokollmeldungen, falls ein System einen katastrophalen Festplattenausfall oder andere Probleme erleidet, die dazu führen, dass die lokalen Protokolle nicht mehr verfügbar sind. In diesen Situationen kann die Kopie der Protokollmeldungen, die sich auf dem zentralen Protokollhost befinden, verwendet werden, um bei der Diagnose des Problems zu helfen, das das Problem verursacht hat.

Standardisierte Systemprotokollierung wird in Red Hat Enterprise Linux 7 durch rsyslog implementiert Service. Systemprogramme können Syslog-Meldungen an den lokalen rsyslogd senden -Dienst, der diese Nachrichten dann in Dateien in /var/log umleitet , entfernte Protokollserver oder andere Datenbanken basierend auf den Einstellungen in ihrer Konfigurationsdatei /etc/rsyslog.conf .

Protokollmeldungen haben zwei Merkmale, anhand derer sie kategorisiert werden. Die Einrichtung einer Protokollnachricht gibt an, um welche Art von Nachricht es sich handelt. Die Priorität hingegen gibt die Wichtigkeit des in der Nachricht protokollierten Ereignisses an.

Syslog-Prioritätsstufen

Priorität Bedeutung
auftauchen System ist unbrauchbar
Warnung Sofortiges Handeln erforderlich
kritisch Kritischer Zustand
irr Fehlerbedingung
Warnung Warnbedingung
Hinweis Normaler, aber signifikanter Zustand
Informationen Informationsmeldungen
debuggen Fehlerbehebungsmeldungen

Konfigurieren eines zentralen Log-Hosts

Die Implementierung eines zentralen Protokollhosts erfordert die Konfiguration des rsyslog-Dienstes auf zwei Arten von Systemen:auf den entfernten Systemen, von denen die Protokollnachrichten stammen, und auf dem zentralen Protokollhost, der die Nachrichten empfängt. Auf dem zentralen Log-Host muss der rsyslog-Dienst so konfiguriert werden, dass Log-Meldungen von Remote-Hosts akzeptiert werden.

Um den rsyslog-Dienst auf dem zentralen Log-Host so zu konfigurieren, dass er Remote-Logs akzeptiert, kommentieren Sie entweder die TCP- oder UDP-Empfangszeilen im Modulabschnitt in /etc/rsyslog.conf aus Datei.

Für UDP-Empfang:

# Provides UDP syslog reception
$ModLoad imudp.so
$UDPServerRun 514

für TCP-Empfang:

# Provides TCP syslog reception
$ModLoad imtcp.so
$InputTCPServerRun 514

TCP bietet eine zuverlässigere Übermittlung von Remote-Protokollmeldungen, aber UDP wird von einer größeren Vielfalt von Betriebssystemen und Netzwerkgeräten unterstützt.

Hinweis :Der einfache TCP-Transport von Syslog-Meldungen ist ziemlich weit verbreitet, aber noch nicht standardisiert. Die meisten Implementierungen verwenden derzeit Port 514/TCP, den alten rshd-Port. Wenn auf dem System das rsh-server-Paket installiert ist und der alte unsichere rshd-Dienst verwendet wird, kommt es zu Konflikten mit der Verwendung von Port 514/TCP für einfachen TCP-Syslog-Empfang. Konfigurieren Sie den Protokollserver so, dass er einen anderen Port verwendet, indem Sie die Einstellung für $InputTCPServerRun ändern.

Die in /etc/rsyslog.conf enthaltenen Regeln sind standardmäßig so konfiguriert, dass sie das Protokollieren von Nachrichten auf einem einzelnen Host ermöglichen. Daher sortiert und bündelt es Nachrichten nach der Einrichtung. Beispielsweise werden E-Mail-Nachrichten nach /var/log/maillog geleitet, während
vom crond-Daemon generierte Nachrichten in /var/log/cron konsolidiert werden, um das Auffinden der einzelnen Nachrichtentypen zu erleichtern.

Während das Sortieren von Nachrichten durch die Einrichtung auf einem einzelnen Host ideal ist, erzeugt es auf einem zentralen Protokollhost ein unerwünschtes Ergebnis, da es dazu führt, dass Nachrichten von verschiedenen entfernten Hosts miteinander vermischt werden. Auf einem zentralen Log-Host ist es in der Regel optimaler, dass Log-Meldungen von entfernten Systemen voneinander getrennt bleiben. Diese Trennung kann erreicht werden, indem dynamische Protokolldateinamen mithilfe der Vorlagenfunktion von rsyslog definiert werden.

Vorlagen werden in /etc/rsyslog.conf definiert und können verwendet werden, um Regeln mit dynamischen Protokolldateinamen zu generieren. Eine Template-Definition besteht aus $template Direktive, gefolgt von einem Vorlagennamen und einer Zeichenfolge, die den Vorlagentext darstellt. Der Vorlagentext kann dynamisch gemacht werden, indem Werte verwendet werden, die aus den Eigenschaften einer Protokollnachricht ersetzt werden. Um beispielsweise Cron-Syslog-Meldungen von verschiedenen Systemen an verschiedene Dateien auf einem zentralen Protokollhost weiterzuleiten, verwenden Sie die folgende Vorlage, um dynamische Protokolldateinamen basierend auf dem HOSTNAME zu generieren Eigenschaft jeder Nachricht:

$template DynamicFile,"/var/log/loghost/%HOSTNAME%/cron.log"

Der anhand der Vorlagendefinition erstellte dynamische Dateiname kann dann in einer Regel wie folgt durch den Vorlagennamen referenziert werden:

cron.*    ?DynamicFile

Auf Systemen mit extrem ausführlicher Protokollierung kann es wünschenswert sein, die Synchronisierung der Protokolldatei nach jedem Schreibvorgang zu deaktivieren, um die Leistung zu verbessern. Das Synchronisieren einer Protokolldatei nach jeder Protokollierung kann unterbunden werden, indem dem Namen der Protokolldatei in einer Protokollierungsregel das Minuszeichen (-) vorangestellt wird. Der Kompromiss der verbesserten Leistung schafft jedoch die Möglichkeit eines Protokolldatenverlusts, wenn das System unmittelbar nach einem Schreibversuch abstürzt.

Im Folgenden finden Sie ein weiteres Beispiel für die Verwendung von Vorlagen zum Generieren dynamischer Protokolldateinamen. In diesem Beispiel werden Remote-Protokollmeldungen nach ihrem Hostnamen und ihren Einrichtungswerten sortiert, indem auf HOSTNAME verwiesen wird und syslogfacility-test Eigenschaften. Protokollnachrichten werden in die dynamisch generierten Protokolldateinamen geschrieben, und nach dem Schreibvorgang wird keine Synchronisierung durchgeführt.

$template DynamicFile,"/var/log/loghost/%HOSTNAME%/%syslogfacility-text%.log"
*.*    -?DynamicFile
Hinweis :Eine vollständige Liste der von rsyslog zur Verfügung gestellten Eigenschaften von Syslog-Meldungen finden Sie
im Abschnitt Verfügbare Eigenschaften der Manpage rsyslog.conf(5).

Nachdem der Syslog-Empfang aktiviert und die gewünschten Regeln für die Protokolltrennung nach Host erstellt wurden, starten Sie den rsyslog-Dienst neu, damit die Konfigurationsänderungen wirksam werden. Fügen Sie außerdem die erforderlichen UDP- und/oder TCP-Firewallregeln hinzu, um eingehenden Syslog-Datenverkehr zuzulassen, und laden Sie dann firewalld neu .

# systemctl restart rsyslog
# firewall-cmd --add-port=514/udp --permanent
# firewall-cmd --add-port=514/tcp --permanent
# firewall-cmd --reload

Wenn neue Protokolldateien erstellt werden, werden sie möglicherweise nicht in den bestehenden Protokollrotationsplan des Protokollhosts aufgenommen. Dies sollte behoben werden, um sicherzustellen, dass die neuen Protokolldateien nicht auf unüberschaubare Größen anwachsen. Um beispielsweise die neuen Protokolldateien aus den vorherigen Beispielen in die Protokollrotation aufzunehmen, fügen Sie den folgenden Eintrag zur Liste der Protokolldateien in /etc/logrotate.d/syslog hinzu Konfigurationsdatei.

/var/log/loghost/*/*.log

Umleitung der Protokollierung auf den zentralen Protokollhost

Sobald der zentrale Protokollhost so konfiguriert ist, dass er Remoteprotokollierung akzeptiert, kann der rsyslog-Dienst auf Remotesystemen so konfiguriert werden, dass Protokolle an den zentralen Protokollhost gesendet werden. Um eine Maschine so zu konfigurieren, dass sie Protokolle an einen entfernten rsyslog-Server sendet, fügen Sie eine Zeile zum Abschnitt rules in der Datei /etc/rsyslog.conf hinzu. Verwenden Sie anstelle des Dateinamens die IP-Adresse des entfernten rsyslog-Servers. Um UDP zu verwenden, stellen Sie der IP-Adresse ein einzelnes @-Zeichen voran. Um TCP zu verwenden, stellen Sie ihm zwei @-Zeichen voran (@@).

Um beispielsweise alle Nachrichten mit info oder höherer Priorität per UDP an loghost.example.com zu senden, verwenden Sie die folgende Zeile:

*.info @loghost.example.com

Um alle Nachrichten per TCP an loghost.example.com zu senden, verwenden Sie die folgende Zeile:

*.*     @@loghost.example.com

Optional kann an den Log-Hostnamen :PORT angehängt werden , wobei PORT der Port ist, den der Remote-rsyslog-Server verwendet. Wenn kein Port angegeben wird, wird der Standardport 514 angenommen .

Nachdem Sie die Regel(n) hinzugefügt haben, starten Sie den rsyslog-Dienst neu und senden Sie eine Testnachricht mit dem Logger-Befehl:

[root@logclient ~]# logger "Test from logclient"

Überprüfen Sie die Protokolle auf dem Remote-Server, um sicherzustellen, dass die Nachricht empfangen wurde.


Cent OS
  1. Deaktivieren Sie den Neustart mit den Tasten Strg-Alt-Entf in RHEL / CentOS

  2. Installieren Sie xrdp Remote Desktop auf CentOS 6 / RHEL 6

  3. CentOS / RHEL 7:Konfigurieren einer statischen IP-Adresse mithilfe von Netzwerkschnittstellen-Konfigurationsdateien

  4. fprintd protokolliert Nachrichten in /var/log/messages, selbst wenn USEFPRINTD=no in /etc/sysconfig/authconfig (CentOS/RHEL 7)

  5. Die Änderung des Hostnamens spiegelt sich nicht in /var/log/messages für CentOS/RHEL wider

So installieren Sie Syslog auf RHEL 8 / CentOS 8

So senden Sie Überwachungsprotokolle an den Remote-Rsyslog-Server in CentOS/RHEL 6,7

Audit-Protokoll und Meldungsdatei rotieren nicht unter CentOS/RHEL

Systemprotokolldatei /var/log/messages wird automatisch gelöscht oder gekürzt (CentOS/RHEL)

So konfigurieren Sie Remote-Rsyslog, um TLS und Nicht-TLS in CentOS/RHEL zu akzeptieren

So deaktivieren oder erweitern Sie die Begrenzung der Systemprotokollierungsrate auf CentOS/RHEL 6