使用 syslogd 进行远程日志记录 - Ubuntu 18.04.2 LTS - 只是不会发送

使用 syslogd 进行远程日志记录 - Ubuntu 18.04.2 LTS - 只是不会发送

因此,使用集中式日志记录,我只是无法让 syslogd 将消息发送到远程 syslog 服务器。

背景:

系统日志服务器已设置并运行,已通过其他设备向其发送日志进行测试。

联网服务器和客户端都位于同一个子网中,服务器上的防火墙已关闭,据我所知,ubuntu 没有配置防火墙。从客户端在服务器上测试了 514 打开并获得成功的连接。

设置/测试过程

syslogd 似乎不存在于我的安装中,因此我安装了它:

sudo apt-get install -y inetutils-syslogd

修改了 /etc/syslogd.conf 中的配置文件,包含两行:

*.* /home/lee/test
*.* @10.120.1.20

通过发送挂断信号保存并重新加载 syslogd

killall -s SIGHUP syslogd

使用记录器功能进行测试:

logger "test"

将行插入到本地文件中,但是没有什么到达服务器。

尝试在 512 出站上设置 tcpdump 以查看是否有任何事情发生:

tcpdump -n -s 1500 -X port 514 -w /home/lee/tcpdump.pcap

该文件是空的,尝试跟踪 PID 如下:

strace -s 500 -tfp 188341 -o /home/lee/strace_syslog

文件的输出表明它看到了测试消息,并写入了一些输出,但似乎没有任何迹象表明写入远程系统日志地址......

1446  10:27:52 restart_syscall(<... resuming interrupted poll ...>) = 1
1446  10:28:03 recvfrom(21, "<13>May 18 10:28:03 lee: test", 1024, 0, 0x7ffd918070e0, [110->0]) = 29
1446  10:28:03 rt_sigprocmask(SIG_BLOCK, [HUP ALRM], [], 8) = 0
1446  10:28:03 writev(22, [{iov_base="May 18 10:28:03", iov_len=15}, {iov_base=" ", iov_len=1}, {iov_base="ubuntu-docker", iov_len=13}, {iov_base=" ", iov_len=1}, {iov_base="lee: test", iov_len=9}, {iov_base="\n", iov_len=1}], 6) = 40
1446  10:28:03 writev(20, [{iov_base="May 18 10:28:03", iov_len=15}, {iov_base=" ", iov_len=1}, {iov_base="ubuntu-docker", iov_len=13}, {iov_base=" ", iov_len=1}, {iov_base="lee: test", iov_len=9}, {iov_base="\n", iov_len=1}], 6) = 40
1446  10:28:03 writev(11, [{iov_base="May 18 10:28:03", iov_len=15}, {iov_base=" ", iov_len=1}, {iov_base="ubuntu-docker", iov_len=13}, {iov_base=" ", iov_len=1}, {iov_base="lee: test", iov_len=9}, {iov_base="\n", iov_len=1}], 6) = 40
1446  10:28:03 writev(6, [{iov_base="May 18 10:28:03", iov_len=15}, {iov_base=" ", iov_len=1}, {iov_base="ubuntu-docker", iov_len=13}, {iov_base=" ", iov_len=1}, {iov_base="lee: test", iov_len=9}, {iov_base="\n", iov_len=1}], 6) = 40
1446  10:28:03 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
1446  10:28:03 poll([{fd=3, events=POLLIN|POLLPRI}, {fd=21, events=POLLIN|POLLPRI}], 2, -1) = ? ERESTART_RESTARTBLOCK (Interrupted by signal)
1446  10:28:10 --- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL} ---
1446  10:28:10 alarm(30)                = 0
1446  10:28:10 rt_sigreturn({mask=[]})  = -1 EINTR (Interrupted system call)
1446  10:28:10 poll([{fd=3, events=POLLIN|POLLPRI}, {fd=21, events=POLLIN|POLLPRI}], 2, -1) = ? ERESTART_RESTARTBLOCK (Interrupted by signal)
1446  10:28:40 --- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL} ---
1446  10:28:40 alarm(30)                = 0
1446  10:28:40 rt_sigreturn({mask=[]})  = -1 EINTR (Interrupted system call)

我错过了什么???

我只是无法将其输出到远程主机......通过我的测试,我确信这是 /etc/syslogd.conf 中的配置问题,但我看不出是什么!

答案1

如果你想强制本地 syslogd 转发消息,请使用以下命令重新启动它

-h, --hop
    Enable forwarding remote messages. By default syslogd will not forward
    messages it receives from remote hosts.

相关内容