首页 > 解决方案 > 如何在 Stackdriver Logging 上禁用来自 k8s_cluster 的日志?

问题描述

我们有一个 Google Coud Platform 项目,我们使用集群来部署我们的应用程序,我们在本月的账单中注意到 Stackdriver Logging 增加了太多,因此我们开始创建排除项。

我们排除了日志resource.type="container"没有任何问题, 但我们无法做到 resource.type="k8s_cluster"

过滤以创建我们想要的排除:

resource.type="k8s_cluster"
protoPayload.serviceName="k8s.io"
protoPayload.resourceName="app.k8s.io/v1beta1/namespaces/default/applications/prometheus-1"

奇怪的是,除非我们过滤,否则Stackdriver Monitoring 不会从我们的 gcp 项目(https://console.cloud.google.com/logs/usage?project=xxxx )中检测到任何数据(摄取的 0B)它使用日志查看器,然后我们可以看到日志。

Grafana 能够使用 Stackdriver Datasource 检测数据,您可以在此处查看

标签: loggingkubernetesgoogle-cloud-platformgoogle-cloud-stackdriver

解决方案


过滤器包含始终启用的系统事件resource.type="k8s_cluster"的审核日志,因此,它们不会从 Stackdriver Logging 中排除,不像只有容器 stdout 和 stderr 日志记录。resource.type="container"

此外,您可以通过将“@type”条件添加到 Stackdriver 过滤器来确定哪些日志属于审核日志流:

resource.type="k8s_cluster"
protoPayload.serviceName="k8s.io"
protoPayload.resourceName="app.k8s.io/v1beta1/namespaces/default/applications/prometheus-1"
protoPayload."@type"="type.googleapis.com/google.cloud.audit.AuditLog"

最后,Grafana 能够显示这些基于日志的指标,因为它们是通过 Datasource 导出的,而不是进入 Stackdriver。


推荐阅读