У меня проблема с тем, что мои журналы ECS (драйвер awslogs) не работают должным образом. В Cloudwatch я вижу только журналы запуска сервера, а не полезные журналы от Apache (/var/log/apache2/error.log
& /var/log/apache2/access.log
)
У меня есть многоконтейнерная настройка докера с одним контейнером, на котором работает сервер Apache, а другимКонтейнер под управлением PHP-FPM. Журналы моего контейнера в cloudwatch выглядят так:
Apache-Container:
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-Container:
...
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-адресу, к которому осуществляется доступ.