一段时间内 K8s 服务的正常运行时间 - Prometheus?

Posted

技术标签:

【中文标题】一段时间内 K8s 服务的正常运行时间 - Prometheus?【英文标题】:Uptime of K8s Service over a period of time - Prometheus? 【发布时间】:2021-09-07 01:27:50 【问题描述】:

在一段时间内找出 K8s 服务可用性的最简单方法是什么,比如说 24 小时。我应该以 pod 为目标还是找到计算服务可达性的方法

【问题讨论】:

pod 的子集可能会重新生成,这并不意味着服务已关闭。 @P.... 你是对的,你建议如何解决这个问题? 【参考方案1】:

我建议不要从二进制文件(是向上还是向下)来处理它,而是从“服务请求需要多长时间”的角度来处理它。换句话说,用 SLO 来表达您的可用性。您可以从PromTools 获得非常好的自动生成的基于 SLO 的更改规则。来自那里的一个具体示例规则,显示了 PromQL 部分:

1 - (
 sum(rate(http_request_duration_seconds_bucketjob="prometheus",le="0.10000000000000001",code!~"5.."[30m]))
 /
 sum(rate(http_request_duration_seconds_countjob="prometheus"[30m]))
)

上面捕获了服务在不到 100 毫秒内提供非 500(非服务器错误,即假定的良好响应)所花费的时间与过去 30 分钟内的总体响应的比率,http_request_duration_seconds 是直方图,捕获服务请求的分布。

【讨论】:

以上是关于一段时间内 K8s 服务的正常运行时间 - Prometheus?的主要内容,如果未能解决你的问题,请参考以下文章

服务器正常运行一段时间后就会出数据库连接错误[代码:01]

log4cpp 在一段时间后停止正常工作

kubernetes滚动发布服务中断问题的解决

为啥托管在 Windows 服务内的 WCF 服务会在一段时间后死掉

容器技术Docker K8s 8 容器服务ACK Pro版集群

K8S 集群内 Debug 微服务的最佳实践