Skip to content

Commit 31df9b7

Browse files
authored
docs: Create OpenTelemetry Quickstart Sample (#2861)
1 parent ebf22d7 commit 31df9b7

File tree

5 files changed

+98
-0
lines changed

5 files changed

+98
-0
lines changed

‎samples/install-without-bom/pom.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,16 @@
7676
<classifier>tests</classifier>
7777
<scope>test</scope>
7878
</dependency>
79+
<dependency>
80+
<groupId>com.google.cloud.opentelemetry</groupId>
81+
<artifactId>exporter-trace</artifactId>
82+
<version>0.31.0</version>
83+
</dependency>
84+
<dependency>
85+
<groupId>com.google.cloud.opentelemetry</groupId>
86+
<artifactId>propagators-gcp</artifactId>
87+
<version>0.33.0-alpha</version>
88+
</dependency>
7989
</dependencies>
8090

8191
<!-- compile and run all snippet tests -->

‎samples/snapshot/pom.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,16 @@
6868
<classifier>tests</classifier>
6969
<scope>test</scope>
7070
</dependency>
71+
<dependency>
72+
<groupId>com.google.cloud.opentelemetry</groupId>
73+
<artifactId>exporter-trace</artifactId>
74+
<version>0.31.0</version>
75+
</dependency>
76+
<dependency>
77+
<groupId>com.google.cloud.opentelemetry</groupId>
78+
<artifactId>propagators-gcp</artifactId>
79+
<version>0.33.0-alpha</version>
80+
</dependency>
7181
</dependencies>
7282

7383
<!-- compile and run all snippet tests -->

‎samples/snippets/pom.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,16 @@
7979
<version>1.136.0</version>
8080
<scope>test</scope>
8181
</dependency>
82+
<dependency>
83+
<groupId>com.google.cloud.opentelemetry</groupId>
84+
<artifactId>exporter-trace</artifactId>
85+
<version>0.31.0</version>
86+
</dependency>
87+
<dependency>
88+
<groupId>com.google.cloud.opentelemetry</groupId>
89+
<artifactId>propagators-gcp</artifactId>
90+
<version>0.33.0-alpha</version>
91+
</dependency>
8292
<dependency>
8393
<!-- tests jars aren't in the bom, manually include the version here -->
8494
<groupId>com.google.cloud</groupId>
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
/*
2+
* Copyright 2024 Google Inc.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package com.example.storage;
18+
19+
20+
21+
import com.google.cloud.opentelemetry.propagators.XCloudTraceContextPropagator;
22+
import com.google.cloud.opentelemetry.trace.TraceExporter;
23+
import com.google.cloud.storage.Storage;
24+
import com.google.cloud.storage.StorageOptions;
25+
import io.opentelemetry.api.trace.propagation.W3CTraceContextPropagator;
26+
import io.opentelemetry.context.propagation.ContextPropagators;
27+
import io.opentelemetry.context.propagation.TextMapPropagator;
28+
import io.opentelemetry.sdk.OpenTelemetrySdk;
29+
import io.opentelemetry.sdk.trace.SdkTracerProvider;
30+
import io.opentelemetry.sdk.trace.export.BatchSpanProcessor;
31+
import io.opentelemetry.sdk.trace.export.SpanExporter;
32+
import io.opentelemetry.sdk.trace.samplers.Sampler;
33+
34+
// [START storage_enable_otel_tracing]
35+
public class QuickstartOpenTelemetrySample {
36+
public static void main(String... args) throws Exception {
37+
SpanExporter spanExporter = TraceExporter.createWithDefaultConfiguration();
38+
TextMapPropagator propagators = TextMapPropagator.composite(
39+
W3CTraceContextPropagator.getInstance(),
40+
new XCloudTraceContextPropagator(/*oneway=*/true));
41+
42+
OpenTelemetrySdk openTelemetry =
43+
OpenTelemetrySdk.builder()
44+
.setPropagators(ContextPropagators.create(propagators))
45+
.setTracerProvider(
46+
SdkTracerProvider.builder()
47+
// Sample Rate is set to alwaysOn
48+
// It is recommended to sample based on a ratio for standard use ie.
49+
// .setSampler(Sampler.traceIdRatioBased(0.2)) // sample only 20% of trace ids
50+
.setSampler(Sampler.alwaysOn())
51+
.addSpanProcessor(BatchSpanProcessor.builder(spanExporter).build())
52+
.build())
53+
.build();
54+
StorageOptions options = StorageOptions.newBuilder().setOpenTelemetry(openTelemetry).build();
55+
Storage storage = options.getService();
56+
System.out.println("Created an instance of storage with OpenTelemetry configured");
57+
58+
}
59+
}
60+
// [END storage_enable_otel_tracing]

‎samples/snippets/src/test/java/com/example/storage/QuickstartSampleIT.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,4 +86,12 @@ public void testQuickstartStorageControl() throws Exception {
8686
"Performed getStorageLayout request for %s",
8787
StorageLayoutName.format("_", bucketName)));
8888
}
89+
90+
@Test
91+
public void testQuickstartOpenTelemetry() throws Exception {
92+
QuickstartOpenTelemetrySample.main();
93+
String got = stdOutCaptureRule.getCapturedOutputAsUtf8String();
94+
assertThat(got)
95+
.contains("Created an instance of storage with OpenTelemetry configured");
96+
}
8997
}

0 commit comments

Comments
 (0)