18
18
19
19
import google .cloud .spanner as spanner
20
20
from opentelemetry .exporter .cloud_trace import CloudTraceSpanExporter
21
+ from opentelemetry .exporter .otlp .proto .grpc .trace_exporter import OTLPSpanExporter
21
22
from opentelemetry .sdk .trace import TracerProvider
22
23
from opentelemetry .sdk .trace .export import BatchSpanProcessor
23
24
from opentelemetry .sdk .trace .sampling import ALWAYS_ON
24
25
from opentelemetry import trace
25
26
from opentelemetry .propagate import set_global_textmap
26
27
from opentelemetry .trace .propagation .tracecontext import TraceContextTextMapPropagator
27
28
29
+ # Setup common variables that'll be used between Spanner and traces.
30
+ project_id = os .environ .get ('SPANNER_PROJECT_ID' , 'test-project' )
28
31
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]
33
34
# Setup OpenTelemetry, trace and Cloud Trace exporter.
34
35
tracer_provider = TracerProvider (sampler = ALWAYS_ON )
35
36
trace_exporter = CloudTraceSpanExporter (project_id = project_id )
@@ -40,6 +41,35 @@ def main():
40
41
project_id ,
41
42
observability_options = dict (tracer_provider = tracer_provider , enable_extended_tracing = True , enable_end_to_end_tracing = True ),
42
43
)
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 ()
43
73
instance = spanner_client .instance ('test-instance' )
44
74
database = instance .database ('test-db' )
45
75
0 commit comments