From 544b83587ab0f5b7a5f53a4df145b169679c79f1 Mon Sep 17 00:00:00 2001 From: Martin Varga Date: Wed, 1 Jul 2026 09:29:07 +0200 Subject: [PATCH] Add resource with pid to OTEL metrics --- server/mergin/otel/instrument.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/server/mergin/otel/instrument.py b/server/mergin/otel/instrument.py index e4d1f538..701e0c32 100644 --- a/server/mergin/otel/instrument.py +++ b/server/mergin/otel/instrument.py @@ -20,17 +20,21 @@ from .config import Configuration -def setup_otel_provider(): - """ - Initializes the Tracer Engine. Call this Gunicorn in post_fork or in Celery worker_process_init. - """ - resource = Resource.create( +def create_resource(): + return Resource.create( { "service.name": Configuration.OTEL_SERVICE_NAME, - "process.pid": os.getpid(), # useful for debugging forks + "process.pid": os.getpid(), } ) + +def setup_otel_provider(): + """ + Initializes the Tracer Engine. Call this Gunicorn in post_fork or in Celery worker_process_init. + """ + resource = create_resource() + sampler = ParentBased(root=TraceIdRatioBased(Configuration.OTEL_TRACES_SAMPLER_ARG)) provider = TracerProvider(resource=resource, sampler=sampler) @@ -46,12 +50,13 @@ def setup_otel_provider(): def setup_otel_metrics(): """Initializes the Metrics Engine. Call this in post_fork.""" + resource = create_resource() exporter = OTLPMetricExporter( endpoint=Configuration.OTEL_EXPORTER_OTLP_ENDPOINT, insecure=True ) reader = PeriodicExportingMetricReader(exporter) - provider = MeterProvider(metric_readers=[reader]) + provider = MeterProvider(resource=resource, metric_readers=[reader]) metrics.set_meter_provider(provider)