diff --git a/aiws.py b/aiws.py index ce526a9..57a1c7e 100644 --- a/aiws.py +++ b/aiws.py @@ -12,6 +12,7 @@ from aiogram.fsm.storage.mongo import MongoStorage from dotenv import load_dotenv from fastapi import FastAPI from motor.motor_asyncio import AsyncIOMotorClient +from prometheus_client import Info from starlette.middleware.cors import CORSMiddleware from prometheus_fastapi_instrumentator import Instrumentator @@ -41,6 +42,7 @@ from api.endpoints.generation_router import router as api_gen_router from api.endpoints.auth import router as api_auth_router from api.endpoints.admin import router as api_admin_router from api.endpoints.album_router import router as api_album_router +from api.endpoints.project_router import router as project_api_router load_dotenv() logger = logging.getLogger(__name__) @@ -170,9 +172,6 @@ async def lifespan(app: FastAPI): # --- НАСТРОЙКА FASTAPI --- app = FastAPI(title="Assets API", lifespan=lifespan) -# Prometheus Metrics -Instrumentator().instrument(app).expose(app) - # CORS app.add_middleware( CORSMiddleware, @@ -181,21 +180,27 @@ app.add_middleware( allow_headers=["*"], ) -# Подключаем роутер API -from api.endpoints.auth import router as auth_api_router -from api.endpoints.admin import router as admin_api_router -from api.endpoints.project_router import router as project_api_router - -app.include_router(auth_api_router) -app.include_router(admin_api_router) +# Подключаем роутеры API +app.include_router(api_auth_router) +app.include_router(api_admin_router) app.include_router(api_assets_router) app.include_router(api_char_router) app.include_router(api_gen_router) app.include_router(api_album_router) -app.include_router(api_admin_router) -app.include_router(api_auth_router) app.include_router(project_api_router) +# Prometheus Metrics (Instrument after all routers are added) +Instrumentator( + should_group_status_codes=False, # 200/201/204 отдельно (по желанию) + should_ignore_untemplated=False, # НЕ игнорировать "сырые" пути + # should_group_untemplated=False, # (опционально) не схлопывать untemplated в "none" +).instrument( + app, + metric_namespace="ai_bot", +).expose(app, endpoint="/metrics", include_in_schema=False) +app_info = Info("fastapi_app_info", "FastAPI application info") +app_info.info({"app_name": "ai-bot"}) + # --- ХЕНДЛЕРЫ БОТА (Main Router) --- @main_router.message(Command("help"))