我的问题是我的ECS日志(awslogs驱动程序)无法按预期工作。在Cloudwatch中,我仅看到服务器启动日志,而没有看到来自Apache(/var/log/apache2/error.log
和/var/log/apache2/access.log
)的有用日志
我有一个docker multicontainer设置,其中一个容器运行apache服务器,另一个容器运行PHP-FPM。我的容器在cloudwatch上的登录如下:
Apache容器:
23:35:39 *** Running /etc/my_init.d/02_init.sh...
23:35:39 Starting Apache
23:35:39 * Starting Apache httpd web server apache2
23:35:39 /usr/sbin/apache2ctl: 87: ulimit: error setting limit (Operation not permitted)
23:35:39 Setting ulimit failed. See README.Debian for more information.
23:35:40 *** Running /etc/rc.local...
23:35:40 *** Booting runit daemon...
23:35:40 *** Runit started as PID 225
23:35:40 Oct 25 22:35:40 apache-container syslog-ng[231]: syslog-ng starting up; version='3.5.6'
2019-10-26 00:17:01
Oct 25 23:17:01 apache-container CRON[947]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
...
07:35:16 tail: '/var/log/syslog' has been replaced; following new file
...
FPM容器:
...
10:25:23 172.x.x.x - 27/Okt/2019:09:25:23 +0000 "GET /app.php" 200
10:25:25 172.x.x.x - 27/Okt/2019:09:25:24 +0000 "GET /app.php" 200
...
我已经检查了各种论坛和在线资源。据我所知,我只需要将日志符号链接到STDOUT / STDERR,甚至更好地链接到/proc/self/fd/1
和/proc/self/fd/2
,如下所示:
ln -sf /dev/stdout /var/log/apache2/access.log
ln -sf /dev/stderr /var/log/apache2/error.log
我尝试通过.Dockerfile
命令并在运行时链接RUN
中的日志,但没有成功。在链接它们之前,我发现我的日志正确显示在日志文件中。我还尝试了在容器内部和外部进行echo "test stderr logs" >> /dev/stderr
或echo "test stdout logs" >> /dev/stdout
之类的操作,但是cloudwatch日志中没有显示任何内容。当我尝试docker logs MY_DOCKER_CONTAINER_ID
时,我得到:Error response from daemon: configured logging driver does not support reading
。
也许我在这里缺少一些基本知识。我看到syslog
在我的环境/基本映像中(也许我需要合并syslog和apache日志?),并且PHP-FPM容器记录了200的记录,但仅记录到app.php
想知道访问URL的确切路径。
答案 0 :(得分:0)
您需要在ECS使用的docker-compose中指定以使用cloudwatch日志记录驱动程序,如下所示:
version: '2'
services:
myapp:
build:
context: .
logging:
driver: awslogs
options:
awslogs-group: "/my/log/group"
awslogs-region: "us-west-2"
awslogs-stream-prefix: some-prefix
这应导致/ dev / stdout和/ dev / stderr出现在CloudWatch中。您可以在Docker page上找到有关日志记录驱动程序选项的更多信息。
答案 1 :(得分:0)
谢谢。如果我没记错的话,问题是我的所有输出都重定向到了syslog,并且syslog配置中有错误的配置。