当前位置: 首页 > 知识库问答 >
问题:

无法计算普罗米修斯中两个度量的比率

潘刚洁
2023-03-14

我正在使用ZFS导出器从Linux服务器上收集Prometheus v.2.19中的ZFS指标。正在从所有目标收集数据,并且值是正确的,但是有一个奇怪的问题:我想计算ARC未命中与ARC命中的比率的百分比,因此我使用以下公式:

100 * rate(zfs_arc_stats{stat='misses'}[5m]) / rate(zfs_arc_stats{stat='hits'}[5m])

但它不产生任何数据。我可以分别从每个速率表达式中获取值,但不能从上面的公式中获取值。如果我使用具有相同标签的公式,即:

100 * rate(zfs_arc_stats{stat='hits'}[5m]) / rate(zfs_arc_stats{stat='hits'}[5m])

它给出的正确结果为 100,因为未命中与未命中或命中与命中的比率始终为 1:1。我尝试了来自其他来源的指标的类似公式(即。PCP,收集)和那些工作正常,即。我可以计算具有不同标签的相同指标的比率,因此问题似乎特定于 ZFS Exporter 中的指标。该导出器具有非常少的指标,但每个指标都有许多不同的统计信息,这些统计信息由“stat”标签的值标识。所有的指标都是仪表类型的,但我认为这对PromQL中的速率函数并不重要。无论如何,就像我之前提到的,利率可以单独计算,只有比率失败。有人请建议如何解决这个问题。

共有1个答案

庞元青
2023-03-14

只有当两个度量值的所有标签都相同时,Prometheus才会将一个度量除以另一个度量。在这种情况下,< code>/左侧的指标具有标签< code>{stat='misses'},而右侧的指标具有不同的< code>stat标签值:< code>{stat='hits'}。Prometheus提供了< code > ignore 和< code>on操作,这些操作可应用于任何二元运算符(即< code>/ 、< code> 、< code>-等)。).详见相应文件。

因此,在你的情况下,你必须告诉普罗米修斯在执行计算时忽略统计标签:

100 * rate(zfs_arc_stats{stat='misses'}[5m]) / ignoring(stat) rate(zfs_arc_stats{stat='hits'}[5m])
 类似资料:
  • oc版本: 客户端版本:4.4.3服务器版本:4.4.3 Kubernetes版本:V1.17.1 图片:quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:6a5398997bd7ccddd8d0be0f0f2d9dcae8dddc01d54e6877437f07397c273048 在其他吊舱上没有任何错误,只在普罗米修斯操作员吊舱日志中

  • 我的各种docker容器导出prometheus度量,但是我们的prometheus安装只需要从一个endpoint提取所有度量。不幸的是,这是无法改变的。因此,我需要在一个点上聚合所有度量,从普罗米修斯安装可以刮取度量。 此外,如果这个程序或脚本能够提供关于如何处理由不同endpoint导出的相同度量的额外逻辑,那就太好了。例如,如果我只是将不同的度量站点连接在一起,Prometheus在解释度

  • 我有以下计数器指标 如何计算最近2分钟内活动设备的数量,即2(设备id 3和4)?

  • 我想监控值设置为每秒普罗米修斯计的次数。不幸的是,我不能添加另一个计数器,应该使用量规。我尝试使用更改函数,但要么我不明白它的目的,要么它根本不做这项工作。将测量仪图与具有时间范围的变化()输出进行比较没有显示任何相关性。 在我看来,使用count_over_并未提供该指标,原因与changes()相同。 有没有一种正确的方法来计算将值设置为每秒普罗米修斯计的次数? 假设我们有: prom_仪表=

  • 我将我的GKE API服务器升级到1.6,并正在将节点升级到1.6,但遇到了一个障碍... 我有一个prometheus服务器(版本1.5.2),运行在一个由Kubernetes部署管理的pod中,其中两个节点运行版本1.5.4Kubelet,一个新节点运行版本1.6。 但普罗米修斯仍然得到401。 更新:就像乔丹所说的kubernetes认证问题。在这里看到新的、更集中的问题;https://s