解决rsyslog日志分发过滤问题

问题描述:

服务器B从远端接收来自服务器A的消息网关日志,按照配置要求,需要将这些日志按照消息标签分类写入不同的文件中。

例如有这样一条日志:

Sep 12 08:00:03 192.100.6.3 Monster-CMPP20MO[37518]: 20180912080002SMS0000999L00100000000cc515275,0,00,,,09120800018510260295,,,,xxxxxxxxxxx,,,1,xxxxxxxxxx,,,,,,,,,,,,0,6,DM302J,

我们希望可以按照“Monster-CMPP20MO”这样的消息标签来写入到monster-cmppmo.log文件中。

但是,按照以前的配置无法实现日志过滤的效果,服务器B会将接收到的所有日志全部写到每一个文件中。根本没有做分类处理。

解决办法:

首先加入模板

$template TraditionalFormat, "%timegenerated% %HOSTNAME% %syslogtag%%msg:::drop-last-lf%\n"

ps:drop-last-lf 表示写入所有日志

添加完模板后,需要配置一下将模板利用起来

if ($syslogtag startswith 'Monster-CMPP20MT')
then {
*.=info  /xxx/xxx/monster-cmppmt.log;TraditionalFormat
}
if ($syslogtag startswith 'Monster-MM7MT')
then {
*.=info  /xxx/xxx/monster-mm7mt.log;TraditionalFormat
}
......

重启rsyslog,解决。

posted @ 2018-10-09 15:04  你听不到  阅读(3400)  评论(0编辑  收藏  举报