python - 用于 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
驱动程序文档并没有真正指定从哪里收集日志,但它确实提到驱动程序也应该在谷歌云平台/产品之外工作。
环境:
- Python 3.6.4(Alpine3.7 的官方 DockerHub 镜像)
- Docker-ce 18.03.0
- Ubuntu 17.10
- Stackdriver 高级层
解决方案
您可能需要根据您在 docker 命令中的选择将您的日志记录资源切换Global
到您正在记录的特定项目。Stackdriver 日志记录界面的该菜单中gcp-project
有一个选项。Google Project
推荐阅读
- c# - 将数据从设备套接字实时推送到 SAP 的策略
- javascript - 创建没有中间字符串的复杂 SVG
- ruby-on-rails - 使用 imagemagick 减少图像宽度和高度而不模糊
- c++ - How to use a struct pointer in a map?
- ios - Custom UIControl element with global state for all instances
- css - Styling material UI components
- c++ - How do I render a win32 window to an opengl texture?
- php - 将 IP 存储在数据库中以获取用户的活动日志
- java - Notification null when app closed
- node.js - Are non-stream WebSockets in Scala possible at all? Doesn't seem like it