syslog-ng with unix-stream destination



我正在尝试配置 syslog-ng 目标路径以使用 unix-stream 套接字进行进程间通信。我已经通过这个文档 http://www.balabit.com/sites/default/files/documents/syslog-ng-ose-3.3-guides/en/syslog-ng-ose-v3.3-guide-admin-en/html/configuring_destinations_unixstream.html.

我的syslog.conf(只是其中的一部分)如下:

source s_dxtcp { tcp(ip(0.0.0.0) port(514)); };
filter f_request {program("dxall");};
destination d_dxall_unixstream {unix-stream("/var/run/logs/all.log");};
log {source(s_dxtcp); filter(f_request); destination(d_dxall_unixstream);};

当我重新启动我的 syslog-ng 服务器时,我收到以下消息:

Connection failed; fd='11', server='AF_UNIX(/var/run/logs/all.log)',
local='AF_UNIX(anonymous)', error='Connection refused (111)'
Initiating connection failed, reconnecting; time_reopen='60'

此错误意味着什么?如何将 unix 套接字与 syslog-ng 一起使用?谁能帮我。

到目前为止,

我无法为进程间通信创建Unix域套接字。但我有办法解决这个问题。我想要的只是一种单向通信,将在 syslog-ng 上创建的数据发送到正在运行的 java 程序(我可以说是一个进程)。这是我通过在 Syslog-ng 中使用命名管道来实现的。实现的文件是 http://www.balabit.com/sites/default/files/documents/syslog-ng-ose-3.4-guides/en/syslog-ng-ose-v3.4-guide-admin/html-single/index.html#configuring-destinations-pipe.

命名管道读取与从普通文件读取相同。需要注意的重要一点是,Reader 进程(这里是 Java 程序)应该在 Syslog-ng(编写器,将日志消息写入命名管道)之前启动。

原因,作家会阻止,直到有读者。缺少阅读器将导致一些消息丢失,这些消息是在阅读器启动之前累积的。并且应该只有一个读取器实例。如果有多个读取器,则第二个读取器将获得空指针异常,因为它要读取的消息已被第一个读取器读取。请注意,这是我的经验。让我知道,如果我错了。

最新更新