You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用prometheus-fastapi-instrumentator自定义函数计数器遇计数不增长问题

问题解决:Prometheus FastAPI 计数器无法累加的问题

你的问题根源在于每次调用invalid_doc_type_counter()时都会重新创建一个新的Counter实例,每次执行inc()都是针对这个新实例,所以指标数值永远停留在1,不会累加。

修正后的代码实现

把Counter的定义移到方法外部,作为类的静态属性,确保整个应用生命周期内只有一个计数器实例:

from prometheus_client import Counter

class Counters:
    # 在类级别定义计数器,仅初始化一次
    INVALID_DOC_TYPE_COUNTER = Counter(
        "invalid_doc_type_count",
        "Number of times invalid doc type issue came up",
        labelnames=("handler",)
    )

    @staticmethod
    def invalid_doc_type_counter():
        # 复用已初始化的计数器实例进行递增操作
        Counters.INVALID_DOC_TYPE_COUNTER.labels("info.modified_handler").inc()

调用逻辑保持不变:

if not filtered_det:
    #Invalid doc type counter
    Counters.invalid_doc_type_counter()
    raise ValueError("Invalid Doc Type")

进阶优化(支持动态标签)

如果需要针对不同handler统计,可让方法接收标签参数,增强灵活性:

@staticmethod
def invalid_doc_type_counter(handler):
    Counters.INVALID_DOC_TYPE_COUNTER.labels(handler).inc()

调用时传入对应handler:

if not filtered_det:
    Counters.invalid_doc_type_counter("info.modified_handler")
    raise ValueError("Invalid Doc Type")

这样修改后,每次触发计数器时都会对同一个实例进行递增,访问/metrics就能看到数值正确累加了。

内容的提问来源于stack exchange,提问作者Abhishek Bose

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 15:25:35