问题标签 [google-cloud-logging]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
612 浏览

python - 用于 docker 的 Google Cloud 日志记录驱动程序不收集日志

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

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

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

在此处输入图像描述

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

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

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

环境:

  • Python 3.6.4(Alpine3.7 的官方 DockerHub 镜像)
  • Docker-ce 18.03.0
  • Ubuntu 17.10
  • Stackdriver 高级层
0 投票
2 回答
77 浏览

logging - Stackdriver 日志中的默认标记

如何将日志发送到 Stackdriver 并决定在主线上显示哪些字段,如嵌入图像中的浏览器版本、http 方法、响应状态代码等?

谢谢

0 投票
1 回答
130 浏览

google-cloud-platform - Google Cloud CDN 从日志中获取边缘位置

目前,Google CDN 具有新的日志记录功能 ( https://cloud.google.com/cdn/docs/logging?hl=en )。

与 AWS 的 Cloudfront 在其访问日志中包含“x-edge-location”字段相比,我无法确定谷歌云上的流量目标。

是否有可能可靠地(无 geoip)找出谷歌 CDN 中特定请求的使用边缘位置。这将非常相关,因为它与 CDN 流量的各种计费/计费密切相关。

0 投票
1 回答
293 浏览

python-3.x - 多处理中的 Google Stackdriver 不起作用

我使用 Flask 构建了一个 API 端点,其中数据是从其他 API 收集和组合的。为了有效地做到这一点,我使用多进程。为了保持控制,我想使用 Google Stackdriver 记录所有步骤。

出于某种原因,在我的多进程环境中使用 Google Stackdriver 时,我不断收到错误消息。我在 MWE 中收到的错误和后来的警告如下:

最小的工作示例(为简单起见,不包括 Flask/API):

为什么不能将多处理与 Google Stackdriver 结合起来?我应该调整什么(我对什么理解不好)才能完成这项工作?

0 投票
5 回答
2338 浏览

google-bigquery - 使用 Python 查询 GCP Stackdriver 日志

我正在使用 Python3 向 Stackdriver 查询 GCP 日志。不幸的是,包含重要数据的日志条目以“NoneType”而不是“dict”或“str”的形式返回给我。结果“entry.payload”是“None”类型,“entry.payload_pb”有我想要的数据,但它是乱码。

有没有办法让 Stackdriver 以干净的格式返回这些数据,或者有什么方法可以解析它?如果没有,有没有办法我应该查询比我正在做的更好并产生干净数据的数据?

我的代码看起来像这样:

“entry.payload_pb”数据总是这样开始:

0 投票
2 回答
607 浏览

ruby-on-rails - Stackdriver 在 GKE 中的 Rails 应用程序中登录不起作用

Ruby 2.3.6、Rails 4.2.6、Stackdriver 0.15.0

按照https://cloud.google.com/logging/docs/setup/ruby上的说明,我已将stackdrivergem 添加到Gemfile. 据我所知,我不需要做任何其他事情。

但是,我没有在 Stackdriver 中看到来自 Rails 的任何日志消息。我什至尝试exec在容器中运行一个 shell,运行bundle exec rails console,并使用Rails.logger.error "this is a log message".

config.google_cloud.use_logging = trueconfig.log_level = :debug, FWIW。

更新:我仔细查看了记录器实例pp Rails.logger,它包含以下内容:

我的容器在staging命名空间中运行,这可以解释为什么我没有看到日志消息。当我查看命名空间中的 Stackdriver 日志查看器时default,瞧,有日志。不幸的是,发送所有消息对default我没有任何好处,因为我的应用程序在两个命名空间中运行,我需要能够区分它们。

我尝试添加其他配置:

现在Rails.logger.error "this is a log message"没有出现在任何地方

更新 2:经过大量网络搜索后,我设法找到了https://github.com/GoogleCloudPlatform/google-cloud-ruby/issues/2025,这表明发送日志消息的命名空间由环境变量,并且说 env var 没有在 GKE 容器中自动设置。(据说它已由https://github.com/GoogleCloudPlatform/google-cloud-ruby/pull/2071解决,但我认为这还没有生效,至少不在我的集群中。)我会尝试强制env var 在我的部署文件中,如果可行,我会将其最后一部分转换为答案。

0 投票
1 回答
430 浏览

node.js - 从 Google Logging API 解码 protoPayload

我想阅读 BigQuery 日志条目以进行一些分析。但我似乎无法protoPayload.value解码。我试过弄乱google-proto-filesandprotocol-buffers包,但我想我在这里遗漏了一些非常明显的东西......

我确实收到了带有 protoPayloads 的消息,但是在尝试解码消息时收到的错误是:

protoPayload实际问题:解码 a 中的字段的正确方法是LogEntry什么?

谢谢!

0 投票
1 回答
536 浏览

java - 如何增强标准环境的日志条目?

我有一个在 Google App Engine 标准环境上运行的 Java 应用程序。

我可以从中登录(使用 JUL)。在标准环境中,来自单个 Web 请求的所有应用程序日志行都被分组到request_log. 一切运行良好

但是,现在我需要将自定义标签添加到请求的日志条目中。例如,与之关联的用户 ID 是什么。

Stackdriver 文档 ( https://cloud.google.com/logging/docs/setup/java ) 提供了如何使用自定义标签“增强”日志条目的示例。但是,该页面似乎不适用于标准环境。

是否可以将标签(或与除应用程序日志行之外的日志条目相关的任何信息)添加到日志条目request_log以及如何添加?如果没有,有什么替代方案?

0 投票
3 回答
4611 浏览

java - 如何从代码中获取跟踪 ID?

我在 Google App Engine 标准环境中运行 Java 应用程序。

查看日志(特别是request_log),我可以看到几个有趣的 ID,例如每个请求的trace_id和。request_id

几个问题:

  • 它们有何不同?它们是独一无二的吗?
  • 如何在应用程序代码中获取它们(针对当前请求)?我想将它们记录到不同的 Stackdriver 数据集并能够关联数据
0 投票
2 回答
1168 浏览

node.js - Google App Engine 为什么有些日志没有显示?

在 Google App Engine 柔性环境中,许多日志正在跳过,并且没有显示在日志记录控制台中,而且它一直在发生,我正在Stackdriver LoggingGoogle Cloud 仪表板上的部分进行检查,我正在使用的日志console.log()正在被跳过,但mongoose查询日志是被打印出来。

另外,现在有时我的日志console.logs会显示,但有时不会显示,但以前每次都会显示。为什么现在每次都不起作用?

谁能告诉我为什么会这样?

谢谢你

编辑-

我已经添加了调试点,但问题是我的调试点被执行了,但是为什么它们没有被打印在日志中?

另外,我在计算引擎上使用了相同的代码,但是所有日志都被打印出来了,但是在 App Engine 中,对于某些情况,它们每时每刻都丢失了吗?