我想计算两个指标的比率,但我没有得到任何数据...
我有一些指标,例如:
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 表达式浏览器中单独查询每个指标时,我确实得到了指标值。
怎么了?
我试图将系统正常运行时间显示为 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 配置来实现它?
我正在尝试监视安装并运行 Prometheus 的机器的 CPU 利用率。我有一个指标process_cpu_seconds_total。我可以找到这个指标的愤怒或比率。但我不太确定如何得出 CPU 利用率的百分比值。无论如何我可以使用这个process_cpu_seconds_total指标来找到运行 Prometheus 的机器的 CPU 利用率吗?
随着时间的推移,函数不支持 by/without 语法。使用 avg_over_time(metric[1h]) 和 avg(metric[1h]) 之间的数学差异是什么?可以用具有相同结果的函数(在本例中为 avg)替换随时间变化的函数吗?谢谢!
我有两个不同(但相关的指标)。
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)
我应该使用什么查询/加入/重新标记来实现这一点?
先感谢您!:)
我想使用 promql/Prometheus 以以下格式显示 pod 详细信息。
此外,我想使用 promql 以以下格式显示应用程序/组件的 CPU 和内存利用率
promql 查询: sum(container_memory_working_set_bytes) by (pod)
我可以使用上面的查询获取 pod 消耗的内存。
如何计算内存使用百分比?我无法使用 promql 获取有状态 pod 的内存限制 您能否建议任何查询/API 详细信息?
我有一个关于使用 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)
如果我忽略我阅读的所有内容,我会按以下方式尝试:
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 中,我尝试使用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 显示错误。
想象一下我有这样的指标:
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)
这个问题与这个问题有点相似,但是就我而言,我事先不知道这些组。我只知道他们遵循的模式。有没有一种方法可以使用正则表达式通过一个查询来实现这一目标?