Я запускаю контейнер Docker с приложением Python, которое записывает журналы в stdout
с помощью стандартной библиотеки Python logging
. Контейнер размещен не в каком-либо продукте Google Cloud, а находится на моем собственном компьютере.
Я настроил докер для использования драйвера gcplogs
, как описано в этом руководстве и официальные документы по драйверам.
Контейнер докера работает без проблем. Однако журналы не собираются, потому что я не вижу ничего в средстве просмотра журналов Stackdriver, кроме некоторых странных записей журнала «ping», которые создаются при каждом запуске контейнера докеров.
Регистратор python настраивается через dictConfig
:
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'simple',
'stream': 'ext://sys.stdout'
},
Контейнер докера запускается с помощью этой команды:
docker run --env-file `pwd`/.env \
--label app=oncrm \
--log-driver=gcplogs \
--log-opt gcp-meta-name= host_name\
--log-opt gcp-project=cloud_project_id \
--log-opt labels=app \
--name oncrm \
--net host \
--rm \
-v `pwd`/data:/code/data \
-v `pwd`/logs:/code/logs \
docker_image sh update_subs.sh
В документации к драйверу на самом деле не указано, откуда собирается журнал, но упоминается, что драйвер также должен работать за пределами Google Cloud Platform / Products.
Среда:
- Python 3.6.4 (официальный образ DockerHub для Alpine3.7)
- Докер-ce 18.03.0
- Ubuntu 17.10
- Уровень Stackdriver Premium
GOOGLE_APPLICATION_CREDENTIALS
, который является единственным методом аутентификации, поддерживаемым драйвером. Перед установкой этого env var у меня были сообщения об ошибках аутентификации, но это уже не так. - person Layo   schedule 26.04.2018