Lösung 1:
Grundsätzlich sind sie alle gleich, da sie alle das Protokollieren von Daten aus verschiedenen Arten von Systemen in einem zentralen Repository ermöglichen.
Aber es handelt sich um drei verschiedene Projekte, wobei jedes Projekt versucht, das vorherige mit mehr Zuverlässigkeit und Funktionalität zu verbessern.
Der Syslog
Projekt war das allererste Projekt. Es begann 1980. Es ist das Stammprojekt von Syslog
Protokoll. Derzeit ist Syslog ein sehr einfaches Protokoll. Es unterstützt anfangs nur UDP für den Transport, garantiert also nicht die Zustellung der Nachrichten.
Als nächstes kam syslog-ng
im Jahr 1998. Es erweitert grundlegende syslog
Protokoll mit neuen Features wie:
- inhaltsbasierte Filterung
- Direktes Einloggen in eine Datenbank
- TCP für den Transport
- TLS-Verschlüsselung
Als nächstes kam Rsyslog
im Jahr 2004. Es erweitert syslog
Protokoll mit neuen Features wie:
- Unterstützung des RELP-Protokolls
- Unterstützung für gepufferten Betrieb
Nehmen wir an, dass es sich heute um drei gleichzeitig laufende Projekte handelt, die separat mit Versionen gewachsen sind, aber auch parallel gewachsen sind in Bezug auf das, was die Nachbarn taten.
Ich persönlich denke, dass heute syslog-ng
ist in den meisten Fällen die Referenz, da es das ausgereifteste Projekt ist, das die wichtigsten Funktionen bietet, die Sie möglicherweise benötigen, zusätzlich zu einer einfachen und umfassenden Einrichtung und Konfiguration.
Lösung 2:
Dies sind 3 verschiedene Arten von Protokollmanagern:Sie ermöglichen Ihrem System, Filter zu sammeln und Protokolle zu übertragen/speichern.
Syslog
(Daemon auch mit dem Namensysklogd
) ist das Standard-LM in gängigen Linux-Distributionen. Leicht, aber nicht sehr flexibel, Sie können den Protokollfluss sortiert nach Einrichtung und Schweregrad in Dateien und über das Netzwerk (TCP, UDP) umleiten.-
rsyslog
ist eine "erweiterte" Version vonsysklogd
wobei die Konfigurationsdatei dieselbe bleibt (Sie können einesyslog.conf
Datei direkt inrsyslog.conf
und es funktioniert); aber du hast eine Menge neuer cooler Sachen dabei :- Sie können TCP/UDP/...-Verbindungen abhören, mit Einschränkungen (Ports, Quell-IPs)
- Sie können viele Module laden
- Sie können die Protokollfilterung nach Programm, Quelle, Nachricht, PID usw. diskriminieren (zB jede Nachricht, die mit der Nachricht "Verbindung geschlossen" zur Datei closed.log getaggt ist)
- Sie können die Nachricht 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, Protokolle zu verwalten:Alles ist Objekt (Quelle, Ziel, Filter und die eigentliche Weiterleitungsregel) und die Syntax ist klar. Ich bezweifle in Bezug auf die Funktionalität, dass
rsyslog
undsyslog-ng
sind unterschiedlich.
Lösung 3:
Woher bekomme ich den Quellcode für syslog()
Dies wird von glibc oder den libc-Implementierungen auf anderen Unix-Varianten bereitgestellt. Dieser Aufruf übermittelt Ihre Nachricht grundsätzlich an den Syslog-Unix-Domain-Socket /dev/log. Dieser Socket wird normalerweise vom System-Logger erstellt (z. B. rsyslog, syslog-ng, nxlog usw.).
Lösung 4:
Sie alle sind Syslog-Daemons, wobei rsyslog und syslog-ng schnellere und funktionsreichere Ersetzungen für das (größtenteils ungepflegte) traditionelle syslogd sind. syslog-ng wurde von Grund auf neu gestartet (mit einem anderen Konfigurationsformat), während rsyslog ursprünglich ein Fork von syslogd war, der seine Syntax unterstützt und erweitert. In den letzten Jahren hat rsyslog begonnen, auch ein neueres Konfigurationsformat zu unterstützen. Inzwischen ist es wirklich schwierig, die beiden zu vergleichen, ohne auf die genauen Einzelheiten einzugehen und Flammenkriege zu beginnen.
Syslog im Allgemeinen ist ziemlich verwirrend, da es mehrere Dinge sein kann. Ich hatte hier einen Versuch zur Begriffsklärung:https://sematext.com/blog/2017/01/30/what-is-syslog-daemons-message-formats-and-protocols/