mirror of
https://github.com/open-webui/open-webui.git
synced 2025-12-12 12:25:20 +00:00
parent
e76f72576e
commit
58cff5e482
2 changed files with 22 additions and 0 deletions
|
|
@ -325,6 +325,13 @@ class UsersTable:
|
||||||
except Exception:
|
except Exception:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
def get_num_users_active_today(self) -> Optional[int]:
|
||||||
|
with get_db() as db:
|
||||||
|
current_timestamp = int(datetime.datetime.now().timestamp())
|
||||||
|
today_midnight_timestamp = current_timestamp - (current_timestamp % 86400)
|
||||||
|
query = db.query(User).filter(User.last_active_at > today_midnight_timestamp)
|
||||||
|
return query.count()
|
||||||
|
|
||||||
def update_user_role_by_id(self, id: str, role: str) -> Optional[UserModel]:
|
def update_user_role_by_id(self, id: str, role: str) -> Optional[UserModel]:
|
||||||
try:
|
try:
|
||||||
with get_db() as db:
|
with get_db() as db:
|
||||||
|
|
|
||||||
|
|
@ -99,6 +99,9 @@ def _build_meter_provider(resource: Resource) -> MeterProvider:
|
||||||
View(
|
View(
|
||||||
instrument_name="webui.users.active",
|
instrument_name="webui.users.active",
|
||||||
),
|
),
|
||||||
|
View(
|
||||||
|
instrument_name="webui.users.active.today",
|
||||||
|
),
|
||||||
]
|
]
|
||||||
|
|
||||||
provider = MeterProvider(
|
provider = MeterProvider(
|
||||||
|
|
@ -159,6 +162,18 @@ def setup_metrics(app: FastAPI, resource: Resource) -> None:
|
||||||
callbacks=[observe_active_users],
|
callbacks=[observe_active_users],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def observe_users_active_today(
|
||||||
|
options: metrics.CallbackOptions,
|
||||||
|
) -> Sequence[metrics.Observation]:
|
||||||
|
return [metrics.Observation(value=Users.get_num_users_active_today())]
|
||||||
|
|
||||||
|
meter.create_observable_gauge(
|
||||||
|
name="webui.users.active.today",
|
||||||
|
description="Number of users active since midnight today",
|
||||||
|
unit="users",
|
||||||
|
callbacks=[observe_users_active_today],
|
||||||
|
)
|
||||||
|
|
||||||
# FastAPI middleware
|
# FastAPI middleware
|
||||||
@app.middleware("http")
|
@app.middleware("http")
|
||||||
async def _metrics_middleware(request: Request, call_next):
|
async def _metrics_middleware(request: Request, call_next):
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue