rsyslog默认只可以传送系统的日志,比如DHCP,cron等,现在要传送一个服务的日志到远端的rsyslog服务器,该怎么实现呢?
解决方法:要使用rsyslog的imfile模块。
参考官方url:http://www.rsyslog.com/doc/v8-stable/configuration/modules/imfile.html
参考网上url:http://www.tuicool.com/articles/Jv2eUvn
rsyslog的配置文件(过滤掉了注释的内容):
[root@pf ~]# cat /etc/rsyslog.conf | egrep -v "#|^$"
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$IncludeConfig /etc/rsyslog.d/*.conf
*.info;mail.none;authpriv.none;cron.none /var/log/messages
authpriv.* /var/log/secure
mail.* -/var/log/maillog
cron.* /var/log/cron
*.emerg *
uucp,news.crit /var/log/spooler
local7.* /var/log/boot.log
$ModLoad imfile
$InputFileName /usr/local/pf/logs/packetfence.log
$InputFileTag packetfence:
$InputFileSeverity info
$InputFileStateFile stat-packetfence ##文件名变了,这个StateFile标志必须变,否则无法传输
$InputFileFacility local5
$InputFilePollInterval 1
$InputFilePersistStateInterval 1
$InputRunFileMonitor
local5.* @10.64.41.223:514
[root@pf ~]#
修改完配置文件,重启服务
[root@pf ~]# /etc/init.d/rsyslog restart
Shutting down system logger: [ OK ]
Starting system logger: [ OK ]
[root@pf ~]#
红色字体是为了传送/usr/local/pf/logs/packetfence.log到10.64.41.223:514而新加的配置。
以上是imfile模块旧版本(rsyslog v5)的配置语法,下面是imfile模块新版本(rsyslog v8)配置的语法(仅供参考):
###bak wifi log to syslog-server,add by wuxiaoyu
#module(load="imfile" PollingInterval="5")
#input(type="imfile"
# File="/usr/local/pf/logs/packetfence.log"
# Tag="packetfence"
# Severity="error"
# Facility="local5")
rsylog遇到的问题:
1,报错:rhel6 rsyslogd-2177: imuxsock begins to drop messages from pid 24542 due to rate-limiting 怎么解决?
编辑/etc/rsyslog.conf,紧接着$ModLoad imuxsock这行后面,加入如下2行:
$IMUXSockRateLimitInterval 0
$SystemLogRateLimitInterval 0
保存退出,然后重启rsyslog:
service rsyslog restart
解决!
2,/var/log/message报错。rsyslog被自动重启
Oct 11 03:32:18 pf rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="16441" x-info="http://www.rsyslog.com"] rsyslogd was HUPed
解决方法:
[root@cobber logrotate.d]# cat /etc/logrotate.d/syslog
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/n