Запись в Сокет Домена Unix от rsyslog

Я хочу записать выходные сигналы с rsyslog на Сокет Домена Unix. Я хочу сделать это так, чтобы я мог прочитать сообщения из того сокета с помощью моего сценария и проанализировать сообщения журнала далее.

Я пытаюсь использовать omuxsock но это не создавало сокета.

Действительно ли это возможно и если, как я настраиваю rsyslog правильно для записи в сокет?

Править:

Это - то, в чем я отредактировал /etc/rsyslog.conf

$ModLoad omuxsock
$OMUxSockSocket /tmp/sock
*.* :omuxsock:
1
задан 9 February 2015 в 11:51
1 ответ

Да, это возможно, и данная конфигурация уже корректна*, согласно rsyslog docs: 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).

*Понимая, конечно, что некоторый механизм ввода также был определен и что желательно, чтобы все (ранее не исключалось) протоколировалось к данному сокету.

1
ответ дан 4 December 2019 в 00:12

Теги

Похожие вопросы