Не удалось использовать оболочку time () Summary в Promutheus - PullRequest
0 голосов
/ 30 августа 2018

При использовании декоратора 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'

Использование аналогично Документам .

Окружающая среда

  • питон 3.6.0
  • prometheus_client: 0.3.1

1 Ответ

0 голосов
/ 30 августа 2018

REQUEST_TIMER имеет метку time, которую вы не предоставляете. Поскольку вам на самом деле не нужна эта метка, удалите , ['time'] из определения метрики.

Также вы должны упомянуть единицу показателя, как эта, и timer является избыточным, поэтому:

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