{"library":"opentelemetry-exporter-gcp-trace","title":"Google Cloud Trace Exporter for OpenTelemetry","description":"The `opentelemetry-exporter-gcp-trace` library provides an OpenTelemetry `SpanExporter` implementation to send trace data to Google Cloud Trace. It is part of the larger `opentelemetry-operations-python` project maintained by Google, currently at version 1.11.0, with regular updates (typically monthly or bi-monthly) to maintain compatibility with the OpenTelemetry SDK and Google Cloud services.","language":"python","status":"active","last_verified":"Wed May 13","install":{"commands":["pip install opentelemetry-exporter-gcp-trace opentelemetry-sdk opentelemetry-resourcedetector-gcp"],"cli":null},"imports":["from opentelemetry.exporter.gcp_trace import GcpTraceExporter","from opentelemetry.sdk.trace import TracerProvider","from opentelemetry.sdk.trace.export import BatchSpanProcessor","from opentelemetry_resourcedetector_gcp import GcpResourceDetector"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import os\nfrom opentelemetry import trace\nfrom opentelemetry.sdk.resources import Resource\nfrom opentelemetry.sdk.trace import TracerProvider\nfrom opentelemetry.sdk.trace.export import BatchSpanProcessor\nfrom opentelemetry.exporter.gcp_trace import GcpTraceExporter\nfrom opentelemetry_resourcedetector_gcp import GcpResourceDetector\n\n# Configure GCP authentication:\n# This exporter uses Application Default Credentials (ADC).\n# Ensure GOOGLE_APPLICATION_CREDENTIALS environment variable points to a service account key\n# or run on a GCP environment (VM, Cloud Run, GKE, etc.) with appropriate permissions.\n# For example, to use a local service account file:\n# export GOOGLE_APPLICATION_CREDENTIALS=\"/path/to/your/service-account-key.json\"\n\n# 1. Detect GCP resources automatically (highly recommended)\n# This helps populate project ID, instance ID, etc., which are crucial for Cloud Trace.\nresource = GcpResourceDetector().detect().merge(\n    Resource.create({\"service.name\": \"my-gcp-python-app\"})\n)\n\n# 2. Set up the TracerProvider with the detected resource\nprovider = TracerProvider(resource=resource)\ntrace.set_tracer_provider(provider)\n\n# 3. Instantiate the GCP Trace Exporter\nexporter = GcpTraceExporter()\n\n# 4. Set up a BatchSpanProcessor to send traces efficiently\n# Spans are batched and sent asynchronously.\nspan_processor = BatchSpanProcessor(exporter)\nprovider.add_span_processor(span_processor)\n\n# 5. Get a tracer and create spans\ntracer = trace.get_tracer(__name__)\n\nwith tracer.start_as_current_span(\"parent-operation-gcp\"):\n    print(\"Performing some work that will be traced in GCP...\")\n    with tracer.start_as_current_span(\"child-operation-db\"):\n        print(\"Simulating a database call...\")\n    with tracer.start_as_current_span(\"child-operation-api\"):\n        print(\"Simulating an external API call...\")\n\n# 6. Crucially, shut down the provider to ensure all batched spans are exported\n# In short-lived scripts, this step is vital. In long-running services, it's typically\n# handled gracefully on application shutdown.\nprovider.shutdown()\nprint(\"Traces sent to Google Cloud Trace. Check your GCP project's Trace Explorer.\")","lang":"python","description":"This quickstart demonstrates how to initialize the `GcpTraceExporter` and integrate it with the OpenTelemetry SDK to send traces to Google Cloud Trace. It includes the recommended `GcpResourceDetector` for automatic resource attribute population and highlights the importance of `provider.shutdown()` for complete trace export.","tag":null,"tag_description":null,"last_tested":"2026-04-24","results":[{"runtime":"python:3.10-alpine","exit_code":1},{"runtime":"python:3.10-slim","exit_code":1},{"runtime":"python:3.11-alpine","exit_code":1},{"runtime":"python:3.11-slim","exit_code":1},{"runtime":"python:3.12-alpine","exit_code":1},{"runtime":"python:3.12-slim","exit_code":1},{"runtime":"python:3.13-alpine","exit_code":1},{"runtime":"python:3.13-slim","exit_code":1},{"runtime":"python:3.9-alpine","exit_code":1},{"runtime":"python:3.9-slim","exit_code":1}]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-13","installed_version":"1.12.0","pypi_latest":"1.12.0","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":50,"avg_install_s":6.2,"avg_import_s":null,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"opentelemetry-exporter-gcp-trace","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"73.0M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"opentelemetry-exporter-gcp-trace","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"opentelemetry-exporter-gcp-trace","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":6.9,"import_time_s":null,"mem_mb":null,"disk_size":"71M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"opentelemetry-exporter-gcp-trace","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"opentelemetry-exporter-gcp-trace","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"77.9M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"opentelemetry-exporter-gcp-trace","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"opentelemetry-exporter-gcp-trace","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":6.1,"import_time_s":null,"mem_mb":null,"disk_size":"76M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"opentelemetry-exporter-gcp-trace","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"opentelemetry-exporter-gcp-trace","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"69.2M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"opentelemetry-exporter-gcp-trace","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"opentelemetry-exporter-gcp-trace","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":5.2,"import_time_s":null,"mem_mb":null,"disk_size":"67M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"opentelemetry-exporter-gcp-trace","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"opentelemetry-exporter-gcp-trace","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"69.0M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"opentelemetry-exporter-gcp-trace","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"opentelemetry-exporter-gcp-trace","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":5,"import_time_s":null,"mem_mb":null,"disk_size":"67M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"opentelemetry-exporter-gcp-trace","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"opentelemetry-exporter-gcp-trace","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"73.0M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"opentelemetry-exporter-gcp-trace","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"opentelemetry-exporter-gcp-trace","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":8,"import_time_s":null,"mem_mb":null,"disk_size":"71M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"opentelemetry-exporter-gcp-trace","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null}]}}