【问题标题】:Stackdriver Node.js Logging not showing upStackdriver Node.js 日志记录未显示
【发布时间】:2018-07-29 06:40:25
【问题描述】:

我有一个 Node.js 应用程序,在 Docker 容器内运行并使用 Stackdriver 记录事件。

它是一个 Node.Js 应用,运行 Express.js 和 Winston 以进行日志记录和使用 StackDriverTransport。

当我在本地运行此容器时,所有内容都会正确记录并显示在云控制台中。当我在 GCE VM 中使用相同的环境变量运行同一个容器时,日志不会显示。

【问题讨论】:

    标签: express winston stackdriver google-cloud-stackdriver


    【解决方案1】:

    你所说的本地是什么意思?您是在 Cloud Shell 上运行容器还是在实例上运行它?请记住,如果您创建的容器或实例必须执行需要权限的操作(例如 Stackdriver 日志记录客户端库)并运行它,如果该实例没有具有该角色/权限的 service account,请设置它不会工作。

    Yu 提到您使用相同的环境变量,我认为其中一个环境变量指向您的 json 密钥文件。密钥文件是否存在于实例的该路径中?

    Winston documentation看来,您需要为服务帐户指定密钥文件位置:

      const winston = require('winston');
      const Stackdriver = require('@google-cloud/logging-winston');
      winston.add(Stackdriver, {
        projectId: 'your-project-id',
        keyFilename: '/path/to/keyfile.json'
      });
    

    您是否检查过这是否是使用具有日志记录角色的服务帐户的密钥定义的?

    【讨论】:

    • 本地,我的意思是在我的笔记本电脑上运行它,无论是在容器内部还是外部。在 GCE VM 实例中运行容器时会发生故障。实际上,我发现即使是 logging-winston 示例也不起作用,而 Google 的云日志库可以工作。我调试了 logging-winston,看起来我是否提供凭据并不重要。该库通过调用元数据服务来检查它在哪个环境上运行,并发现它在 GCE 上运行。服务帐户具有日志记录角色,可以与日志库一起使用。
    • 还没有,但是看看 github 我不是唯一一个有问题的人:github.com/googleapis/nodejs-logging/issues/53。当他们将更新推送到库时,我会重试。
    猜你喜欢
    • 1970-01-01
    • 2019-05-16
    • 2020-09-14
    • 2019-09-01
    • 2019-07-26
    • 1970-01-01
    • 2019-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多