mirror of
https://github.com/open-webui/open-webui
synced 2025-06-26 18:26:48 +00:00
Add dedicated class for metrics. Count logins and new chats
This commit is contained in:
27
backend/open_webui/utils/telemetry/metrics.py
Normal file
27
backend/open_webui/utils/telemetry/metrics.py
Normal file
@@ -0,0 +1,27 @@
|
||||
from typing import Optional
|
||||
|
||||
|
||||
class TelemetryMetrics:
|
||||
def __init__(self, meter):
|
||||
self.login_counter = meter.create_counter(
|
||||
"user_login_total", description="Total number of user logins"
|
||||
)
|
||||
self.user_request_counter = meter.create_counter(
|
||||
"user_request_total", description="Total number of user requests"
|
||||
)
|
||||
|
||||
def track_user_login(self, user_id: str, email: str):
|
||||
self.login_counter.add(
|
||||
1, {"method": "regular", "user_id": user_id, "email": email}
|
||||
)
|
||||
|
||||
def track_user_request(self, user_id: str):
|
||||
self.user_request_counter.add(1, {"user_id": user_id})
|
||||
|
||||
|
||||
telemetry_metrics: Optional[TelemetryMetrics] = None
|
||||
|
||||
|
||||
def initialize_telemetry_metrics(meter):
|
||||
global telemetry_metrics
|
||||
telemetry_metrics = TelemetryMetrics(meter)
|
||||
@@ -1,4 +1,5 @@
|
||||
from fastapi import FastAPI
|
||||
from open_webui.utils.telemetry.metrics import initialize_telemetry_metrics
|
||||
from opentelemetry import trace, metrics
|
||||
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
|
||||
from opentelemetry.exporter.otlp.proto.grpc.metric_exporter import OTLPMetricExporter
|
||||
@@ -14,10 +15,6 @@ from open_webui.utils.telemetry.exporters import LazyBatchSpanProcessor
|
||||
from open_webui.utils.telemetry.instrumentors import Instrumentor
|
||||
from open_webui.env import OTEL_SERVICE_NAME, OTEL_EXPORTER_OTLP_ENDPOINT
|
||||
|
||||
meter = None
|
||||
login_counter = None
|
||||
active_sessions_gauge = None
|
||||
|
||||
|
||||
def setup(app: FastAPI, db_engine: Engine):
|
||||
resource = Resource.create(attributes={SERVICE_NAME: OTEL_SERVICE_NAME})
|
||||
@@ -41,14 +38,5 @@ def setup(app: FastAPI, db_engine: Engine):
|
||||
)
|
||||
meter_provider = MeterProvider(resource=resource, metric_readers=[reader])
|
||||
metrics.set_meter_provider(meter_provider)
|
||||
|
||||
global meter, login_counter, active_sessions_gauge
|
||||
meter = metrics.get_meter(OTEL_SERVICE_NAME)
|
||||
|
||||
login_counter = meter.create_counter(
|
||||
"user_login_total", description="Total number of user logins"
|
||||
)
|
||||
|
||||
active_sessions_gauge = meter.create_gauge(
|
||||
"active.sessions", description="Number of currently active user sessions"
|
||||
)
|
||||
initialize_telemetry_metrics(meter)
|
||||
|
||||
Reference in New Issue
Block a user