docker - 将 docker 日志消息重定向到不同的 syslog 文件(由 logspout 转发)
问题描述
我已经设置了一个带有一些 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)?还是该消息具有误导性?
解决方案
您正在使用的旧语法需要一个格式为facility.priority的选择器,但设施集是固定的,不包含任意字符串。
例如,您需要一个作为选择器的遗留属性过滤器。它的形式为:property, [!]operation, "value"后跟动作。
所以你可以尝试类似
: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 列中启动选择器。
推荐阅读
- javascript - 如何在 redux-form 测试中实现必填字段验证?
- c - 为什么在 C 中向后迭代数组比向前迭代更快
- netlogo - 如何杀死 Netlogo 中超过补丁的海龟?
- cassandra - 如何计算cassandra中的频率
- vuejs2 - Vue-Select:将二维数组推送到:options
- sql - SQL Server 2016 中的 FOR JSON
- javascript - 如何在网上商店制作粘性标题
- java - Java 对象构造部分
- python - 如何将字符串合并到另一个字符串
- azure - 通过 Azure 数据工厂将数据从 Azure Functions 存储到 Azure SQL Server 的最佳实践