问题标签 [promql]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
32001 浏览

grafana - 在 Prometheus 中未找到查询 label_values

在 Grafana 文档中,我发现我应该能够查询我的 Prometheus 服务器,以获取使用该label_values查询提供监控数据的所有实例。

我在 Grafana 中使用的查询是:

不幸的是,Prometheus 告诉我它不知道 label_values:

我正在使用 Prometheus 2.0.0 和 Grafana 5。

我究竟做错了什么?

0 投票
2 回答
5129 浏览

grafana - 在 Prometheus 查询中选择最大的标签值

我设置了一个 Prometheus 和 Grafana 实例,我想在其中查询一个名为“upsAdvBatteryRecommendedReplaceDate”的特定属性。

Prometheus 在查询此属性时成功返回响应,如下所示: 普罗米修斯中的 upsAdvBatteryRecommendedReplaceDate

但是,结果包含两个时间序列(一个是 upsAdvBatteryRecommendedReplaceDate="12/11/2021",另一个是 upsAdvBatteryRecommendedReplaceDate="12/10/2021")。

一旦我在 Grafana 中设置了一个显示 upsAdvBatteryRecommendedReplaceDate 查询的 upsAdvBatteryRecommendedReplaceDate 标签的 singlestat,这就会成为一个问题。这将导致“多系列错误”,如下所示: upsAdvBatteryRecommendedReplaceDate in Grafana

如果我将 Grafana 时间范围更改为例如“最后 15 分钟”,它可以按预期工作,如下所示: Grafana 中的 upsAdvBatteryRecommendedReplaceDate 和正确的更换日期

所以我的问题是:有没有办法只选择/提取具有“upsAdvBatteryRecommendedReplaceDate”的最新/最新标签值的时间序列,这样在这种情况下,只有 upsAdvBatteryRecommendedReplaceDate="12/11/2021" 的时间序列出现?

谢谢!

0 投票
1 回答
9937 浏览

grafana - Grafana 中滑动窗口的 Prometheus 正常运行时间或 SLA 百分比

我想创建一个 Grafana“singlestat”面板,根据测试失败指标的存在与否显示正常运行时间或 SLA“百分比”。

e2e_tests_failure_count对于不同的测试框架,我已经有了适当的度量标准。这意味着以下查询返回观察到的测试失败的总和:

我已经设法创建了一个图表,如果一切正常,则为“1”,如果有任何测试失败,则为“0”:

在此处输入图像描述

我现在想要一个百分比值来显示一段时间内的“正常运行时间”(= 环境“健康”的时间量),例如过去 5 天。类似“99.5%”或者更适合屏幕截图的“65%”。

我试过这样的事情:

但这只会导致解析器错误。谷歌搜索并没有真正让我更进一步,所以我希望我能在这里找到帮助:)

0 投票
1 回答
601 浏览

prometheus - 我怎样才能通过使用 PromQL 来使用这两个指标?

我在 kubernetes 中部署 prometheus2.0,然后我需要知道每个 pod 的内存使用情况。我找到了两个指标:container_memory_usage_byteskube_pod_container_resource_limits_memory_bytessum(container_memory_usage_bytes) by (pod_name)显示 pods memory used bytes 已经消耗,sum(kube_pod_container_resource_limits_memory_bytes) by (pod)显示 pods 内存限制是 kubernetes 配置的,我只是为了计算这两个值然后我可以获得所有 pod 的内存使用情况。

但这两个指标显示不同的向量名称,见下文

我怎样才能通过使用 PromQL 来使用这两个指标?

0 投票
1 回答
9027 浏览

prometheus - 如何在 Prometheus 查询中组合单独的时间序列标签?

我有以下时间序列条目。

事实上,我无法判断哪个索引与哪个描述匹配,这让事情变得混乱。

有没有办法基本上将上述标签ifIndex与 ifDesc 标签相关联?或者也许这项工作可以用来将两个时间序列联系在一起?

我已经查看了该group_left功能,但无法弄清楚如何使其工作以组合/聚合标签。

0 投票
1 回答
6718 浏览

prometheus - 当值不存在时,默认 sum 运算符为 0

我正在使用以下查询来计算 GKE 集群中节点的成本(为提高可读性而添加了新行)

如果集群具有可抢占节点,则它可以工作,因为至少有一个节点具有label_cloud_google_com_gke_preemptible = "true",因此第一个 sum 运算符返回一个值。

当集群没有可抢占节点时失败,因为没有节点,label_cloud_google_com_gke_preemptible = "true"因此第一个总和没有返回值

是否可以修改查询以使第一个总和返回 0 值?

0 投票
1 回答
701 浏览

prometheus - 普罗米修斯中的范围查询

我有一个指标(pkts_sent),它有几个参数(交换机名和端口)。我需要根据以下条件触发警报:如果 pkts_sent 的数量低于 1000,但它只能针对端口 1 到 10 触发。我不确定如何在查询中创建一系列端口。

pkts_sent {portid=~[1-10]} < 1000 不起作用,因为未显示 1 到 10 之间的所有端口。

0 投票
3 回答
3852 浏览

docker - 查询通过 prometheus 节点导出器文本文件收集器公开的自定义指标失败

我是普罗米修斯/警报管理器的新手。

我创建了一个每分钟执行一次 shell 脚本的 cron 作业。--textfile.collector.directory此 shell 脚本在分配给参数(到节点导出器)的同一目录中生成“test.prom”文件(其中包含仪表度量)。我验证了(使用 curl http://localhost:9100/metrics)节点导出器正确地公开了该自定义指标。

当我尝试在普罗米修斯仪表板中针对该自定义指标运行查询时,它没有显示任何结果(它说没有找到数据)。

我无法弄清楚为什么对通过节点导出器文本文件收集器公开的指标的查询失败。任何线索我错过了什么?另外请让我知道如何检查并确保普罗米修斯刮掉了我的自定义指标“test_metric”?

我在普罗米修斯仪表板中的查询是test_metric != 0(在普罗米修斯仪表板中)没有给出任何结果。但我test_metric通过节点导出器文本文件公开。

任何帮助表示赞赏!

顺便说一句,节点导出器在 Kubernetes 环境中作为 docker 容器运行。

0 投票
2 回答
12650 浏览

prometheus - PromQL“by”和“without”之间的区别不清楚

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

我创建了一个摘要指标,它不仅包含服务名称,还包含完整路径和 http 方法。

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

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

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

这对我来说看起来绝对是错误的——但我认为它不像我理解的那样起作用。

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

  • 但是有什么区别呢?
  • 这里到底发生了什么?
  • 如果我使用“max”而不是“sum”,为什么老实说我只能得到可测量的值?

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

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

0 投票
1 回答
10701 浏览

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

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

我有一些指标,例如:

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

普罗米修斯返回:

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

怎么了?