将docker日志消息重定向到不同的syslog文件中(logspout向前移动)

时间:2019-05-09 11:16:40

标签: docker logging rsyslog

我已经用一些docker容器设置了一个主机,其中logspout用于将所有日志转发到syslog:

docker run --name="logspout" -d \
  --restart=unless-stopped \
  --volume=/var/run/docker.sock:/var/run/docker.sock \
  --log-opt tag="logspout" \
  gliderlabs/logspout \
  syslog://host-01.example.com:514

所有日志都在/ var / log / syslog

由于它变得混乱,我现在想将它们拆分成每个容器的文件。

当我将rsyslog配置为使用其他文件时,如下所示:

munin-server.*                  /var/log/munin.log

我在系统日志中收到以下消息:

May  9 12:44:39 docker-host-01 rsyslogd: [origin software="rsyslogd" swVersion="8.16.0" x-pid="13893" x-info="http://www.rsyslog.com"] start
May  9 12:44:39 docker-host-01 rsyslogd-2222: command 'KLogPermitNonKernelFacility' is currently not permitted - did you already set it via a RainerScript command (v6+ config)? [v8.16.0 try http://www.rsyslog.com/e/2222 ]
May  9 12:44:39 docker-host-01 rsyslogd-2184: action 'munin-server' treated as ':omusrmsg:munin-server' - please use ':omusrmsg:munin-server' syntax instead, 'munin-server' will not be supported in the future [v8.16.0 try http://www.rsyslog.com/e/2184 ]
May  9 12:44:39 docker-host-01 rsyslogd-3000: user name 'munin-se...' too long - ignored [v8.16.0]
May  9 12:44:39 docker-host-01 rsyslogd-2207: error during parsing file /etc/rsyslog.d/40-default.conf, on or before line 5: warnings occured in file '/etc/rsyslog.d/40-default.conf' around line 5 [v8.16.0 try http://www.rsyslog.com/e/2207 ]

是否可以通过某种方式更改名称(例如 munin-server )?还是该消息具有误导性?

1 个答案:

答案 0 :(得分:0)

您使用的旧式语法期望selector的形式为 facility.priority ,但是设施集是固定的,并且不包含任意字符串。

您需要的是例如旧式property filter作为选择器。它的形式为:属性,[!]操作,“值” ,后跟操作。

所以您可以尝试类似的

:tag, isequal, "logspout"       /var/log/munin.log

如果您的选项-log-opt tag="logspout"可以设置syslog标签属性,或者

:msg, contains, "munin-server"    /var/log/munin.log

:programname, startswith, "munin-server"    /var/log/munin.log

取决于此字符串在记录的项目中出现的位置。确保在第1列中启动选择器。