kubernetes - 存储桶中的GCP堆栈驱动程序日志记录日志格式已从每个容器的文件夹更改为stdout\stderr

标签 kubernetes google-kubernetes-engine google-cloud-stackdriver google-cloud-logging

我有一个问题,类似于此处的描述:GKE kubernetes container stdout logs format changed

在旧版本的stackdriver中,我有1个带有过滤器的接收器,如下所示:

resource.type=container,
resource.namespace_id=[NAMESPACE_NAME] 
resource.pod_id=[POD_NAME]

并且日志很好地存储在存储桶中,如下所示:
logName=projects/[PROJECT-NAME]/logs/[CONTAINER-NAME]

...所以我有每个容器的文件夹和日志。

但是现在我将我的stackdriver logging + monitoring更新到了最新版本,现在我有2个文件夹stdout \ stderr,其中包含所有容器的所有日志!
logName=projects/[PROJECT-NAME]/logs/stdout
logName=projects/[PROJECT-NAME]/logs/stderr

来自许多容器的所有日志都存储在此单个文件夹中!这很不舒服=(

我已经在文档中阅读了此内容:https://cloud.google.com/monitoring/kubernetes-engine/migration#changes_in_log_entry_contents

The logName field might change. Stackdriver Kubernetes Engine Monitoring log entries use stdout or stderr in their log names whereas Legacy Stackdriver used a wider variety of names, including the container name. The container name is still available as a resource label.



...但是我找不到解决方案!请帮助我,如何使每个文件夹的容器记录下来,就像在旧版本的stackdriver中一样?

最佳答案

建议采取以下解决方法:

  • 为每个过滤器创建一个不同的接收器
    resource.labels.container_name
  • 将每个接收器导出到不同的位置

  • 注意:如果将每个单独的接收器配置为同一存储桶,则将合并日志。

    Google Issue Tracker上的更多详细信息

    关于kubernetes - 存储桶中的GCP堆栈驱动程序日志记录日志格式已从每个容器的文件夹更改为stdout\stderr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60177065/

    相关文章:

    kubernetes - Istio - TLS 路由的加权路由

    docker - 如何在Kubernetes集群中找到Pod之间的相互依赖关系?

    kubernetes - 从另一个容器复制 Kubernetes pod 内的文件

    kubernetes - 在 Kubernetes 内实现指标服务器时出现错误

    python - 使用 Python 的 Google Kubernetes Engine 中的 OpenCensus 错误

    windows - 无法在 Windows 的 stackdriver Monitoring 中查看内存使用情况

    python - 在 App Engine Standard python 中使用 Google Stackdriver Logging 时出错

    Postgresql WalReceiver 进程等待连接主机,无论 "connect_timeout"

    kubernetes - kubernetes 指标 "/metrics/resource/v1alpha1"和 "/metrics/cadvisor"端点之间的差异

    java - 为什么 Google 提供这么多客户端库?我应该将哪个用于 Stackdriver 日志记录?