我正在尝试build立一个集中的日志服务器。 我有中央服务器(A)通过端口514上的远程服务器(B)接收日志。我知道它正在接收这些。 以下是来自514端口上的tcpdump的一些条目
# tcpdump port 514 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes 10:49:52.136520 IP IP_FROM_SERVER_B.55558 > IP_FROM_SERVER_A.syslog: SYSLOG local0.notice, length: 474 10:49:52.136792 IP IP_FROM_SERVER_B.55558 > IP_FROM_SERVER_A.syslog: SYSLOG user.notice, length: 671 10:49:52.136838 IP IP_FROM_SERVER_B.55558 > IP_FROM_SERVER_A.syslog: SYSLOG user.info, length: 79
这是文件看起来应该logging的内容(我称之为/var/log/test.log )。
May 16 10:43:19 SERVER_A kernel: imklog 3.22.1, log source = /proc/kmsg started. May 16 10:43:19 SERVER_A rsyslogd: [origin software="rsyslogd" swVersion="3.22.1" x-pid="12974" x-info="http://www.rsyslog.com"] (re)start May 16 10:49:08 SERVER_A kernel: device eth0 entered promiscuous mode May 16 10:49:53 SERVER_A kernel: device eth0 left promiscuous mode
这里是我的rsyslog.conf
# Use traditional timestamp format $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat # Provides kernel logging support (previously done by rklogd) $ModLoad imklog # Provides support for local system logging (eg via logger command) $ModLoad imuxsock $ModLoad imtcp $ModLoad imudp $InputTCPServerRun 514 $UDPServerRun 514 # Write everything to test.log *.* /var/log/test.log *.info;mail;.none;authpriv.none;cron.none /var/log/messages #----------DEFAULT-SETTINGS-----------# #----------HAVE-NOT-CHANGED------------# # Log all kernel messages to the console. # Logging much else clutters up the screen. #kern.* /dev/console # Log anything (except mail) of level info or higher. # Don't log private authentication messages! *.info;mail.none;authpriv.none;cron.none /var/log/messages # The authpriv file has restricted access. authpriv.* /var/log/secure # Log all the mail messages in one place. mail.* -/var/log/maillog # Log cron stuff cron.* /var/log/cron # Everybody gets emergency messages *.emerg * # Save news errors of level crit and higher in a special file. uucp,news.crit /var/log/spooler # Save boot messages also to boot.log local7.* /var/log/boot.log
我已经确保每次编辑rsyslog.conf时重新启动rsyslog.conf并且使用-r和-t标志运行启动守护程序,即使它们在我当前的版本中已被弃用。
那么为什么514端口没有写入test.log ?
编辑: MadHatter请求看到我的iptables输出:
# iptables -L -n -v Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 33 2988 udp -- eth0 * IP_ADDRESS_A 0.0.0.0/0 725K 420M RH-Firewall-1-INPUT all -- * * 0.0.0.0/0 0.0.0.0/0 Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 RH-Firewall-1-INPUT all -- * * 0.0.0.0/0 0.0.0.0/0 Chain OUTPUT (policy ACCEPT 231K packets, 189M bytes) pkts bytes target prot opt in out source destination Chain RH-Firewall-1-INPUT (2 references) pkts bytes target prot opt in out source destination 135K 92M ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 17 1808 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmp type 255 0 0 ACCEPT esp -- * * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT ah -- * * 0.0.0.0/0 0.0.0.0/0 66 9195 ACCEPT udp -- * * 0.0.0.0/0 224.0.0.251 udp dpt:5353 0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:631 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:631 90284 11M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 7 420 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 500K 317M REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
我不是rsyslog专家,但阅读您可能需要的文档
$UDPServerRun 514
因为你只有一个类似的TCP指令。
运行ps -eaf | grep syslog ps -eaf | grep syslog以确保它使用选项-r运行。
否则,您应该使用以下选项编辑/etc/default/rsyslog :
RSYSLOGD_OPTIONS="-m 0 -r"
重新启动syslogd并检查。
你已经明确了你的防火墙不接受任意的入站UDP,至less不在端口514上,这肯定会成为一个问题。
如果你想把iptables -L -n -v的输出粘贴到你的问题中 ,我们可以build议一个iptables线来打开传入的rsyslog的UDP。 没有这个,就像
iptables -I INPUT 1 -p udp --dport 514 -j ACCEPT
可能会做这个工作。
编辑 :感谢iptables输出,但是虽然你允许来自server_A的UDP,你只能在eth0接口允许它; 你能确认这是正确的界面吗?
我能想出一个方法来使其工作。 这可能不是最好的解决办法,但是我的老板build议我closuresiptables ,这样可以正常工作。 为了防止这种情况再次发生,我运行了chkconfig iptables off 。 这样它就不会再重新启动服务器。
这是一个坏主意,即使服务器A没有访问服务器的小型networking之外的访问。