如何计算一天中仪表设置为 -1 的总时间?

How do I calculate the total time a gauge was set on -1 in a day?

我在 Prometheus 中有一个仪表,当我的服务关闭时(我的部署有 0 pods),它的值为 -1。当服务启动时,仪表会保持登录的用户数量。我正在尝试计算此仪表在一天中为 -1 的总时间,也许是每周平均值。

我尝试像这样使用 timestamp() 函数:timestamp(my_gauge[1d] == -1),但出现错误。我尝试了其他东西,比如 min_over_time(),但也没有用。

编辑:如果有人对如何计算一天内 k8s 部署停机的总时间有其他想法,而不使用我的计量器,我将不胜感激。

当图表设置为 1 天时,我会 count(my_gauge == bool -1) 并在总计下的 Grafana 中读取随时间变化的总和。您可以进一步将 Min step 设置为 1d,但 Grafan 将对计数进行平均,因此您需要将查询乘以 $__interval_ms 的某个因子。因子将取决于度量的频率。

您可以使用以下方法获取过去 24 小时内服务中断的时间:

avg_over_time((my_gauge == bool 0)[1d:])

您需要一个支持子查询的 Prometheus(版本 2.7)并且您只能在滑动时生成指标 window。