标签: promql

Prometheus 在计算两个指标的比率时不返回任何数据

我想计算两个指标的比率,但我没有得到任何数据...

我有一些指标,例如:

fs_bytes{filesystem="/var",instance="localhost:9108",job="graphite",metric="Used"}   50.0
fs_bytes{filesystem="/var",instance="localhost:9108",job="graphite",metric="Total"}   100.0
Run Code Online (Sandbox Code Playgroud)

当我尝试执行任何操作(设备、乘法、加法、减法)时,例如:

fs_bytes{instance="localhost:9108",metric="Used"} / fs_bytes{instance="localhost:9108",metric="Total"}
Run Code Online (Sandbox Code Playgroud)

普罗米修斯返回:

no data
Run Code Online (Sandbox Code Playgroud)

当我在 Prometheus 表达式浏览器中单独查询每个指标时,我确实得到了指标值。

怎么了?

prometheus promql

12
推荐指数
1
解决办法
8557
查看次数

使用 Prometheus 和 Grafana 将秒转换为 HH:MM:SS

我试图将系统正常运行时间显示为 DD-HH-MM-SS 格式,使用通用代码执行此操作不会有问题,但我仅使用 Prometheus (PromQL) 和 Grafana 执行此操作,这是 PromQL 查询:

time()-process_start_time_seconds{instance="INSTANCE",job="JOB"}

我实现了我想要的基本输出,它向我显示了进程的生命周期。上面查询的输出给出了以秒为单位的时间(例如68003),并将其转换为更大的时间单位(分钟、小时等),但采用十进制形式:

小数正常运行时间

小数点后的89指的是一个小时的89%,约53分钟这并不是一种真正“直观”的显示时间的方式,我希望它能显示该时间的正常 DD:HH:MM:SS 演示,如以下来自一个简单在线工具的屏幕截图,该工具将秒转换为时间:

正常运行时间

有没有办法仅使用 PromQL 和 Grafana 配置来实现它?

monitoring grafana prometheus promql

12
推荐指数
1
解决办法
1万
查看次数

使用 Prometheus 监控 CPU 利用率

我正在尝试监视安装并运行 Prometheus 的机器的 CPU 利用率。我有一个指标process_cpu_seconds_total。我可以找到这个指标的愤怒或比率。但我不太确定如何得出 CPU 利用率的百分比值。无论如何我可以使用这个process_cpu_seconds_total指标来找到运行 Prometheus 的机器的 CPU 利用率吗?

cpu-usage prometheus promql

10
推荐指数
2
解决办法
2万
查看次数

PromQL 平均值与 avg_over_time

随着时间的推移,函数不支持 by/without 语法。使用 avg_over_time(metric[1h]) 和 avg(metric[1h]) 之间的数学差异是什么?可以用具有相同结果的函数(在本例中为 avg)替换随时间变化的函数吗?谢谢!

promql

10
推荐指数
1
解决办法
3万
查看次数

普罗米修斯中的“分辨率”一词是什么意思?

在下面的 promQL 查询执行中:

在此输入图像描述

“分辨率”提到为14秒

“总时间序列”被提及为 1


  1. 值为 14 秒的“分辨率”是什么意思?

  2. 什么是“时间序列”?值为1的“时间序列”是什么意思?

  3. “加载时间”表示什么?

prometheus promql

10
推荐指数
1
解决办法
6923
查看次数

在 Prometheus/PromQL 中合并/加入两个指标

我有两个不同(但相关的指标)。

metric_1(id="abc",id2="def")
metric_2(id="abc",id2="def")
Run Code Online (Sandbox Code Playgroud)

我的最终目标是在 Grafana 中实现以下目标。我计划使用“即时”值和 Grafana 的表可视化小部件来显示这些数据。

id      id2     metric1 metric2
abc     def     1       2
Run Code Online (Sandbox Code Playgroud)

我应该使用什么查询/加入/重新标记来实现这一点?

先感谢您!:)

prometheus promql

9
推荐指数
2
解决办法
1万
查看次数

如何使用promethus获取pod的CPU和内存使用百分比

我想使用 promql/Prometheus 以以下格式显示 pod 详细信息。

