我正在尝试让客户端登录到 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); }
总而言之,我的问题是我没有连接两个端点,解决方案是使用日志块指定端点之间的连接。