Я хочу записывать выходные сообщения из rsyslog в сокет домена Unix. Я хочу сделать это, чтобы я мог читать сообщения из этого сокета с помощью моего скрипта и анализировать сообщения журнала дальше.
Я пытаюсь использовать omuxsock
но он не создавал сокета.
Возможно ли это, и как правильно настроить rsyslog для записи в сокет?
Редактировать:
Это то, что я редактировал в /etc/rsyslog.conf
$ModLoad omuxsock
$OMUxSockSocket /tmp/sock
*.* :omuxsock:
Да, это возможно, и данная конфигурация уже верна *, согласно документации rsyslog: http://www.rsyslog.com/doc/v8-stable/configuration/modules/omuxsock.html.
Однако есть ошибочное предположение в заявлении «omuxsock ... не создавал никакого сокета». не ожидается, что omuxsock создаст сокет; он ожидает передачи в существующий сокет. Вероятно, поэтому @HBruijn предложил включить конфигурацию, «используемую для попытки настройки сокета».
Вот пример такой настройки в Python:
import socket
sock = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM)
sock.bind('/tmp/sock')
print(sock.recv(4096))
Это работает с конфигурацией, указанной в вопросе, и будет блокироваться, пока не получит сообщение через сокет.
Обратите внимание, что omuxsock поддерживает только SOCK_DGRAM, а не SOCK_STREAM (который был бы по умолчанию для Python в приведенном выше примере), и, следовательно, не требует подключения (подумайте о UDP, а не о TCP).
* При условии, конечно, что некоторый механизм ввода также был определен и что желательно, чтобы все (не исключенное ранее) регистрировалось в данном сокете.