PromQL 以图表形式每小时创建的 Kubernetes POD 数量

Posted

技术标签:

【中文标题】PromQL 以图表形式每小时创建的 Kubernetes POD 数量【英文标题】:PromQL to graph number of Kubernetes PODs created per Hour 【发布时间】:2020-01-26 17:55:53 【问题描述】:

我正在使用 Kubernetes 与 kube-state-metrics 和 Prometheus/grafana 来绘制 Kubernetes 集群的各种指标。

现在我想用图表显示随着时间的推移每小时创建了多少 POD。

指标 kube_pod_created 包含作为值的 Creation-Timestamp,但由于每个时隙中都有一个值,因此以下查询还为未创建新 POD 的时隙返回结果 >0:

count(rate(kube_pod_created[1h])) by(namespace)

我可以在某种标准中使用 Value 来仅计算 Value 是否在“当前”时间段内吗?

【问题讨论】:

【参考方案1】:

过去一小时内创建的 POD

count ( (time() - sum by (pod) (kube_pod_created)) < 60*60 )

【讨论】:

【参考方案2】:

根据文档,https://prometheus.io/docs/prometheus/latest/querying/functions/ rate() 只能与计数器一起使用。我建议您使用 changes() 函数,因为在创建 pod 的情况下,创建时间值应该在您的时间范围内发生变化,并且总和也可能比计数好。

变化()

对于每个输入时间序列,changes(v range-vector) 将其值在提供的时间范围内更改的次数作为即时向量返回。

sum(changes(kube_pod_created[1h])) by(namespace)

【讨论】:

已经尝试过了,但是由于创建 pod 的 Value (Timestamp) 不会随着时间而改变,所以它不会产生预期的结果 @powo,你的意思是没有改变?我想建议你使用时间函数和减法,但是现在......创建 pod 时,kube_pod_created 的值不会改变?如果不是创作时间,那又是什么呢?

以上是关于PromQL 以图表形式每小时创建的 Kubernetes POD 数量的主要内容,如果未能解决你的问题,请参考以下文章

午夜范围内小时()的 PromQL 使用情况

在 PromQL/MetricsQL 中按时间分组和聚合

在 Prometheus PromQL 中获取最后一小时的平均费率

Prometheus学习系列之Prometheus 查询说明

PromQL 查询以选择其值包含在给定的多选变量中的指标

运维实战一次linux日志分割之路——将日志按照每小时进行分割,并按照“日期-小时”格式保存