主要问题:
我们是否可以从 Cloud endpoints 统计/监控中排除路径,同时仍允许流量到我们的实际后端?
说明:
我们在Kubernetes上运行后端,现在正在尝试使用Google Cloud Endpoints . 我们将EPS容器添加到后端容器前面的pod中 . 正如我们在其他地方所做的那样,我们也在Kubernetes和前面的Google(L7)LoadBalancer中使用 Health 检查 . 为了让 Health 检查到达我们的后端,必须在EPS容器使用的openapi yaml文件中定义,例如:
...
paths:
"/_ah/health":
get:
operationId: "OkStatus"
security: []
responses:
200:
description: "Ok message"
...
这个问题是这些请求混淆了我们实际API的监视/跟踪/统计信息 . Cloud endpoints 注册的延迟数量是无用的:它们显示出2个百分位数的50%,然后显示20个百分点的第95个百分位数,因为 Health 检查流量的比例很高 . 20秒的实际请求显示为请求的边际部分,因为 Health 检查每秒请求多次,每次需要2ms . 由于这些 Health 检查的稳定流量占所有请求的90%,因此实际相关请求在保证金中显示为“例外” .
因此,我们希望从 endpoints 统计信息中排除此运行状况流量,但保持运行状况检查功能正常 .
我在文档中没有找到任何相关内容,也没有在其他地方找到任何解决方案 .
可能的替代解决方案
我们可以为我们的Kubernetes设置添加额外服务,直接到达我们的后端,仅用于 Health 检查 . 这个问题是:
-
额外的k8s服务,配置,防火墙规则......需要
-
我们不 Health 检查实际设置 . 如果EPS容器无法将流量引导到我们的后端,则不会注意到这一点 .
-
我们使用SSL加密负载均衡器和后端之间的流量,但是我们的实际后端现在需要一个额外的ssl感知网络服务器 . 对于没有实际数据的 Health 检查,这是一个小问题,但仍然意味着规则的例外 .
-
我们还可以为EPS容器添加额外的运行状况检查 . 但由于这不应该出现在统计数据中,它应该像对未定义的路径进行请求并检查响应是该情况的EPS响应:
{"code": 5,
"message": "Method does not exist.",
"details": [{
"@type": "type.googleapis.com/google.rpc.DebugInfo",
"stackEntries": [],
"detail": "service_control"
}]
}
这也不理想 . 它确实检查容器是否至少运行,但它更多的是“它没有关闭”而不是“它正在工作”的方法,因此许多其他问题将被忽视 .
1 回答
Google Cloud Endpoints不支持从报告统计信息/监控中排除路径 . 这是一个在雷达上并被积极关注的东西 .
与此同时,您的备用解决方案可以作为一个止损点,但有你发布的缺点 .