ECS日志记录(awslogs驱动程序)仅将apache服务器启动日志记录到cloudwatch,没有error.log和没有access.log

时间:2019-10-28 10:20:30

标签: apache docker logging amazon-ecs amazon-cloudwatch

我的问题是我的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/stderrecho "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的确切路径。

2 个答案:

答案 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配置中有错误的配置。