首页 > 解决方案 > 从同一 GCP 项目中的不同 gke 集群中过滤 Google Cloud Traces 中的信息

问题描述

我有一个 GCP 项目,其中有两个 GKE 集群,一个用于开发和预生产工作负载,另一个用于生产。

我正在使用 Google Cloud Trace 来关联不同 Spring Boot 微服务调用的信息。

问题是 Trace 列表视图同时显示了来自两个集群的所有调用,因此很难将生产调用与其他集群区分开来:

在此处输入图像描述

有没有办法过滤来自不同集群的调用?

如果没有,一种解决方案是将 GKE 生产集群隔离在其自己的 GCP 项目中。这是一个好习惯吗?

标签: google-cloud-platformspring-cloud-sleuthspring-cloud-gcpspring-cloud-kubernetesgoogle-cloud-trace

解决方案


为了解决这个问题,我必须在 Spring Boot 应用程序中自定义跨度信息,添加命名空间:

@Component
class SpanCustomizerFilter(private val spanCustomizer: SpanCustomizer) : WebFilter {

    override fun filter(exchange: ServerWebExchange, chain: WebFilterChain): Mono<Void> {
        spanCustomizer.tag("namespace", System.getenv("POD_NAMESPACE"))
        return chain.filter(exchange)
    }
}

然后在 Add filter 部分,我可以添加 namespace:mynamespace-dev 并获得我需要的跟踪:

在此处输入图像描述


推荐阅读