Skip to content

Commit 0098495

Browse files
authored
chore: sample for opentelemetry traces (#1323)
1 parent 992fcae commit 0098495

File tree

1 file changed

+34
-4
lines changed

1 file changed

+34
-4
lines changed

examples/trace.py

Lines changed: 34 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,18 +18,19 @@
1818

1919
import google.cloud.spanner as spanner
2020
from opentelemetry.exporter.cloud_trace import CloudTraceSpanExporter
21+
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
2122
from opentelemetry.sdk.trace import TracerProvider
2223
from opentelemetry.sdk.trace.export import BatchSpanProcessor
2324
from opentelemetry.sdk.trace.sampling import ALWAYS_ON
2425
from opentelemetry import trace
2526
from opentelemetry.propagate import set_global_textmap
2627
from opentelemetry.trace.propagation.tracecontext import TraceContextTextMapPropagator
2728

29+
# Setup common variables that'll be used between Spanner and traces.
30+
project_id = os.environ.get('SPANNER_PROJECT_ID', 'test-project')
2831

29-
def main():
30-
# Setup common variables that'll be used between Spanner and traces.
31-
project_id = os.environ.get('SPANNER_PROJECT_ID', 'test-project')
32-
32+
def spanner_with_cloud_trace():
33+
# [START spanner_opentelemetry_traces_cloudtrace_usage]
3334
# Setup OpenTelemetry, trace and Cloud Trace exporter.
3435
tracer_provider = TracerProvider(sampler=ALWAYS_ON)
3536
trace_exporter = CloudTraceSpanExporter(project_id=project_id)
@@ -40,6 +41,35 @@ def main():
4041
project_id,
4142
observability_options=dict(tracer_provider=tracer_provider, enable_extended_tracing=True, enable_end_to_end_tracing=True),
4243
)
44+
45+
# [END spanner_opentelemetry_traces_cloudtrace_usage]
46+
return spanner_client
47+
48+
def spanner_with_otlp():
49+
# [START spanner_opentelemetry_traces_otlp_usage]
50+
# Setup OpenTelemetry, trace and OTLP exporter.
51+
tracer_provider = TracerProvider(sampler=ALWAYS_ON)
52+
otlp_exporter = OTLPSpanExporter(endpoint="http://localhost:4317")
53+
tracer_provider.add_span_processor(BatchSpanProcessor(otlp_exporter))
54+
55+
# Setup the Cloud Spanner Client.
56+
spanner_client = spanner.Client(
57+
project_id,
58+
observability_options=dict(tracer_provider=tracer_provider, enable_extended_tracing=True, enable_end_to_end_tracing=True),
59+
)
60+
# [END spanner_opentelemetry_traces_otlp_usage]
61+
return spanner_client
62+
63+
64+
def main():
65+
# Setup OpenTelemetry, trace and Cloud Trace exporter.
66+
tracer_provider = TracerProvider(sampler=ALWAYS_ON)
67+
trace_exporter = CloudTraceSpanExporter(project_id=project_id)
68+
tracer_provider.add_span_processor(BatchSpanProcessor(trace_exporter))
69+
70+
# Setup the Cloud Spanner Client.
71+
# Change to "spanner_client = spanner_with_otlp" to use OTLP exporter
72+
spanner_client = spanner_with_cloud_trace()
4373
instance = spanner_client.instance('test-instance')
4474
database = instance.database('test-db')
4575

0 commit comments

Comments
 (0)