diff --git a/libs/executors/garf_executors/__init__.py b/libs/executors/garf_executors/__init__.py index a49f0c2..a22deb3 100644 --- a/libs/executors/garf_executors/__init__.py +++ b/libs/executors/garf_executors/__init__.py @@ -57,4 +57,4 @@ def setup_executor( 'ApiExecutionContext', ] -__version__ = '0.1.4' +__version__ = '0.1.5' diff --git a/libs/executors/garf_executors/entrypoints/tracer.py b/libs/executors/garf_executors/entrypoints/tracer.py index bafadeb..582e361 100644 --- a/libs/executors/garf_executors/entrypoints/tracer.py +++ b/libs/executors/garf_executors/entrypoints/tracer.py @@ -39,4 +39,18 @@ def initialize_tracer(): OTLPSpanExporter(endpoint=otel_endpoint, insecure=True) ) tracer_provider.add_span_processor(otlp_processor) + tracer_provider.add_span_processor(otlp_processor) + if gcp_project_id := os.getenv('OTEL_EXPORTER_GCP_TRACE_PROJECT_ID'): + try: + from opentelemetry.exporter.cloud_trace import CloudTraceSpanExporter + except ImportError as e: + raise ImportError( + 'Please install garf_executors with GCP support ' + '- `pip install garf_executors[gcp]`' + ) from e + + cloud_span_processor = BatchSpanProcessor( + CloudTraceSpanExporter(project_id=gcp_project_id) + ) + tracer_provider.add_span_processor(cloud_span_processor) trace.set_tracer_provider(tracer_provider) diff --git a/libs/executors/pyproject.toml b/libs/executors/pyproject.toml index c87a4dd..bf96dbe 100644 --- a/libs/executors/pyproject.toml +++ b/libs/executors/pyproject.toml @@ -11,6 +11,7 @@ dependencies = [ "pydantic", "opentelemetry-api", "opentelemetry-sdk", + "opentelemetry-exporter-otlp", ] authors = [ {name = "Google Inc. (gTech gPS CSE team)", email = "no-reply@google.com"}, @@ -48,13 +49,15 @@ sql=[ "garf-io[sqlalchemy]", "pandas", ] +gcp= [ + "opentelemetry-exporter-gcp-trace", +] server=[ "fastapi[standard]", "opentelemetry-instrumentation-fastapi", - "opentelemetry-exporter-otlp", ] all = [ - "garf-executors[bq,sql,server]" + "garf-executors[bq,sql,server,gcp]" ] [project.scripts] garf="garf_executors.entrypoints.cli:main"