Was ist der Unterschied zwischen syslog, rsyslog und syslog-ng?

61

Ich bin ein bisschen verwirrt in Syslog, Rsyslog und Syslog-ng.

Woher bekomme ich den Quellcode syslog()?

Gibt es einen Unterschied zwischen rsyslog und rsyslogd?

StackUser
quelle
rsyslogd mit dem Buchstaben D ist der Dämon
rsyslogd
3
Der Vollständigkeit halber möchte ich einen Unterschied hinzufügen, der sich auf Sie auswirken kann oder nicht. syslog-ng benutzt fopen, während rsyslog fappend benutzt. Dies ist wichtig, wenn Sie chattr +aIhre Syslog-Dateien. Die meisten Leute machen das nicht, ich hatte nur einen speziellen Anwendungsfall und so habe ich es herausgefunden. Ich habe gerade viele Leute erschaudern lassen.
Aaron

Antworten:

52

Grundsätzlich sind sie alle gleich, da sie alle die Protokollierung von Daten verschiedener Systemtypen in einem zentralen Repository ermöglichen.

Es handelt sich jedoch um drei verschiedene Projekte, bei denen jedes Projekt versucht, das vorherige mit mehr Zuverlässigkeit und Funktionalität zu verbessern.

Das SyslogProjekt war das allererste Projekt. Es begann 1980. Es ist das Stammprojekt zum SyslogProtokollieren. Derzeit ist Syslog ein sehr einfaches Protokoll. Anfangs wird nur UDP für den Transport unterstützt, so dass die Zustellung der Nachrichten nicht garantiert wird.

Als nächstes kam syslog-ng1998. Es erweitert das Basisprotokoll syslogmit neuen Funktionen wie:

  • inhaltsbasiertes Filtern
  • Direkt in eine Datenbank einloggen
  • TCP für den Transport
  • TLS-Verschlüsselung

Das nächste kam Rsyslogim Jahr 2004. Es erweitert das syslogProtokoll mit neuen Funktionen wie:

  • Unterstützung des RELP-Protokolls
  • Unterstützung für gepufferte Operationen

Nehmen wir an, es handelt sich heute um drei gleichzeitig laufende Projekte, die nach Versionen getrennt gewachsen sind, aber auch parallel zu den Aktivitäten der Nachbarn gewachsen sind.

Ich persönlich denke, dass heute syslog-ngin den meisten Fällen die Referenz ist, da es sich um das ausgereifteste Projekt handelt, das neben einer einfachen und umfassenden Einrichtung und Konfiguration die wichtigsten Funktionen bietet, die Sie möglicherweise benötigen.

krisFR
quelle
1
OpenBSDs Syslog kann TCP und TLS (und UDP)
Neil McGuigan
32

Hierbei handelt es sich um drei verschiedene Arten von Protokollmanagern: Ihr System kann Filter erfassen und Protokolle übertragen / speichern.

  • Syslog(Daemon auch benannt sysklogd) ist das Standard-LM in gängigen Linux-Distributionen. Leicht, aber nicht sehr flexibel, können Sie den Protokollfluss nach Einrichtung und Schweregrad in Dateien und über das Netzwerk (TCP, UDP) umleiten.
  • rsyslogist eine "erweiterte" Version, in der sysklogddie Konfigurationsdatei unverändert bleibt (Sie können eine syslog.confDatei direkt in die Datei kopieren, rsyslog.confund sie funktioniert). Aber du hast eine Menge neuer cooler Sachen dabei:

    • Sie können TCP / UDP / ... -Verbindungen mit Einschränkungen (Ports, Quell-IPs) überwachen.
    • Sie können viele Module laden
    • Sie können die Protokollfilterung nach Programm, Quelle, Nachricht, PID usw. unterscheiden (z. B. jede Nachricht, die mit der Nachricht "connexion closed" für die Datei closed.log gekennzeichnet ist).
    • Sie können Nachrichten nach einer oder mehreren Regeln verwerfen. Besuchen Sie http://www.rsyslog.com, was in der Tat sehr gut ist
  • Syslog-ng ist "Next-Gen". Ich denke, es ist der beste Weg, um Protokolle zu verwalten: Alles ist ein Objekt (Quelle, Ziel, Filter und die Weiterleitungsregel) und die Syntax ist klar. Ich bezweifle in Bezug auf die Funktionalität, dass rsyslogund syslog-ngsind unterschiedlich.

moutonjr
quelle
8
Ich würde argumentieren, dass sowohl syslog-ng als auch rsyslog 'next gen' sind, oder zumindest der neuere Ersatz für das ältere Syslog. Beide sind in Bezug auf die Funktionen vergleichbar, aber die Syntax für beide ist sehr unterschiedlich. syslog-ng hat eine eigene eindeutige Syntax, während die Syntax von rsyslog eher der älteren Syslog-Syntax entspricht.
Stefan Lasiewski
9
Und dann gibt es journalctl/journald
Mausy5043
9

Woher bekomme ich den Quellcode für syslog ()

Dies wird von glibc oder den libc-Implementierungen auf anderen Unix-Versionen bereitgestellt . Dieser Aufruf sendet Ihre Nachricht im Grunde genommen an die Syslog-Unix-Domain Socket / dev / log. Dieser Socket wird normalerweise vom Systemlogger erstellt (z. B. rsyslog, syslog-ng, nxlog usw.).

b0ti
quelle
3

Sie sind alle Syslog-Daemons, bei denen rsyslog und syslog-ng schneller und funktionsreicher sind als das (meist nicht gewartete) traditionelle Syslogd. syslog-ng wurde von Grund auf neu gestartet (mit einem anderen Konfigurationsformat), während rsyslog ursprünglich ein Zweig von syslogd war und dessen Syntax unterstützte und erweiterte. In den letzten Jahren hat rsyslog begonnen, auch ein neueres Konfigurationsformat zu unterstützen. Inzwischen ist es wirklich schwierig, die beiden zu vergleichen, ohne sich auf die Einzelheiten einzulassen und Flammenkriege auszulösen.

Syslog ist im Allgemeinen ziemlich verwirrend, da es sich um mehrere Dinge handeln kann. Ich hatte einen Versuch, hier zu disambiguieren: https://sematext.com/blog/2017/01/30/what-is-syslog-daemons-message-formats-and-protocols/

Radu Gheorghe
quelle