如何调试 syslog-ng 不记录 UDP 日志

如何调试 syslog-ng 不记录 UDP 日志

我正在尝试让客户端登录到 syslog-ng 服务器。但是,据我所知,syslog-ng 并未记录它已收到消息,也没有将其记录到文件中。

注意:所有命令均以 root 身份运行

这是我的 syslog-ng.conf

options {
        flush_lines (0);
        time_reopen (10);
        log_fifo_size (1000);
        long_hostnames (off);
        use_dns (no);
        use_fqdn (no);
        create_dirs (no);
        keep_hostname (yes);
};

source s_net {
        udp(port(514));
};

destination d_net {
        file("/var/log/test.log");
};

这些是消息和 test.log 文件的权限(我知道消息是由 syslog-ng 写入的)。

ls -lah test.log messages
-rw-------. 1 root root 73K Sep  4 10:19 messages
-rw-r--r--. 1 root root   0 Sep  4 10:28 test.log

为了测试连通性,我运行了以下测试。在装有 syslog-ng 的服务器上,我运行以下命令:

service syslog-ng stop 
syslog-ng -dv (debug verbose mode)
nc -ul 514 (listen to udp packets on port 514)

在客户端我运行以下命令

nc -u IP_OF_SERVER 514
Hello World (Hit Enter)

在服务器上我看到我收到了 udp 消息:

[root@rhel6-64 syslog-ng]# nc -ul 514
Hello World 

但是我在 syslog-ng 输出中没有看到任何内容:

[root@rhel6-64 syslog-ng]# syslog-ng -dv
Trying to open module; module='syslogformat', filename='/lib64/syslog-ng/libsyslogformat.so'
Trying to open module; module='basicfuncs', filename='/lib64/syslog-ng/libbasicfuncs.so'
Trying to open module; module='afsocket', filename='/lib64/syslog-ng/libafsocket.so'
Trying to open module; module='affile', filename='/lib64/syslog-ng/libaffile.so'
Trying to open module; module='afprog', filename='/lib64/syslog-ng/libafprog.so'
Trying to open module; module='afuser', filename='/lib64/syslog-ng/libafuser.so'
Trying to open module; module='dbparser', filename='/lib64/syslog-ng/libdbparser.so'
Trying to open module; module='csvparser', filename='/lib64/syslog-ng/libcsvparser.so'
Plugin module not found in 'module-path'; module-path='/lib64/syslog-ng', module='afsql'
Running application hooks; hook='1'
Running application hooks; hook='3'
syslog-ng starting up; version='3.2.5'

请注意,“syslog-ng 正在启动;version='3.2.5'”是我看到的最后一句话。

在这个阶段,我不确定问题是什么,我希望有人能解释我的问题是什么,或者如何进一步调试这个问题。

答案1

问题在于我没有仔细阅读手册页。当我定义源和目标时,我没有定义它们之间的链接(我假设由于它们在 s 和 d 后面都有 _net,它们会自动相互链接)。相反,我需要将以下行添加到 syslog-ng.conf

log { source(s_net); destination(d_net); }

总而言之,我的问题是我没有连接两个端点,解决方案是使用日志块指定端点之间的连接。

相关内容