Como o RSyslog recebe mensagens de log automaticamente?

2

Parte relevante:

anisha@linux-trra~> sudo cat /var/log/messages
Aug 29 13:04:22 linux kernel: imklog 5.6.3, log source = /proc/kmsg started.
Aug 29 13:04:22 linux rsyslogd: [origin software="rsyslogd" swVersion="5.6.3" x-pid="1879" x-info="http://www.rsyslog.com"] start
Aug 29 13:04:22 linux kernel: [7.585951] type=1400 audit(1346225659.436:4): apparmor="STATUS" operation="profile_load" name="/sbin/syslog-ng" pid=807 comm="apparmor_parser" Aug 29 13:04:22 linux kernel: [7.667712] type=1400 audit(1346225659.518:5): apparmor="STATUS" operation="profile_load" name="/sbin/syslogd" pid=830 comm="apparmor_parser"

Não consegui encontrar estes PIDs no meu sistema através de ps -el .

  • Como os programas automaticamente sabem que precisam enviar mensagens para o RSyslog?

  • É que todos os programas despejam suas mensagens em um único lugar, e o RSyslog pega os relevantes?

  • A página man do Syslog diz que o Syslog lê suas mensagens de um soquete em / dev. Então, como isso se correlaciona com os dois pontos acima?

por Aquarius_Girl 08.02.2013 / 11:58

1 resposta

3

Por padrão, todos os daemons syslog lêem mensagens recebidas de: /dev/log

Além disso, o syslog pode se ligar ao soquete UDP na porta 514. Veja / etc / services ::

$ cat /etc/services | grep syslog
syslog          514/udp

O segundo é usado principalmente para passar logs entre daemons do syslog. Ou seja um servidor de registro por cluster.

Como programador, você não grava diretamente em / dev / log, mas chama uma função posix syslog ::

#include <syslog.h>

void openlog(const char *ident, int option, int facility);
void syslog(int priority, const char *format, ...);
void closelog(void);

Na verdade, todas as linguagens de nível superior fornecem uma camada de abstração sobre essas funções.

    
por 08.02.2013 / 13:07

Tags