在传输过程中TCP虽然比UDP可靠,但是是明文传输,Rsyslog提供了一个比TCP更可靠的传输,RELP。RELP传输,不会丢失信息,但只在rsyslogd 3.15.0及以上版本中可用。

使用RELP需要两部,开启omrelp模块,在传输时将TCP的@,替换成“:omrelp:”(黄颜色部分)

1.安装RELP:

yum install -y rsyslog-relp

2.用法:

*.* :omrelp:server:port

例子:

*.* :omrelp:192.168.0.1:514


vi /etc/rsyslog.d/ssh-log.conf
# rsyslog v5 configuration file
# For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html
# If you experience problems, see http://www.rsyslog.com/doc/troubleshoot.html
#### MODULES ####
### 注意 ###
#配置文件中的中文注释为方便初学者,并非官方提供,中文注释可能会引起奇怪的问题。
#建议:在使用中删除所有的中文注释,如需注释可以用英文(实在不行就拼音)

#装载imfile模块
$ModLoad imfile

#可靠的RELP协议输出模块(防止信息丢失)
$ModLoad omrelp

#检查日志文件间隔(秒)
$InputFilePollInterval 1

#指定日志文件的拥有者
$FileOwner root

# 使用自定义的格式
$ActionFileDefaultTemplate myformat

#状态文件保存路径,文件被用来记录扫描日志位置等信息。
#在测试中服务器收集不到日志,是因为被扫描过的文档不会再次上传,可以清空该目录缓存
$WorkDirectory /var/spool/rsyslog

# 定义队列文件名
#$ActionQueueFileName relpact

# 重试次数, -1 表示无限重试 
#$ActionResumeRetryCount -1

# rsyslog关闭时将队列内容存盘,防止数据丢失 
#$ActionQueueSaveOnShutdown on
$PrivDropToGroup root

##日志格式模板:
$template BiglogFormatTomcat,"%msg%\n"

## Tomcat的catalina.out路径,根据实际情况修改:
#读取日志文件
$InputFileName /var/log/ssh.log
#写入日志附加标签字符串
$InputFileTag ssh-log
#日志类型,local5必须和日志收集服务器里过滤器facility(local5)里local5名字一样。
$InputFileFacility local5 
#定义记录偏移量数据文件名
$InputFileStateFile stat-ssh-log
#日志等级
$InputFileSeverity info
#回写偏移量数据到文件间隔时间(秒)
$InputFilePersistStateInterval 1
#激活读取,可以设置多组日志读取,每组结束时设置本参数。以示生效。
$InputRunFileMonitor
#提交日志到不同服务器时单独在此指定服务器IP:port,
#如都提交在同一服务器只需在rsyslog.conf里指定一次即可
# local5.*  :omrelp:192.168.1.251:514

3.重启rsyslog服务生效

#service rsyslog restart


参考文章:

http://blog.163.com/bull_linux/blog/static/2138811422013101494729839/

http://kumu-linux.github.io/blog/2013/08/28/rsyslog-remote/