如何重用prometheus Gauge metric?

Posted

技术标签:

【中文标题】如何重用prometheus Gauge metric?【英文标题】:How to reuse prometheus gauge metric? 【发布时间】:2021-12-12 07:47:01 【问题描述】:

我对 python 和 prometheus 很陌生。任何帮助将不胜感激。 我正在使用普罗米修斯客户端。我在文件 A 中创建了一个仪表实例

    self.spark_time = prom.Gauge(
        "SparkJobTime", 
        "Gauge pod running time", 
        self.metric_labels
    )

我也在文件 A 中设置指标

self.spark_time.labels(job=job_name).set(pod_duration.total_seconds())  

在文件 b 中,我也想使用这个 SparkJobTime 指标。 我在文件 b 中尝试过

self.spark_time = prom.Gauge(
    "SparkJobTime", 
    "Gauge pod running time", 
    self.metric_labels
)

然后它在 CollectorRegistry 中处理重复的时间序列... 我应该如何在文件 b 中使用这个 SparkJobTime 指标?

谢谢

【问题讨论】:

【参考方案1】:

您的代码不清楚...self spark_time 中的self 是什么?通常 Python 中的self 指的是类定义中的实例变量。那是你定义仪表的地方吗?

当您复制该行 self.spark_time = prom.Gauge(...) 时,您会创建一个具有相同名称和其他详细信息的新仪表,这是不允许的。

创建仪表并将其分配给 foo = prom.Gauge(...) 后,您只需将其称为 foo,而不是重复创建它。

在文件 b 中,如果 self.spark_time 代表相同的“事物”,您应该能够:

self.spark_time.labels(job=job_name).set(pod_duration.total_seconds()) 

我怀疑一个问题可能是您将 Gauge 分配给某个类的实例变量 (spark_time)。一旦你在一个类的函数中完成了这个,你就不需要再做一次了。

【讨论】:

以上是关于如何重用prometheus Gauge metric?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 OpenCensus 检测 Prometheus Gauge?

千分尺 - Prometheus Gauge 显示 NaN

Prometheus Node_exporter 之 Basic CPU / Mem / Disk Gauge

Prometheus 标签语法是如何工作的?

Prometheus 四大指标类型

Prometheus 四大指标类型