Ведение журнала ECS (драйвер awslogs) только ведение журналов запуска сервера apache в cloudwatch, без error.log и без access.log - PullRequest
0 голосов
/ 28 октября 2019

У меня проблема с тем, что мои журналы 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-адресу, к которому осуществляется доступ.

...