如何让 systemd 从 docker 镜像中获取服务日志?

如何让 systemd 从 docker 镜像中获取服务日志?

因此,正如标题所示,我有一个在 docker 中运行的容器化服务,并且我有一个 systemd 服务单元来自动管理该服务。除此之外,我还想将 docker 容器的日志发送到服务日志。有什么方法可以将命令中提供的日志docker logs SERVICE传输到 systemd 服务日志的输出吗?

我第一次尝试设置一个ExecStartPost调用docker logs -f SERVICE,但这似乎不起作用,因为重新启动服务会出现错误。我还发现此链接关于记录到 journald,我觉得这可能是正确的,但我没有看到提供明确的方法来管道化它具体来说对于有问题的 systemd 服务。

答案1

默认情况下,Docker 使用json 文件日志记录驱动程序。这会将数据写入磁盘上的平面 json 文件。如果继续使用它,您将需要一些外部工具来解析这些日志,这将是一个完全复杂的混乱,因此您绝对应该更改它。

你最初的评估是正确的:使用journald 日志驱动程序在您的场景中。您需要使用标签系统设置适当的SYSLOG_IDENTIFIER值。

tag optional    Specify template to set CONTAINER_TAG and SYSLOG_IDENTIFIER value in journald logs. Refer to log tag option documentation to customize the log tag format.

Docker 日志驱动程序列表如下:https://docs.docker.com/config/containers/logging/configure/#supported-logging-drivers

相关内容