Как добавить метрики к внешним службам, используя Aioprometheus и Fastapi?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как добавить метрики к внешним службам, используя Aioprometheus и Fastapi?

Сообщение Anonymous »

Я пытаюсь добавить метрики во внешние службы с Aioprometheus в приложении Fastapi. Вот упрощенный пример того, чего я пытаюсь достичь.

Код: Выделить всё

from aioprometheus import Registry, Counter, Histogram
from fastapi import FastAPI

class App:
def __init__(self, ...):
self.registry = Registry()
self.counter = Counter(
name="counts", doc="request counts"
)
self.latency = Histogram(
name="latency",
doc="request latency",
buckets=[0.1, 0.5, 1, 1.5, 2]
)

self.app = FastAPI()
self._metrics()

def _metrics(self):
# Counter metrics
@self.app.middleware("http")
async def counter_metrics(request, call_next):
response = await call_next(request)
self.counter.inc(
{"path": str(request.url.path), "status": response.status_code}
)
return response

# Latency metrics
@self.app.middleware("http")
async def latency_metrics(request, call_next):
start = time.time()
response = await call_next(request)
total_duration = time.time() - start
self.latency.observe(
{"path": str(request.url.path)}, total_duration
)
return response

@self.app.on_event("startup")
async def startup():
self.app.include_router(some_router(...))

self.registry.register(self.counter)
self.registry.register(self.latency)
По сути, у меня есть реестр , счетчик и гистограмма . В _metrics у меня есть счетчик и гистограмма конкретные логики, которые позже добавляются в реестр . Это сделает свое волшебство и поймает метрики, когда называется конечная точка в некотором_Рутер (я бы хотел сохранить это, а также иметь внешние метрики службы).
Однако, скажем, я называю внешнюю службу от некоторой_Рутер как таковой:
from fastapi import APIRouter

def some_router():
router = APIRouter()

@router.get("/some_router")
async def some_router():
response = await external_service()

return response

return router

В этом случае, в частности, как я бы добавил метрики в External_service , то есть задержка этой конкретной внешней службы?


Подробнее здесь: https://stackoverflow.com/questions/711 ... nd-fastapi
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»