Escrevendo para o Socket de Domínio Unix a partir do rsyslog

1

Eu quero escrever mensagens de saída do rsyslog para um Socket de Domínio Unix. Eu quero fazer isso para que eu possa ler as mensagens desse soquete usando o meu script e analisar mais as mensagens de log.

Eu tento usar omuxsock , mas não foi criado nenhum soquete.

Isso é possível e se, como configuro o rsyslog corretamente para gravar em um soquete?

Editar:

Isso é o que eu editei em /etc/rsyslog.conf

$ModLoad omuxsock
$OMUxSockSocket /tmp/sock
*.* :omuxsock:
    
por shivams 09.02.2015 / 10:18

1 resposta

1

Sim, é possível, e a configuração dada já está correta *, de acordo com documentos do rsyslog: link .

Há uma suposição equivocada, no entanto, na declaração "omuxsock ... não estava criando nenhum soquete". omuxsock não é esperado para criar o soquete; espera transmitir a um soquete existente. Provavelmente é por isso que @HBruijn sugeriu incluir a configuração "usada para tentar configurar o soquete".

Aqui está um exemplo dessa configuração em Python:

import socket
sock = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM)
sock.bind('/tmp/sock')
print(sock.recv(4096))

Isso funciona com a configuração dada na questão e irá bloquear até receber uma mensagem pelo soquete.

Observe que o omuxsock suporta apenas SOCK_DGRAM, não SOCK_STREAM (que seria o padrão do Python no exemplo acima) e, portanto, é sem conexão (pense em UDP não TCP).

* Supondo, claro, que algum mecanismo de entrada também tenha sido definido e que seja desejável que tudo (não excluído anteriormente) seja registrado no soquete fornecido.

    
por 02.07.2015 / 14:06