| 
									
										
										
										
											2025-03-11 11:53:03 +08:00
										 |  |  | from fastapi import FastAPI | 
					
						
							| 
									
										
										
										
											2025-03-10 22:27:31 +08:00
										 |  |  | from opentelemetry import trace | 
					
						
							|  |  |  | from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter | 
					
						
							|  |  |  | from opentelemetry.sdk.resources import SERVICE_NAME, Resource | 
					
						
							|  |  |  | from opentelemetry.sdk.trace import TracerProvider | 
					
						
							| 
									
										
										
										
											2025-03-11 11:53:03 +08:00
										 |  |  | from sqlalchemy import Engine | 
					
						
							| 
									
										
										
										
											2025-03-10 22:27:31 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-03-12 02:55:30 +08:00
										 |  |  | from open_webui.utils.telemetry.exporters import LazyBatchSpanProcessor | 
					
						
							|  |  |  | from open_webui.utils.telemetry.instrumentors import Instrumentor | 
					
						
							| 
									
										
										
										
											2025-05-23 06:18:15 +08:00
										 |  |  | from open_webui.utils.telemetry.metrics import setup_metrics | 
					
						
							|  |  |  | from open_webui.env import ( | 
					
						
							|  |  |  |     OTEL_SERVICE_NAME, | 
					
						
							|  |  |  |     OTEL_EXPORTER_OTLP_ENDPOINT, | 
					
						
							|  |  |  |     ENABLE_OTEL_METRICS, | 
					
						
							|  |  |  | ) | 
					
						
							| 
									
										
										
										
											2025-03-10 22:27:31 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-03-11 11:53:03 +08:00
										 |  |  | def setup(app: FastAPI, db_engine: Engine): | 
					
						
							|  |  |  |     # set up trace | 
					
						
							| 
									
										
										
										
											2025-03-10 22:27:31 +08:00
										 |  |  |     trace.set_tracer_provider( | 
					
						
							|  |  |  |         TracerProvider( | 
					
						
							| 
									
										
										
										
											2025-03-11 11:53:03 +08:00
										 |  |  |             resource=Resource.create(attributes={SERVICE_NAME: OTEL_SERVICE_NAME}) | 
					
						
							| 
									
										
										
										
											2025-03-10 22:27:31 +08:00
										 |  |  |         ) | 
					
						
							|  |  |  |     ) | 
					
						
							| 
									
										
										
										
											2025-03-11 11:53:03 +08:00
										 |  |  |     # otlp export | 
					
						
							|  |  |  |     exporter = OTLPSpanExporter(endpoint=OTEL_EXPORTER_OTLP_ENDPOINT) | 
					
						
							| 
									
										
										
										
											2025-03-10 22:27:31 +08:00
										 |  |  |     trace.get_tracer_provider().add_span_processor(LazyBatchSpanProcessor(exporter)) | 
					
						
							| 
									
										
										
										
											2025-03-11 11:53:03 +08:00
										 |  |  |     Instrumentor(app=app, db_engine=db_engine).instrument() | 
					
						
							| 
									
										
										
										
											2025-05-23 06:18:15 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     # set up metrics only if enabled | 
					
						
							|  |  |  |     if ENABLE_OTEL_METRICS: | 
					
						
							|  |  |  |         setup_metrics(app) |