日前,在测试系统时涉及到syslog转发的问题,按照syslog服务相关的配置进行配置后,始终在接收服务器上没有收到转发过来的syslog信息。经过查找资料及自己核查定位,发现还是少配置了一个参数(-h),配置完此参数后,问题得以解决。现将配置的整个过程记录如下:
情景模拟:计划将A服务器上所有接收到的syslog信息转发到B服务器的syslogd上
1)确认A服务上的/etc/syslog.conf相关配置信息【在配置文件中增加红色部分内容】
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none /var/log/messages
*.info;mail.none;authpriv.none;cron.none @B_hostname
*.info;mail.none;authpriv.none;cron.none /var/log/messages
*.info;mail.none;authpriv.none;cron.none @B_hostname
注:@后面可以跟B服务器的主机名或者B服务器的IP地址,当配置为主机名时,应该在A服务器的/etc/hosts文件里面配置对应的主机名与IP地址的映射(通过hosts进行解析)
2)修改A服务器的/etc/sysconfig/syslog中SYSLOGD_OPTIONS="-m 0"为SYSLOGD_OPTIONS="-f /etc/syslog.conf -r -h -m 0" ;KLOGD_OPTIONS="-x"为KLOGD_OPTIONS="-2"
注:SYSLOGD_OPTIONS="-f /etc/syslog.conf -r -h -m 0"中的-h参数一定要添加,因为默认情况下,syslog不会发送从远端接受过来的消息到其他主机,而使用该选项,则把该开关打开,所有接受到的信息都可根据syslog.conf中定义的@主机转发过去。(此点尤其要注意,开始我就是没加这个参数,导致信息一直不转发的)
3)修改A服务器的/etc/init.d/syslog中SYSLOGD_OPTIONS="-m 0"为SYSLOGD_OPTIONS="-f /etc/syslog.conf -r -h -m 0";KLOGD_OPTIONS="-x"为KLOGD_OPTIONS="-2"
注:说明同2)中叙述
4)修改B服务器的/etc/sysconfig/syslog中SYSLOGD_OPTIONS="-m 0"为SYSLOGD_OPTIONS="-f /etc/syslog.conf -r -m 0" ;KLOGD_OPTIONS="-x"为KLOGD_OPTIONS="-2";以及/etc/init.d/syslog中SYSLOGD_OPTIONS="-m 0"为SYSLOGD_OPTIONS="-f /etc/syslog.conf -r -m 0";KLOGD_OPTIONS="-x"为KLOGD_OPTIONS="-2"
注:这里因为不需要再转发就不用加-h参数了,但一定要加-r参数(即:打开接受外来日志消息的功能,其监控514 UDP端口)
5)确认/etc/services中“syslog 514/udp”没有注释调
more /etc/services | grep syslog
more /etc/services | grep syslog
6)重启syslog(A服务器和B服务器的syslog服务最要重启,因为都修改了各自的相关配置),重启命令如下:
/etc/init.d/syslog restart
/etc/init.d/syslog restart
# /etc/init.d/syslog restart
关闭内核日志记录器:[ 确定 ]
关闭系统日志记录器:[ 确定 ]
启动系统日志记录器:[ 确定 ]
启动内核日志记录器:[ 确定 ]
关闭内核日志记录器:[ 确定 ]
关闭系统日志记录器:[ 确定 ]
启动系统日志记录器:[ 确定 ]
启动内核日志记录器:[ 确定 ]
注:最好不要用syslogd restart来启动,可以用/sbin/syslogd -rm 0手工启动
如此配置后,转发信息问题迎刃而解。
转载于:https://blog.51cto.com/skyeagle/122202