Skip to content

Commit

Permalink
Merge pull request AOT-Technologies#2613 from sinto-aot/fwf-1900-open…
Browse files Browse the repository at this point in the history
…telemetry-utils

Added telemetry.py in forms-flow-api-utils
  • Loading branch information
arun-s-aot authored Mar 7, 2025
2 parents 8fb1ba6 + 657f3cd commit 8d1380f
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -60,3 +60,4 @@
from .sentry import init_sentry
from .formio import generate_formio_patch_request
from .test_utils import get_token
from .telemetry import setup_tracing
36 changes: 36 additions & 0 deletions forms-flow-api-utils/src/formsflow_api_utils/utils/telemetry.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
"""This exposes Opentelemetry service."""

import os

from opentelemetry import trace
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import (
OTLPSpanExporter,
)
from opentelemetry.instrumentation.flask import FlaskInstrumentor
from opentelemetry.instrumentation.requests import RequestsInstrumentor
from opentelemetry.sdk.resources import Resource
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor


def setup_tracing(app, service_name):
"""Sets up OpenTelemetry tracing for the application."""
# Check if OpenTelemetry tracing is enabled
if os.getenv("ENABLE_OPENTELEMETRY", "false").lower() != "true":
app.logger.info("OpenTelemetry tracing is disabled.")
return

resource = Resource.create({"service.name": service_name})
trace_provider = TracerProvider(resource=resource)
trace.set_tracer_provider(trace_provider)

# Configure the OTLP exporter to send data to the OpenTelemetry Collector
otlp_endpoint = os.getenv("OTLP_ENDPOINT")
otlp_exporter = OTLPSpanExporter(endpoint=otlp_endpoint, insecure=True)

# Add the OTLP exporter to the tracer provider
otlp_span_processor = BatchSpanProcessor(otlp_exporter)
trace_provider.add_span_processor(otlp_span_processor)

FlaskInstrumentor().instrument_app(app)
RequestsInstrumentor().instrument()

0 comments on commit 8d1380f

Please sign in to comment.