Qual é a diferença entre syslog, rsyslog e syslog-ng?

61

Estou um pouco confuso em syslog, rsyslog e syslog-ng.

De onde posso obter o código fonte syslog()?

Existe alguma diferença entre rsyslog e rsyslogd?

StackUser
fonte
O rsyslogd com a letra D é o daemon
rsyslogd
3
Por uma questão de exaustividade, acrescentarei uma diferença que achei que pode ou não impactar você. O syslog-ng usa fopen enquanto o rsyslog usa fappend. Isso importa se você tiver chattr +aseus arquivos syslog. A maioria das pessoas não faz isso, eu só tinha um caso de uso especial e foi assim que descobri. Eu apenas fiz muita gente se encolher.
Aaron

Respostas:

52

Basicamente, eles são todos iguais, da maneira que permitem o registro de dados de diferentes tipos de sistemas em um repositório central.

Mas são três projetos diferentes, cada projeto tentando melhorar o anterior com mais confiabilidade e funcionalidades.

O Syslogprojeto foi o primeiro projeto. Tudo começou em 1980. É o projeto raiz para o Syslogprotocolo. No momento, o Syslog é um protocolo muito simples. No começo, ele suporta apenas UDP para transporte, para que não garanta a entrega das mensagens.

O próximo veio syslog-ngem 1998. Estende o syslogprotocolo básico com novos recursos, como:

  • filtragem baseada em conteúdo
  • Fazendo logon diretamente em um banco de dados
  • TCP para transporte
  • Criptografia TLS

O próximo veio Rsyslogem 2004. Estende o syslogprotocolo com novos recursos, como:

  • Suporte ao protocolo RELP
  • Suporte à operação em buffer

Digamos que hoje eles são três projetos simultâneos que cresceram separadamente em versões, mas também cresceram em paralelo com relação ao que os vizinhos estavam fazendo.

Pessoalmente, acho que hoje syslog-ngé a referência na maioria dos casos, pois é o projeto mais maduro que oferece os principais recursos de que você precisa, além de uma instalação e configuração fáceis e abrangentes.

krisFR
fonte
11
Para o registro, syslog do OpenBSD pode fazer TCP e TLS (e UDP)
Neil McGuigan
32

estes são três tipos diferentes de gerenciadores de logs: permite que o sistema colete filtros e transmita / armazene logs.

  • Syslog(daemon também chamado sysklogd) é o LM padrão em distribuições comuns do Linux. Leve, mas não muito flexível, você pode redirecionar o fluxo de logs classificado por facilidade e gravidade para arquivos e pela rede (TCP, UDP).
  • rsyslogé uma versão "avançada" de sysklogdonde o arquivo de configuração permanece o mesmo (você pode copiar um syslog.confarquivo diretamente rsyslog.confe funcionar); mas você tem muitas novidades interessantes:

    • Você pode ouvir conexões TCP / UDP / ..., com restrições (portas, IPs de origem)
    • Você pode carregar muitos módulos
    • Você pode discriminar a filtragem de log por programa, fonte, mensagem, pid etc. (por exemplo, cada mensagem marcada com a mensagem "conexão fechada" para o arquivo closed.log)
    • Você pode descartar a mensagem após uma ou mais regras, visite http://www.rsyslog.com, o que é realmente muito bom
  • O syslog-ng é "Próxima geração". Eu acho que é a melhor maneira de gerenciar logs: tudo é objeto (origem, destino, filtro e a regra de encaminhamento) e a sintaxe é clara. Duvido em termos de funcionalidade que rsysloge syslog-ngsão diferentes.

moutonjr
fonte
8
Eu diria que o syslog-ng e o rsyslog são 'next gen', ou pelo menos a substituição mais recente do syslog mais antigo. Ambos são comparáveis ​​em termos de recursos, mas a sintaxe para ambos é muito diferente. O syslog-ng possui sua própria sintaxe exclusiva, enquanto a sintaxe do rsyslog é mais parecida com a sintaxe mais antiga do syslog.
Stefan Lasiewski
9
E então há journalctl/journald
Mausy5043
9

De onde posso obter o código fonte para syslog ()

Isso é fornecido pelas implementações glibc ou libc em outros tipos de Unix. Essa chamada basicamente envia sua mensagem para o soquete do domínio syslog unix / dev / log. Este soquete é normalmente criado pelo criador de logs do sistema (por exemplo, rsyslog, syslog-ng, nxlog, etc).

b0ti
fonte
3

Eles são todos os daemons syslog, onde rsyslog e syslog-ng são substituições mais rápidas e mais ricas em recursos para o syslogd tradicional (na maioria das vezes não mantido). O syslog-ng começou do zero (com um formato de configuração diferente), enquanto o rsyslog era originalmente um fork do syslogd, suportando e estendendo sua sintaxe. Nos últimos anos, o rsyslog também começou a oferecer suporte a um formato de configuração mais recente. Até agora, é realmente difícil comparar os dois sem entrar em detalhes específicos e iniciar guerras de chamas.

O Syslog em geral é bastante confuso, pois pode ser várias coisas. Eu tive uma chance de desambiguar aqui: https://sematext.com/blog/2017/01/30/what-is-syslog-daemons-message-formats-and-protocols/

Radu Gheorghe
fonte