问题标签 [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.
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 高级层
logging - Stackdriver 日志中的默认标记
如何将日志发送到 Stackdriver 并决定在主线上显示哪些字段,如嵌入图像中的浏览器版本、http 方法、响应状态代码等?
谢谢
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 流量的各种计费/计费密切相关。
python-3.x - 多处理中的 Google Stackdriver 不起作用
我使用 Flask 构建了一个 API 端点,其中数据是从其他 API 收集和组合的。为了有效地做到这一点,我使用多进程。为了保持控制,我想使用 Google Stackdriver 记录所有步骤。
出于某种原因,在我的多进程环境中使用 Google Stackdriver 时,我不断收到错误消息。我在 MWE 中收到的错误和后来的警告如下:
最小的工作示例(为简单起见,不包括 Flask/API):
为什么不能将多处理与 Google Stackdriver 结合起来?我应该调整什么(我对什么理解不好)才能完成这项工作?
google-bigquery - 使用 Python 查询 GCP Stackdriver 日志
我正在使用 Python3 向 Stackdriver 查询 GCP 日志。不幸的是,包含重要数据的日志条目以“NoneType”而不是“dict”或“str”的形式返回给我。结果“entry.payload”是“None”类型,“entry.payload_pb”有我想要的数据,但它是乱码。
有没有办法让 Stackdriver 以干净的格式返回这些数据,或者有什么方法可以解析它?如果没有,有没有办法我应该查询比我正在做的更好并产生干净数据的数据?
我的代码看起来像这样:
“entry.payload_pb”数据总是这样开始:
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上的说明,我已将stackdriver
gem 添加到Gemfile
. 据我所知,我不需要做任何其他事情。
但是,我没有在 Stackdriver 中看到来自 Rails 的任何日志消息。我什至尝试exec
在容器中运行一个 shell,运行bundle exec rails console
,并使用Rails.logger.error "this is a log message"
.
config.google_cloud.use_logging = true
和config.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 在我的部署文件中,如果可行,我会将其最后一部分转换为答案。
node.js - 从 Google Logging API 解码 protoPayload
我想阅读 BigQuery 日志条目以进行一些分析。但我似乎无法protoPayload.value
解码。我试过弄乱google-proto-files
andprotocol-buffers
包,但我想我在这里遗漏了一些非常明显的东西......
我确实收到了带有 protoPayloads 的消息,但是在尝试解码消息时收到的错误是:
protoPayload
实际问题:解码 a 中的字段的正确方法是LogEntry
什么?
谢谢!
java - 如何增强标准环境的日志条目?
我有一个在 Google App Engine 标准环境上运行的 Java 应用程序。
我可以从中登录(使用 JUL)。在标准环境中,来自单个 Web 请求的所有应用程序日志行都被分组到request_log
. 一切运行良好
但是,现在我需要将自定义标签添加到请求的日志条目中。例如,与之关联的用户 ID 是什么。
Stackdriver 文档 ( https://cloud.google.com/logging/docs/setup/java ) 提供了如何使用自定义标签“增强”日志条目的示例。但是,该页面似乎不适用于标准环境。
是否可以将标签(或与除应用程序日志行之外的日志条目相关的任何信息)添加到日志条目request_log
以及如何添加?如果没有,有什么替代方案?
java - 如何从代码中获取跟踪 ID?
我在 Google App Engine 标准环境中运行 Java 应用程序。
查看日志(特别是request_log
),我可以看到几个有趣的 ID,例如每个请求的trace_id
和。request_id
几个问题:
- 它们有何不同?它们是独一无二的吗?
- 如何在应用程序代码中获取它们(针对当前请求)?我想将它们记录到不同的 Stackdriver 数据集并能够关联数据
node.js - Google App Engine 为什么有些日志没有显示?
在 Google App Engine 柔性环境中,许多日志正在跳过,并且没有显示在日志记录控制台中,而且它一直在发生,我正在Stackdriver Logging
Google Cloud 仪表板上的部分进行检查,我正在使用的日志console.log()
正在被跳过,但mongoose
查询日志是被打印出来。
另外,现在有时我的日志console.logs
会显示,但有时不会显示,但以前每次都会显示。为什么现在每次都不起作用?
谁能告诉我为什么会这样?
谢谢你
编辑-
我已经添加了调试点,但问题是我的调试点被执行了,但是为什么它们没有被打印在日志中?
另外,我在计算引擎上使用了相同的代码,但是所有日志都被打印出来了,但是在 App Engine 中,对于某些情况,它们每时每刻都丢失了吗?