无法在 Promutheus 中使用 Summary 的 time() 包装器

Failed to use time() wrapper of Summary in Promutheus

我在使用 Summary.time() 装饰器时遇到错误。

REQUEST_TIMER = Summary('aes_request_processing_timer', 'Time spent processing requests', ['time'])
class HallyServiceHandler(hally_service_pb2_grpc.HallyServicer):
    def __init__(self):
        super(HallyServiceHandler, self).__init__()
        return

    @REQUEST_TIMER.time()
    def ProcessStas(self, request, context):
        return hally_service_pb2.StasResponse()

当我启动服务器时

server = grpc.server(futures.ThreadPoolExecutor(max_workers=100))

health_pb2_grpc.add_HealthServicer_to_server(health_handler.Health(), server)

hally_service_pb2_grpc.add_HallyServicer_to_server(
    hally_service_handler.HallyServiceHandler(), server
)

server.add_insecure_port('[::]:8080')
server.start()
try:
    while True:
        time.sleep(_ONE_DAY_IN_SECONDS)
except KeyboardInterrupt:
    server.stop(0)

我未能启动服务器。

    @REQUEST_TIMER.time()
AttributeError: '_LabelWrapper' object has no attribute 'time'

用法与Docs类似。

环境

REQUEST_TIMER 有一个您没有提供的标签 time。由于您实际上并不需要该标签,因此请从您的指标定义中删除 , ['time']

你还应该提到这样的度量单位,timer 是多余的,所以:

REQUEST_TIMER = Summary('aes_request_processing_duration_seconds', 'Time spent processing requests')