从Google云端点排除路径



主要问题:

我们可以从云端点统计信息/监视中排除一条路径,同时仍允许流量到我们的实际后端?

说明:

我们在Kubernetes上有一个后端,现在正在尝试Google Cloud Endpoints。我们将EPS容器添加到后端容器前面的吊舱中。与其他地方一样,我们还在Kubernetes和Google(L7(Loadbalancer中使用健康检查。为了使健康检查到达我们的后端,必须在EPS容器使用的OpenAPI YAML文件中定义它,例如:

...
paths:
"/_ah/health":
  get:
    operationId: "OkStatus"
    security: []
    responses:
      200:
        description: "Ok message"
...

问题是,这些请求混淆了我们实际API的监视/跟踪/统计信息。云端点注册的延迟数是没有用的:由于健康检查的交通较高,它们的50%为2ms,然后是20%的20%。实际的请求20 秒显示为请求的边际部分,因为健康检查确实每秒多次请求,每个请求都需要2ms。由于这些健康检查是稳定的流量(占所有请求的90%(,因此实际上的相关请求显示为"余量"中的"例外"。

因此,我们想从端点统计数据中排除这种健康流量,但保持健康检查功能。

我在文档中尚未找到任何内容,也没有在其他地方的网络上找到任何解决方案。

可能的替代解决方案

我们可以为我们的Kubernetes设置添加额外的服务,直接到达我们的后端仅用于健康检查。此问题是:

  • 额外的K8S服务,配置,防火墙规则...必需
  • 我们没有健康检查实际设置。如果EPS容器未能将流量引向我们的后端,则不会注意到。
  • 我们使用SSL在LoadBalancer和后端之间加密流量,但是我们的实际后端现在应该需要额外的SSL感知Web服务器。对于没有实际数据的健康检查,这是一个小问题,但仍然意味着该规则的例外。
  • 我们也可以为EPS容器添加额外的健康检查。但是,由于这不应该在统计数据中显示,因此应该像对未定义路径的请求一样,并检查回复响应是该情况的EPS回复响应:

    {"code": 5,
     "message": "Method does not exist.",
     "details": [{
         "@type": "type.googleapis.com/google.rpc.DebugInfo",
         "stackEntries": [],
         "detail": "service_control"
     }]
    }
    

    这也不是理想的。它确实检查了容器是否至少在运行,但它更多的是"它不是下降"而不是"它正在工作"的方法,因此许多其他问题都不会引起注意。

Google Cloud Endpoints不支持排除报告统计信息/监视的路径。这是雷达上并积极看的东西。

与此同时,您的替代解决方案将用作停止差距,但是您发布的缺点。

最新更新