2

stdoutPython 標準ライブラリを使用してログを書き込む Python アプリケーションで Docker コンテナを実行していますlogging。コンテナは Google Cloud プロダクトではなく、自分のマシンでホストされています。

このガイドと公式のドライバー ドキュメントgcplogsで説明されているように、ドライバーを使用するように docker を構成しました。

docker コンテナーは問題なく実行されます。ただし、Docker コンテナの実行ごとに生成されるいくつかの奇妙な「ping」ログ エントリ以外は、Stackdriver ログ ビューアに何も表示されないため、ログは収集されません。

ここに画像の説明を入力

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

ドライバーのドキュメントでは、ログがどこから収集されるかは実際には指定されていませんが、ドライバーは Google クラウド プラットフォーム/製品の外部でも動作する必要があると記載されています。

環境:

  • Python 3.6.4 (Alpine3.7 の公式 DockerHub イメージ)
  • Docker-ce 18.03.0
  • Ubuntu 17.10
  • Stackdriver プレミアム ティア
4

1 に答える 1

0

おそらく、ログ リソースを、docker コマンドのGlobalオプションごとにログを記録している特定のプロジェクトに切り替える必要があります。Stackdriver Logging UI のそのメニューにオプションgcp-projectがあります。Google Project

于 2019-08-01T22:21:52.160 に答える