我有一台在 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
但是现在日志出现在日志中......有什么想法吗?
将服务日志记录到日志(即默认设置),但有一个第二服务可以从日志日志创建文本文件日志。
两个传统的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