From 762bf571ebd001a19d2e64d71be8d9c7924201bf Mon Sep 17 00:00:00 2001 From: caseyta Date: Thu, 14 Dec 2023 23:42:51 +0000 Subject: [PATCH] Configure OTEL instrumentation for Jaeger --- cohd/app.py | 37 ++++++++++++++++++++++++++++++++++++- requirements.txt | 3 +++ 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/cohd/app.py b/cohd/app.py index 5b91913..5a06e41 100644 --- a/cohd/app.py +++ b/cohd/app.py @@ -1,9 +1,16 @@ import logging.config -from flask import Flask, request, redirect +from flask import Flask from flask_cors import CORS from flask_caching import Cache +from opentelemetry.instrumentation.flask import FlaskInstrumentor +from opentelemetry import trace +from opentelemetry.sdk.resources import SERVICE_NAME as telemetery_service_name_key, Resource +from opentelemetry.sdk.trace import TracerProvider +from opentelemetry.sdk.trace.export import BatchSpanProcessor +from opentelemetry.exporter.jaeger.thrift import JaegerExporter + from .google_analytics import GoogleAnalytics ######### @@ -40,3 +47,31 @@ 'handlers': ['wsgi', 'file'] } }) + +logging.info('About to instrument app for OTEL') +# set the service name for our trace provider +# this will tag every trace with the service name given +tp = TracerProvider( + resource=Resource.create({telemetery_service_name_key: 'COHD'}) + ) +# create an exporter to jaeger +jaeger_host = 'localhost' +deployment_env = app.config.get('DEPLOYMENT_ENV', 'dev') +if deployment_env[:4] == 'ITRB': + jaeger_host = 'jaeger-otel-agent.sri' +# jaeger_exporter = OTLPSpanExporter(endpoint=jaeger_host) +jaeger_exporter = JaegerExporter( + agent_host_name=jaeger_host, + agent_port=6831, + ) +# here we use the exporter to export each span in a trace +tp.add_span_processor( + BatchSpanProcessor(jaeger_exporter) +) +trace.set_tracer_provider( + tp +) +otel_excluded_urls = 'health,api/health' +tracer = trace.get_tracer(__name__) +FlaskInstrumentor().instrument_app(app) +logging.info('Finished instrumenting app for OTEL') \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 42ba69d..7debe48 100644 --- a/requirements.txt +++ b/requirements.txt @@ -11,3 +11,6 @@ apscheduler bmt reasoner-validator>=3.8 linkml-runtime<1.6.0 +opentelemetry-sdk +opentelemetry-instrumentation-flask +opentelemetry-exporter-jaeger