Ubuntu+AWS环境下配置Docker daemon同时日志到文件与journald
解决方案
要让systemd管理的Docker daemon同时将日志输出到journald和指定文件,只需修改systemd服务配置,使用journal+append:格式的输出目标即可,具体步骤如下:
创建Docker服务的自定义配置文件
避免修改默认的docker.service文件,建议在/etc/systemd/system/docker.service.d/目录下创建一个override配置文件(如果目录不存在则先创建):sudo mkdir -p /etc/systemd/system/docker.service.d sudo nano /etc/systemd/system/docker.service.d/override.conf在文件中写入以下配置:
[Service] StandardOutput=journal+append:/var/log/dockerd.log StandardError=journal+append:/var/log/dockerd.log这里的
journal+append表示日志会同时发送到journald,并且追加写入指定的文件路径。重载systemd配置并重启Docker
让systemd加载新的配置,然后重启Docker服务使配置生效:sudo systemctl daemon-reload sudo systemctl restart docker验证日志输出
- 检查journald中的Docker日志:
sudo journalctl -u docker --since "1 minute ago" - 检查文件中的日志:
cat /var/log/dockerd.log
确认两种方式都能看到Docker daemon的最新日志。
- 检查journald中的Docker日志:
配置CloudWatch Logs Agent监控日志文件
编辑CloudWatch Agent的配置文件/etc/awslogs/awslogs.conf,添加对dockerd.log的监控规则:[docker-daemon-log] file = /var/log/dockerd.log log_group_name = /aws/ec2/ubuntu/docker-daemon log_stream_name = {instance_id}/docker-daemon datetime_format = %Y-%m-%dT%H:%M:%S.%fZ保存后重启CloudWatch Agent:
sudo systemctl restart awslogs这样日志文件的内容就会自动上传到指定的CloudWatch日志组中。
内容的提问来源于stack exchange,提问作者Nathan
相关产品推荐
相关产品推荐