图片1

此外,我想使用 promql 以以下格式显示应用程序/组件的 CPU 和内存利用率

图片2

promql 查询: sum(container_memory_working_set_bytes) by (pod)

我可以使用上面的查询获取 pod 消耗的内存。

如何计算内存使用百分比?我无法使用 promql 获取有状态 pod 的内存限制 您能否建议任何查询/API 详细信息?

monitoring grafana kubernetes prometheus promql

9
推荐指数
1
解决办法
3万
查看次数

PromQL“by”和“without”的区别不清楚

我有一个关于使用 Prometheus 摘要指标计算响应时间的问题。

我创建了一个汇总指标,其中不仅包含服务名称,还包含完整路径和 http 方法。

现在我尝试计算完整服务的平均响应时间。我阅读了关于“比率然后总和”的文章,要么我不明白计算是如何完成的,要么计算是恕我直言不正确。

据我所知,这应该是计算每秒响应时间的正确方法:

sum by(service_id) (
    rate(request_duration_sum{status_code=~"2.*"}[5m])
    /
    rate(request_duration_count{status_code=~"2.*"}[5m])
)
Run Code Online (Sandbox Code Playgroud)

我在这里理解的是为每个子集创建“每秒持续时间”(速率总和/速率计数)值,然后创建每个 service_id 的总和。

这对我来说看起来完全错误 - 但我认为它不像我理解的那样工作。

获得相同外观结果的另一种方法是:

sum without (path,host) (
    rate(request_duration_sum{status_code=~"2.*"}[5m])
    /
    rate(request_duration_count{status_code=~"2.*"}[5m])
)
Run Code Online (Sandbox Code Playgroud)
  • 但有什么区别呢?
  • 这里到底发生了什么?
  • 如果我使用“max”而不是“sum”,为什么老实说我只能得到可测量的值?

如果我忽略我阅读的所有内容,我会按以下方式尝试:

rate(sum by(service_id) request_duration_sum{status_code=~"2.*"}[5m])
/
rate(sum by(service_id) request_duration_count{status_code=~"2.*"}[5m])
Run Code Online (Sandbox Code Playgroud)

但这根本不起作用......(即时向量与范围向量等等......)。

prometheus calculation promql

8
推荐指数
2
解决办法
1万
查看次数

`label_replace` 引入的基于过滤向量的新标签

在 Prometheus 中,我尝试使用label_replace.

http_requests_total{account_id="124",handler="AAAAAController"...}
http_requests_total{account_id="125",handler="BBBBBController"...}
http_requests_total{account_id="126",handler="CCCCCController"...}
http_requests_total{account_id="123",handler="XXXXXController"...}
Run Code Online (Sandbox Code Playgroud)

我写的查询是:

label_replace(http_requests_total, "class", "$1", "handler", "([a-zA-Z0-9]+)Controller.*") .

这可以正常工作并将class标签添加到 vector :"AAAA","BBBB" 等。此时我想删除某些类,例如 empty 和BBBB

如何使用{class~="BBBBB"}以下方法进一步过滤向量:

label_replace(http_requests_total, "class", "", "handler", "([a-zA-Z0-9]+)Controller.*"){class~="BBBBB"}

当我尝试这样做时,Prometheus 显示错误。

grafana prometheus promql

8
推荐指数
1
解决办法
808
查看次数

基于正则表达式对 Prometheus 查询中的标签进行分组

想象一下我有这样的指标:

sample_metric{type="some-type1-1234"} 2
sample_metric{type="some-type1-5678"} 1
sample_metric{type="some-type2-9876"} 4
sample_metric{type="some-type2-4321"} 3
Run Code Online (Sandbox Code Playgroud)

现在我想根据遵循相同模式的类型对指标值进行求和。因此,对于上面的例子,期望的结果是有 2 个和:

type1: 3
type2: 7
Run Code Online (Sandbox Code Playgroud)

这个问题与这个问题有点相似,但是就我而言,我事先不知道这些组。我只知道他们遵循的模式。有没有一种方法可以使用正则表达式通过一个查询来实现这一目标?

prometheus promql

8
推荐指数
1
解决办法
6568
查看次数