Soluzione 1:
Fondamentalmente, sono tutti uguali, nel modo in cui tutti consentono la registrazione di dati da diversi tipi di sistemi in un repository centrale.
Ma sono tre progetti diversi, ogni progetto cerca di migliorare il precedente con più affidabilità e funzionalità.
Il Syslog
progetto è stato il primo vero progetto. È iniziato nel 1980. È il progetto radice di Syslog
protocollo. Al momento Syslog è un protocollo molto semplice. All'inizio supporta solo UDP per il trasporto, quindi non garantisce la consegna dei messaggi.
Poi è arrivato syslog-ng
nel 1998. Estende il syslog
di base protocollo con nuove funzionalità come:
- filtro basato sui contenuti
- Accesso diretto a un database
- TCP per il trasporto
- Crittografia TLS
Poi è arrivato Rsyslog
nel 2004. Estende syslog
protocollo con nuove funzionalità come:
- Supporto del protocollo RELP
- Supporto operativo bufferizzato
Diciamo che oggi sono tre progetti concorrenti che sono cresciuti separatamente sulle versioni, ma sono cresciuti anche in parallelo rispetto a quello che facevano i vicini.
Personalmente penso che oggi syslog-ng
è il riferimento nella maggior parte dei casi, in quanto è il progetto più maturo che offre le funzionalità principali di cui potresti aver bisogno, oltre a un'impostazione e una configurazione semplici e complete.
Soluzione 2:
si tratta di 3 diversi tipi di gestori di log:consente al sistema di raccogliere filtri e trasmettere/archiviare log.
Syslog
(demone chiamato anchesysklogd
) è il LM predefinito nelle comuni distribuzioni Linux. Leggero ma poco flessibile, puoi reindirizzare il flusso di log ordinato per facilità e gravità su file e su rete (TCP, UDP).-
rsyslog
è una versione "avanzata" disysklogd
dove il file di configurazione rimane lo stesso (puoi copiare unsyslog.conf
file direttamente inrsyslog.conf
e funziona); ma ci sono un sacco di nuove fantastiche cose in arrivo :- Puoi ascoltare connessioni TCP/UDP/..., con restrizioni (porte, IP sorgente)
- Puoi caricare molti moduli
- Puoi discriminare il filtraggio del log per programma, sorgente, messaggio, pid ecc. (ad esempio, ogni messaggio contrassegnato con il messaggio "connessione chiusa" al file closed.log)
- Puoi scartare il messaggio dopo una o più regoleVisita http://www.rsyslog.com che è davvero molto buono
-
Syslog-ng è "Next-Gen". Penso che sia il modo migliore per gestire i log:tutto è oggetto (sorgente, destinazione, filtro e la stessa regola di inoltro) e la sintassi è chiara. Dubito in termini di funzionalità che
rsyslog
esyslog-ng
sono diversi.
Soluzione 3:
Da dove posso ottenere il codice sorgente per syslog()
Questo è fornito da glibc o dalle implementazioni di libc su altri tipi di Unix. Questa chiamata fondamentalmente invia il tuo messaggio al socket di dominio unix di syslog /dev/log. Questo socket viene normalmente creato dal logger di sistema (ad es. rsyslog, syslog-ng, nxlog, ecc.).
Soluzione 4:
Sono tutti demoni syslog, dove rsyslog e syslog-ng sono sostituzioni più veloci e ricche di funzionalità per il tradizionale syslogd (per lo più non mantenuto). syslog-ng è partito da zero (con un diverso formato di configurazione) mentre rsyslog era originariamente un fork di syslogd, supportandone ed estendendone la sintassi. Negli ultimi anni, rsyslog ha iniziato a supportare anche un nuovo formato di configurazione. Ormai è davvero difficile confrontare i due senza entrare nello specifico e iniziare le guerre di fuoco.
Syslog in generale è piuttosto confuso in quanto può essere più cose. Ho provato a disambiguare qui:https://sematext.com/blog/2017/01/30/what-is-syslog-daemons-message-formats-and-protocols/