如何在 Stackdriver Logging 上禁用来自 k8s_cluster 的日志?

How to disable logs from k8s_cluster on Stackdriver Logging?

我们有一个 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 没有从那里检测到任何数据 (0B 摄取),也没有从我们的 gcp 项目 (https://console.cloud.google.com/logs/usage?project=xxxx) 检测到任何数据,除非我们使用日志查看器过滤它,然后我们可以看到日志。

Grafana 可以通过 Stackdriver Datasource 检测到数据,您可以看到 here

resource.type="k8s_cluster" 的过滤器包含始终启用的 System Events 的审核日志,因此,它们不会被排除在 Stackdriver Logging 之外,而 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 能够显示这些 log-based 指标,因为它们是通过数据源导出到它而不是进入 Stackdriver。