Ubuntu

使用 syslogd 進行遠端日誌記錄 - Ubuntu 18.04.2 LTS - 只是不會發送

  • May 18, 2020

因此,使用集中式日誌記錄,我無法讓 syslogd 將消息發送到遠端 syslog 伺服器。

背景:

系統日誌伺服器已設置並正在工作,並與其他向其中發送日誌的設備進行了測試。

網路伺服器和客戶端都位於同一子網中,伺服器上的防火牆已關閉,據我所知,ubuntu 沒有配置防火牆。測試 514 從客戶端打開伺服器並獲得成功連接。

設置/測試過程

syslogd 似乎在我的安裝中不存在,所以我安裝了它:

sudo apt-get install -y inetutils-syslogd

修改 /etc/syslogd.conf 中的配置文件以包含 2 行:

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

通過發送掛斷信號保存並重新載入 syslogd

killall -s SIGHUP syslogd

使用記錄器功能進行測試:

logger "test"

將行插入本地文件,但沒有任何內容到達伺服器。

嘗試在 512 outbound 上設置 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 中的配置問題,但我看不到是什麼!

如果要強製本地 syslogd 轉發消息,請使用以下命令重新啟動它

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

引用自:https://serverfault.com/questions/1017608