将journald元数据写入rsyslog

时间:2016-08-30 22:05:26

标签: logging docker systemd rsyslog

我有一个设置,其中docker容器使用journald日志驱动程序来编写日志。当前日志中的日志行将转发到主机上运行的rsyslog,但syslog行上的应用程序名称显示为dockerd

作为一种解决方法,我想将日志元数据中的CONTAINER_NAME字段写入syslog中出现的行,这样我就可以确定哪个容器在主机之后写了哪一行。 syslog已发送到syslog聚合服务器。

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

我认为最接近你可以得到图像名称。您可以添加日志标记以在日志中显示图像名称。 v1.11.0中添加了此功能。例如:

docker run --log-driver=journald --log-opt tag="{{.ImageName}}

也看看log tag docs。希望这会有所帮助。

答案 1 :(得分:0)

我设法把它放在rsyslog.conf

if ( $!CONTAINER_TAG == "mycontainer" ) then { action(type="omfile" file="/var/log/mycontainer.log") stop } 我可以测试它是否适用于此 docker run --log-driver=journald --log-opt tag="mycontainer" centos:latest echo Pierre7 我在log / var / log / mycontainer文件和日志中得到我的日志,我可以找到

journalctl --unit docker CONTAINER_TAG=mycontainer 很难找到信息,这是redhat文档中唯一记录的地方:https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/s1-structured_logging_with_rsyslog.html

我的用例是,我希望日志能够获得它带来的所有好处,但是人们要求拥有普通文件的支持。我们还将使用splunkforwarder来使用文件。