Quelle est la différence entre syslog, rsyslog et syslog-ng?

61

Je suis un peu confus dans syslog, rsyslog et syslog-ng.

D'où puis-je obtenir le code source syslog()?

Existe-t-il une différence entre rsyslog et rsyslogd?

StackUser
la source
rsyslogd avec la lettre D est le démon
rsyslogd
3
Par souci d’exhaustivité, j’ajouterai une différence qui, à mon avis, pourrait ou non avoir un impact sur vous. syslog-ng utilise fopen alors que rsyslog utilise fappend. Cela compte si vous chattr +autilisez vos fichiers syslog. La plupart des gens ne le font pas, j'ai juste un cas d'utilisation spécial et c'est comme ça que j'ai découvert. Je viens de faire grincer beaucoup de gens.
Aaron

Réponses:

52

Fondamentalement, ils sont tous identiques, dans la mesure où ils permettent tous la journalisation des données de différents types de systèmes dans un référentiel central.

Mais ce sont trois projets différents, chaque projet essayant d'améliorer le précédent avec plus de fiabilité et de fonctionnalités.

Le Syslogprojet était le tout premier projet. Cela a commencé en 1980. C'est le projet racine du Syslogprotocole. Syslog est actuellement un protocole très simple. Au début, il ne prend en charge que le protocole UDP pour le transport, de sorte qu'il ne garantit pas la livraison des messages.

Vient ensuite syslog-ngen 1998. Il étend le syslogprotocole de base avec de nouvelles fonctionnalités telles que:

  • filtrage basé sur le contenu
  • Se connecter directement à une base de données
  • TCP pour le transport
  • Cryptage TLS

Vint ensuite Rsyslogen 2004. Il étend le syslogprotocole avec de nouvelles fonctionnalités telles que:

  • Prise en charge du protocole RELP
  • Prise en charge du fonctionnement en mémoire tampon

Disons qu’aujourd’hui, il existe trois projets simultanés qui ont évolué séparément sur les versions, mais ont également grandi en parallèle en ce qui concerne ce que faisaient les voisins.

Je pense personnellement qu’aujourd’hui syslog-ngest la référence dans la plupart des cas, car il s’agit du projet le plus abouti offrant les principales fonctionnalités dont vous pourriez avoir besoin, en plus d’une installation et d’une configuration simples et complètes.

krisFR
la source
1
Pour la petite histoire, le syslog d'OpenBSD peut utiliser les protocoles TCP et TLS (et UDP)
Neil McGuigan le
32

Ce sont 3 types de gestionnaires de journaux différents: il permet à votre système de collecter des filtres et de transmettre / stocker des journaux.

  • Syslog(démon également nommé sysklogd) est le LM par défaut dans les distributions Linux courantes. Léger mais peu flexible, vous pouvez rediriger les flux de journaux triés par installation et gravité vers des fichiers et sur le réseau (TCP, UDP).
  • rsyslogest une version "avancée" de l' sysklogdemplacement où le fichier de configuration reste le même (vous pouvez copier un syslog.conffichier directement dans rsyslog.confet cela fonctionne); mais vous avez beaucoup de nouveaux trucs sympas qui l'accompagnent:

    • Vous pouvez écouter les connexions TCP / UDP / ..., avec restrictions (ports, IP sources)
    • Vous pouvez charger beaucoup de modules
    • Vous pouvez distinguer le filtrage des journaux par programme, source, message, pid, etc. (par exemple, chaque message étiqueté avec le message "connexion fermée" dans le fichier closed.log)
    • Vous pouvez supprimer un message après une ou plusieurs règles. Visitez le site http://www.rsyslog.com qui est vraiment très bon.
  • Syslog-ng est "Next-Gen". Je pense que c'est la meilleure façon de gérer les journaux: tout est objet (source, destination, filtre et même règle de transfert) et la syntaxe est claire. Je doute en termes de fonctionnalité rsysloget syslog-ngsont différents.

moutonjr
la source
8
Je dirais que syslog-ng et rsyslog sont tous deux de la génération suivante, ou du moins le remplacement le plus récent de l'ancien syslog. Les deux sont comparables en termes de fonctionnalités, mais la syntaxe pour les deux est très différente. syslog-ng a sa propre syntaxe unique, tandis que la syntaxe de rsyslog ressemble plus à l'ancienne syntaxe de syslog.
Stefan Lasiewski
9
Et puis il y a journalctl/journald
Mausy5043
9

D'où puis-je obtenir le code source pour syslog ()

Ceci est fourni par la glibc ou les implémentations de libc sur d'autres versions Unix. Cet appel envoie essentiellement votre message au socket de domaine / dev / log de syslog unix domain. Ce socket est normalement créé par le consignateur du système (par exemple, rsyslog, syslog-ng, nxlog, etc.).

b0ti
la source
3

Ce sont tous des démons syslog, où rsyslog et syslog-ng sont des remplacements plus rapides et plus riches en fonctionnalités pour le syslogd traditionnel (généralement non maintenu). syslog-ng est parti de zéro (avec un format de configuration différent) alors que rsyslog était à l’origine un fork de syslogd, supportant et étendant sa syntaxe. Ces dernières années, rsyslog a également commencé à prendre en charge un nouveau format de configuration. À l'heure actuelle, il est très difficile de comparer les deux sans entrer dans les détails et lancer des guerres à la flamme.

Syslog en général est assez déroutant car il peut y avoir plusieurs choses. J'ai eu un coup à ambiguïté ici: https://sematext.com/blog/2017/01/30/what-is-syslog-daemons-message-formats-and-protocols/

Radu Gheorghe
la source