如何计算一天中仪表设置为 -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。
我在 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。