我有一个在 Kubernetes 上运行的 Web API,并使用 Prometheus 进行监控。我创建的指标之一是total_request_number,它是一个计数器,带有指示所请求通道的通道名称标签。对于每个新请求,指标都会根据特定渠道增加。
当我的应用程序更新并且 Kubernetes Pod 在白天重新启动时,就会出现问题。因此,数据中存在间隙,导致我的 Grafana 图表出现不连续性。我想显示在 Grafana 中选择的特定时间段内的请求数,包括 pod 重新启动造成的间隙之前的数据。
目前,我在 Grafana 查询中使用 Sum(total_request_number) by (channelname)。但是,此方法仅适用于我的 Pod 未重新启动的时期。对于之前的数据(重新启动之前),sum() 函数不会返回任何内容。
如何查询Prometheus获取选定时间段内的请求总数,包括pod重启造成的间隙之前的数据?
您可以使用此查询:
sum by (channelname) (
increase(
last_over_time(
total_request_number
[$__range]
)
[$__range:]
)
)
这里:
last_over_time
- 将每个指标的最后看到的值延伸到仪表板的末尾(如果在仪表板的时间范围内看到),increase
计算仪表板时间范围内每个指标的增加,sum by (channelname)
在标签上聚合 channelname
。