systemd - 可以将日志重定向到文件和日志

问题描述 投票:0回答:1

我有一台在 AWS 中运行的 ubunut 机器,希望将 docker 守护程序日志传输到 AWS Cloudwatch。 默认情况下,docker 守护进程是通过 ubuntu 上的 systemd 启动的,并记录到日志中,我想将 docker 日志保留在日志中。

但是 aws-cloudwatch-logs-agent 不支持将服务日志从日志发送到 cloudwatch,因此我需要一个日志文件。

这就是为什么我想知道是否可以配置 systemd 服务来记录到文件到日志?

我可以使用以下方式登录到文件:

[Service]
StandardOutput=append:/var/log/dockerd.log
StandardError=append:/var/log/dockerd.log

但是现在日志出现在日志中......有什么想法吗?

systemd systemd-journald
1个回答
0
投票

将服务日志记录到日志(即默认设置),但有一个第二服务可以从日志日志创建文本文件日志。

  • 两个传统的syslog守护进程syslog-ng和rsyslog都支持直接从日志文件中提取消息;许多 Linux 发行版甚至预先配置它们以提供标准的 /var/log/syslog。

    # apt install syslog-ng
    

    syslog-ng 使用“system()”宏(它使用“systemd-journal()”驱动程序)来完成此操作; rsyslog 使用“imjournal”模块。

    如果您想将 dockerd 日志拆分到自己的文件中,请遵循 syslog-ng 文档。

  • Journald 还支持基于套接字的消息转发到传统的 syslog 守护进程(以上两者也支持这一点,但首选来自日志文件的拉取模式)。

    这是使用“ForwardSyslog=”激活的; syslog-ng 可以使用“systemd-syslog()”(这是 /run/systemd/journal/syslog 的宏)接收转发的消息,rsyslogd 可以使用常规的“imuxsock”。

  • 最后,运行

    journalctl --follow
    的自定义服务可能会完成这项工作:

    [Service]
    ExecStart=/bin/journalctl -a -u docker -f --cursor-file=/var/log/dockerd.cursor
    StandardOutput=append:/var/log/dockerd.log
    
© www.soinside.com 2019 - 2024. All rights reserved.