Как добавить конфигурацию в агент ведения журнала из контейнера Docker? - PullRequest
0 голосов
/ 06 мая 2019

Я пытаюсь запустить докер-контейнер на Compute Engine, все работает нормально, мое PHP-приложение корректно возвращает все данные, но я хочу увеличить детализацию журнала.

На данный момент я добавил две конфигурациифайлы для fluentd внутри конфигурации контейнера dir:

  • Этот для nginx:
<source>
  @type tail
  format nginx
  path /var/log/feedbacks/nginx-access.log
  pos_file /var/lib/google-fluentd/pos/nginx-access.pos
  read_from_head true
  tag nginx-access
</source>

<source>
  @type tail
  format none
  path /var/log/feedbacks/nginx-error.log
  pos_file /var/lib/google-fluentd/pos/nginx-error.pos
  read_from_head true
  tag nginx-error
</source>
  • И этот для вывода журнала PHP:
<source>
  @type tail
  format /^\[(?<time>[\d\-]+ [\d\:]+)\] (?<channel>.+)\.(?<level>(DEBUG|INFO|NOTICE|WARNING|ERROR|CRITICAL|ALERT|EMERGENCY))\: (?<message>[^\{\}]*) (?<context>(\{.+\})|(\[.*\])) (?<extra>(\{.+\})|(\[.*\]))\s*$/
  path /var/log/feedbacks/structured.log
  pos_file /var/lib/google-fluentd/pos/feedbacks.pos
  read_from_head true
  tag feedbacks
</source>

Я смонтировал эти 2 файла конфигурации следующим образом с соответствующими файлами журналов:

  • Путь к контейнеру: /usr/src/app/var/logs/, путь к хосту: /var/log/feedbacks/, режим: r/ w
  • путь контейнера: /usr/src/app/docker/runnable/fluentd/, путь хоста: /etc/google-fluentd/config.d/, режим: r / w

Но когда я / bin / bash обращаюсь к этим каталогам внутри stackdriver-logging-agent внутри ничего нет, может быть, я что-то упустил ...

Спасибо за помощь!

1 Ответ

0 голосов
/ 10 мая 2019

stackdriver-logging-agent читает журналы контейнера через эквивалент docker logs [container].Это обеспечивает согласованный API для процессов в хост-ОС для сбора журналов контейнеров.

По умолчанию контейнер stdout | stderr отправляется на docker logs, и именно этот поток stackdriver-logging-agent собирает и отправляет службе Stackdriver.

IIUC правильно, вы бынеобходимо убедиться, что ваше PHP-приложение генерирует более богатые журналы и что они отправляются в stdout | stderr.

Если вы должны использовать стандартный образ докера Nginx, он делает это:

lrwxrwxrwx 1 root root 11 May  8 03:01 access.log -> /dev/stdout
lrwxrwxrwx 1 root root 11 May  8 03:01 error.log -> /dev/stderr

См. Документацию Docker здесь:

https://docs.docker.com/config/containers/logging/

Мне не удалось найти хорошее объяснение этому для Container OS на сайте Google.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...