mirror of
https://github.com/open-webui/open-webui.git
synced 2025-12-12 04:15:25 +00:00
parent
e76f72576e
commit
58cff5e482
2 changed files with 22 additions and 0 deletions
|
|
@ -325,6 +325,13 @@ class UsersTable:
|
|||
except Exception:
|
||||
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]:
|
||||
try:
|
||||
with get_db() as db:
|
||||
|
|
|
|||
|
|
@ -99,6 +99,9 @@ def _build_meter_provider(resource: Resource) -> MeterProvider:
|
|||
View(
|
||||
instrument_name="webui.users.active",
|
||||
),
|
||||
View(
|
||||
instrument_name="webui.users.active.today",
|
||||
),
|
||||
]
|
||||
|
||||
provider = MeterProvider(
|
||||
|
|
@ -159,6 +162,18 @@ def setup_metrics(app: FastAPI, resource: Resource) -> None:
|
|||
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
|
||||
@app.middleware("http")
|
||||
async def _metrics_middleware(request: Request, call_next):
|
||||
|
|
|
|||
Loading…
Reference in a new issue