docker - Stackdriver Log Agent - 与用于 Docker 的 Google Cloud Logging 驱动程序无关的日志级别

标签 docker google-cloud-platform stackdriver google-cloud-stackdriver

TL,博士; 使用 CloudLoggingHandler 进行 Stackdriver 日志记录 API 调用时会忽略日志级别从使用 Google Cloud Logging driver 的 Docker 容器.

细节;
从运行在 Google Compute Engine 上的 Docker 容器获取日志的推荐方法是使用 Stackdriver Logging Agent :

It is a best practice to run the Stackdriver Logging agent on all your VM instances. The agent runs under both Linux and Windows. To install the Stackdriver Logging agent, see Installing the Logging Agent.



以下步骤已成功完成:
  • 确保 Compute Engine 默认服务帐号具有 EditorLogs Writer角色。
  • 确保 VM 实例具有 Stackdriver Logging API(完整)的 Cloud API 访问范围
  • 安装并启动 Stackdriver Logging Agent。

  • 然后我复制了示例 CloudLoggingHandler example来自 Google 的 Cloud Platform Python docs .
    import logging
    import google.cloud.logging
    from google.cloud.logging.handlers import CloudLoggingHandler
    
    client = google.cloud.logging.Client()
    handler = CloudLoggingHandler(client)
    
    cloud_logger = logging.getLogger('cloudLogger')
    cloud_logger.setLevel(logging.INFO)
    cloud_logger.addHandler(handler)
    
    cloud_logger.error('bad news error')
    cloud_logger.warning('bad news warning')
    cloud_logger.info('bad news info')
    

    Docker 容器以 Google Cloud Logging Driver 启动标志( --log-driver=gcplogs ):
    sudo docker run --log-driver=gcplogs --name=server gcr.io/my-project/server:latest
    

    这有效,但是所有日志,无论级别如何,仅在查看“任何日志级别”时才在 Stackdriver 中可见。奇怪的是,消息本身包含级别 :
    2018-08-22 22:34:42.176 BST
    ERROR:bad news error
    
    2018-08-22 22:34:42.176 BST
    WARNING:bad news warning
    
    2018-08-22 22:34:42.176 BST
    WARNING:bad news info
    

    这使得无法在 Stackdriver UI 中按级别过滤:

    enter image description here

    在下面的屏幕截图中,每个日志条目的 LHS 上的所有图标都显示级别为 Any :

    enter image description here

    最佳答案

    据我所知,CloudLoggingHandler是一个独立的处理程序,将日志发送到 Global日志级别。与 gcplogs 集成驱动程序正确,请尝试使用 ContainerEngineHandler

    关于docker - Stackdriver Log Agent - 与用于 Docker 的 Google Cloud Logging 驱动程序无关的日志级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51975804/

    相关文章:

    postgresql - 如何将 init.sql 文件加载到 gitlab ci 中的 postgres 服务?

    docker - 适用于USB设备的Docker群

    docker - 在 Gitlab 运行器中的 Docker 容器内运行测试命令时出现问题

    python - 是否可以同时将 Pub/Sub 和 BigQuery 作为 Google Dataflow 中的输入?

    logging - .NetCore 日志在 GCP Stackdriver 中输出错误的严重性

    python-2.7 - 将 args 传递给 Dockerfile 中的 python 脚本

    google-cloud-platform - 为什么我的谷歌云平台显示流量?

    c# - Grpc.授权 : Could not load type 'Grpc.Core.CallCredentials' from assembly 'Grpc.Core.Api'

    ios - 如何将我的移动设备添加到我的 StackDriver 个人资料中?

    dialogflow-es - Dialogflow 日志在 stackdriver 中给我一个没有逗号的 JSON