我有一个 GCP 项目,其中有两个 GKE 集群,一个用于开发和预生产工作负载,另一个用于生产。
我正在使用 Google Cloud Trace 来关联不同 Spring Boot 微服务调用的信息。
问题是 Trace 列表视图同时显示了来自两个集群的所有调用,因此很难将生产调用与其他集群区分开来:
有没有办法过滤来自不同集群的调用?
如果没有,一种解决方案是将 GKE 生产集群隔离在其自己的 GCP 项目中。这是一个好习惯吗?
我有一个 GCP 项目,其中有两个 GKE 集群,一个用于开发和预生产工作负载,另一个用于生产。
我正在使用 Google Cloud Trace 来关联不同 Spring Boot 微服务调用的信息。
问题是 Trace 列表视图同时显示了来自两个集群的所有调用,因此很难将生产调用与其他集群区分开来:
有没有办法过滤来自不同集群的调用?
如果没有,一种解决方案是将 GKE 生产集群隔离在其自己的 GCP 项目中。这是一个好习惯吗?
为了解决这个问题,我必须在 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 并获得我需要的跟踪: