首页 > 解决方案 > 用于 docker 的 Google Cloud 日志记录驱动程序不收集日志

问题描述

我正在运行一个带有 Python 应用程序的 Docker 容器,该应用程序stdout使用 Python 标准logging库将日志写入。该容器未托管在任何 Google Cloud 产品中,而是托管在我自己的机器上。

我将 docker 配置为使用本指南和官方驱动程序文档gcplogs中描述的驱动程序。

docker 容器运行没有问题。但是,没有收集任何日志,因为我在 Stackdriver 日志查看器上看不到任何内容,除了在每次执行 docker 容器时产生的一些奇怪的“ping”日志条目。

在此处输入图像描述

python 记录器通过以下方式配置dictConfig

'console': {
    'level': 'DEBUG',
    'class': 'logging.StreamHandler',
    'formatter': 'simple',
    'stream': 'ext://sys.stdout'
},

使用以下命令运行 docker 容器:

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

驱动程序文档并没有真正指定从哪里收集日志,但它确实提到驱动程序也应该在谷歌云平台/产品之外工作。

环境:

标签: pythondockergoogle-cloud-platformgoogle-cloud-logging

解决方案


您可能需要根据您在 docker 命令中的选择将您的日志记录资源切换Global到您正在记录的特定项目。Stackdriver 日志记录界面的该菜单中gcp-project有一个选项。Google Project


推荐阅读