@@ -4,6 +4,9 @@ weight: 50
4
4
cSpell:ignore : okhttp
5
5
---
6
6
7
+ <!-- markdownlint-disable blanks-around-fences -->
8
+ <? code-excerpt path-base="examples/java/exporters"?>
9
+
7
10
{{% docs/languages/exporters/intro java %}}
8
11
9
12
### Dependencies {#otlp-dependencies}
@@ -18,7 +21,9 @@ suffice and be the most simple:
18
21
19
22
``` kotlin
20
23
dependencies {
21
- implementation ' io.opentelemetry:opentelemetry-exporter-otlp:{{% param vers.otel %}}'
24
+ implementation(" io.opentelemetry:opentelemetry-exporter-otlp:{{% param vers.otel %}}" )
25
+ implementation(" io.opentelemetry:opentelemetry-sdk:{{% param vers.otel %}}" )
26
+ implementation(" io.opentelemetry.semconv:opentelemetry-semconv:{{% param vers.semconv %}}-alpha" )
22
27
}
23
28
```
24
29
@@ -31,6 +36,15 @@ dependencies {
31
36
<groupId >io.opentelemetry</groupId >
32
37
<artifactId >opentelemetry-exporter-otlp</artifactId >
33
38
</dependency >
39
+ <dependency >
40
+ <groupId >io.opentelemetry</groupId >
41
+ <artifactId >opentelemetry-sdk</artifactId >
42
+ </dependency >
43
+ <dependency >
44
+ <groupId >io.opentelemetry.semconv</groupId >
45
+ <artifactId >opentelemetry-semconv</artifactId >
46
+ <version >{{% param vers.semconv %}}-alpha</version >
47
+ </dependency >
34
48
</dependencies >
35
49
</project >
36
50
```
@@ -94,31 +108,30 @@ Note, that in the case of exporting via OTLP you do not need to set
94
108
In the case of [ manual configuration] you can update the [ example app] ( /docs/languages/java/instrumentation#example-app )
95
109
like the following:
96
110
97
- ``` java { hl_lines=["12-14",21,"39-53"] }
111
+ <!-- prettier-ignore-start -->
112
+ <? code-excerpt "src/main/java/otel/DiceApplication.java"?>
113
+ ``` java
98
114
package otel ;
99
115
100
- import org.springframework.boot.SpringApplication ;
101
- import org.springframework.boot.Banner ;
102
- import org.springframework.boot.autoconfigure.SpringBootApplication ;
103
- import org.springframework.context.annotation.Bean ;
104
-
105
116
import io.opentelemetry.api.OpenTelemetry ;
106
- import io.opentelemetry.api.common.Attributes ;
107
117
import io.opentelemetry.api.trace.propagation.W3CTraceContextPropagator ;
108
118
import io.opentelemetry.context.propagation.ContextPropagators ;
119
+ import io.opentelemetry.exporter.otlp.logs.OtlpGrpcLogRecordExporter ;
109
120
import io.opentelemetry.exporter.otlp.metrics.OtlpGrpcMetricExporter ;
110
121
import io.opentelemetry.exporter.otlp.trace.OtlpGrpcSpanExporter ;
111
- import io.opentelemetry.exporter.otlp.logs.OtlpGrpcLogRecordExporter ;
112
122
import io.opentelemetry.sdk.OpenTelemetrySdk ;
123
+ import io.opentelemetry.sdk.logs.SdkLoggerProvider ;
124
+ import io.opentelemetry.sdk.logs.export.BatchLogRecordProcessor ;
113
125
import io.opentelemetry.sdk.metrics.SdkMeterProvider ;
114
126
import io.opentelemetry.sdk.metrics.export.PeriodicMetricReader ;
115
127
import io.opentelemetry.sdk.resources.Resource ;
116
128
import io.opentelemetry.sdk.trace.SdkTracerProvider ;
117
129
import io.opentelemetry.sdk.trace.export.BatchSpanProcessor ;
118
- import io.opentelemetry.sdk.logs.export.BatchLogRecordProcessor ;
119
- import io.opentelemetry.sdk.logs.SdkLoggerProvider ;
120
- import io.opentelemetry.sdk.logs.export.LogRecordExporter ;
121
- import io.opentelemetry.semconv.resource.attributes.ResourceAttributes ;
130
+ import io.opentelemetry.semconv.ServiceAttributes ;
131
+ import org.springframework.boot.Banner ;
132
+ import org.springframework.boot.SpringApplication ;
133
+ import org.springframework.boot.autoconfigure.SpringBootApplication ;
134
+ import org.springframework.context.annotation.Bean ;
122
135
123
136
@SpringBootApplication
124
137
public class DiceApplication {
@@ -130,35 +143,47 @@ public class DiceApplication {
130
143
131
144
@Bean
132
145
public OpenTelemetry openTelemetry () {
133
- Resource resource = Resource . getDefault(). toBuilder(). put(SERVICE_NAME , " dice-server" ). put(SERVICE_VERSION , " 0.1.0" ). build();
146
+ Resource resource =
147
+ Resource . getDefault(). toBuilder()
148
+ .put(ServiceAttributes . SERVICE_NAME , " dice-server" )
149
+ .put(ServiceAttributes . SERVICE_VERSION , " 0.1.0" )
150
+ .build();
134
151
135
- SdkTracerProvider sdkTracerProvider = SdkTracerProvider . builder()
136
- .addSpanProcessor(BatchSpanProcessor . builder(OtlpGrpcSpanExporter . builder(). build()). build())
152
+ SdkTracerProvider sdkTracerProvider =
153
+ SdkTracerProvider . builder()
154
+ .addSpanProcessor(
155
+ BatchSpanProcessor . builder(OtlpGrpcSpanExporter . builder(). build()). build())
137
156
.setResource(resource)
138
157
.build();
139
158
140
- SdkMeterProvider sdkMeterProvider = SdkMeterProvider . builder()
141
- .registerMetricReader(PeriodicMetricReader . builder(OtlpGrpcMetricExporter . builder(). build()). build())
159
+ SdkMeterProvider sdkMeterProvider =
160
+ SdkMeterProvider . builder()
161
+ .registerMetricReader(
162
+ PeriodicMetricReader . builder(OtlpGrpcMetricExporter . builder(). build()). build())
142
163
.setResource(resource)
143
164
.build();
144
165
145
- SdkLoggerProvider sdkLoggerProvider = SdkLoggerProvider . builder()
166
+ SdkLoggerProvider sdkLoggerProvider =
167
+ SdkLoggerProvider . builder()
146
168
.addLogRecordProcessor(
147
- BatchLogRecordProcessor . builder(OtlpGrpcLogRecordExporter . builder(). build()). build())
169
+ BatchLogRecordProcessor . builder(OtlpGrpcLogRecordExporter . builder(). build())
170
+ .build())
148
171
.setResource(resource)
149
172
.build();
150
173
151
- OpenTelemetry openTelemetry = OpenTelemetrySdk . builder()
152
- .setTracerProvider(sdkTracerProvider)
153
- .setMeterProvider(sdkMeterProvider)
154
- .setLoggerProvider(sdkLoggerProvider)
155
- .setPropagators(ContextPropagators . create(W3CTraceContextPropagator . getInstance()))
156
- .buildAndRegisterGlobal();
174
+ OpenTelemetry openTelemetry =
175
+ OpenTelemetrySdk . builder()
176
+ .setTracerProvider(sdkTracerProvider)
177
+ .setMeterProvider(sdkMeterProvider)
178
+ .setLoggerProvider(sdkLoggerProvider)
179
+ .setPropagators(ContextPropagators . create(W3CTraceContextPropagator . getInstance()))
180
+ .buildAndRegisterGlobal();
157
181
158
182
return openTelemetry;
159
183
}
160
184
}
161
185
```
186
+ <!-- prettier-ignore-end -->
162
187
163
188
## Console
164
189
@@ -217,15 +242,29 @@ dependencies {
217
242
Update your OpenTelemetry configuration to use the exporter and to send data to
218
243
your Prometheus backend:
219
244
245
+ <!-- prettier-ignore-start -->
246
+ <? code-excerpt "src/main/java/otel/PrometheusExporter.java"?>
220
247
``` java
248
+ package otel ;
249
+
221
250
import io.opentelemetry.exporter.prometheus.PrometheusHttpServer ;
251
+ import io.opentelemetry.sdk.metrics.SdkMeterProvider ;
252
+ import io.opentelemetry.sdk.resources.Resource ;
222
253
223
- int prometheusPort = 9464 ;
224
- SdkMeterProvider sdkMeterProvider = SdkMeterProvider . builder()
225
- .registerMetricReader(PrometheusHttpServer . builder(). setPort(prometheusPort). build())
226
- .setResource(resource)
227
- .build();
254
+ public class PrometheusExporter {
255
+ public static SdkMeterProvider create (Resource resource ) {
256
+ int prometheusPort = 9464 ;
257
+ SdkMeterProvider sdkMeterProvider =
258
+ SdkMeterProvider . builder()
259
+ .registerMetricReader(PrometheusHttpServer . builder(). setPort(prometheusPort). build())
260
+ .setResource(resource)
261
+ .build();
262
+
263
+ return sdkMeterProvider;
264
+ }
265
+ }
228
266
```
267
+ <!-- prettier-ignore-end -->
229
268
230
269
With the above you can access your metrics at < http://localhost:9464/metrics > .
231
270
Prometheus or an OpenTelemetry Collector with the Prometheus receiver can scrape
@@ -268,53 +307,104 @@ dependencies {
268
307
Update your OpenTelemetry configuration to use the exporter and to send data to
269
308
your Zipkin backend:
270
309
310
+ <!-- prettier-ignore-start -->
311
+ <? code-excerpt "src/main/java/otel/ZipkinExporter.java"?>
271
312
``` java
313
+ package otel ;
314
+
272
315
import io.opentelemetry.exporter.zipkin.ZipkinSpanExporter ;
316
+ import io.opentelemetry.sdk.resources.Resource ;
317
+ import io.opentelemetry.sdk.trace.SdkTracerProvider ;
318
+ import io.opentelemetry.sdk.trace.export.BatchSpanProcessor ;
273
319
274
- SdkTracerProvider sdkTracerProvider = SdkTracerProvider . builder()
275
- .addSpanProcessor(BatchSpanProcessor . builder(ZipkinSpanExporter . builder(). setEndpoint(" http://localhost:9411/api/v2/spans" ). build()). build())
276
- .setResource(resource)
277
- .build();
320
+ public class ZipkinExporter {
321
+ public static SdkTracerProvider create (Resource resource ) {
322
+ SdkTracerProvider sdkTracerProvider =
323
+ SdkTracerProvider . builder()
324
+ .addSpanProcessor(
325
+ BatchSpanProcessor . builder(
326
+ ZipkinSpanExporter . builder()
327
+ .setEndpoint(" http://localhost:9411/api/v2/spans" )
328
+ .build())
329
+ .build())
330
+ .setResource(resource)
331
+ .build();
332
+
333
+ return sdkTracerProvider;
334
+ }
335
+ }
278
336
```
337
+ <!-- prettier-ignore-end -->
279
338
280
339
{{% docs/languages/exporters/outro java "https://javadoc.io/doc/io.opentelemetry/opentelemetry-sdk-trace/latest/io/opentelemetry/sdk/trace/export/SpanExporter.html " %}}
281
340
282
341
{{< tabpane text=true >}} {{% tab Batch %}}
283
342
343
+ <!-- prettier-ignore-start -->
344
+ <? code-excerpt "src/main/java/otel/BatchExporter.java"?>
284
345
``` java
285
- import io.opentelemetry.sdk.trace.export.BatchSpanProcessor ;
286
- import io.opentelemetry.sdk.logs.export.BatchLogRecordProcessor ;
346
+ package otel ;
287
347
288
- SdkTracerProvider sdkTracerProvider = SdkTracerProvider . builder()
289
- .addSpanProcessor(BatchSpanProcessor . builder(... ). build())
290
- .setResource(resource)
291
- .build();
348
+ import io.opentelemetry.sdk.logs.SdkLoggerProvider ;
349
+ import io.opentelemetry.sdk.logs.export.BatchLogRecordProcessor ;
350
+ import io.opentelemetry.sdk.logs.export.LogRecordExporter ;
351
+ import io.opentelemetry.sdk.resources.Resource ;
352
+ import io.opentelemetry.sdk.trace.SdkTracerProvider ;
353
+ import io.opentelemetry.sdk.trace.export.BatchSpanProcessor ;
354
+ import io.opentelemetry.sdk.trace.export.SpanExporter ;
355
+
356
+ public class BatchExporter {
357
+ public static void create (
358
+ Resource resource , SpanExporter spanExporter , LogRecordExporter logExporter ) {
359
+ SdkTracerProvider sdkTracerProvider =
360
+ SdkTracerProvider . builder()
361
+ .addSpanProcessor(BatchSpanProcessor . builder(spanExporter). build())
362
+ .setResource(resource)
363
+ .build();
292
364
293
- SdkLoggerProvider sdkLoggerProvider = SdkLoggerProvider . builder()
294
- .addLogRecordProcessor(
295
- BatchLogRecordProcessor . builder(... ). build())
296
- .setResource(resource)
297
- .build();
365
+ SdkLoggerProvider sdkLoggerProvider =
366
+ SdkLoggerProvider . builder()
367
+ .addLogRecordProcessor(BatchLogRecordProcessor . builder(logExporter). build())
368
+ .setResource(resource)
369
+ .build();
370
+ }
371
+ }
298
372
```
299
373
300
374
{{% /tab %}} {{% tab Simple %}}
301
375
376
+ <? code-excerpt "src/main/java/otel/SimpleExporter.java"?>
302
377
``` java
303
- import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor ;
304
- import io.opentelemetry.sdk.logs.export.SimpleLogRecordProcessor ;
378
+ package otel ;
305
379
306
- SdkTracerProvider sdkTracerProvider = SdkTracerProvider . builder()
307
- .addSpanProcessor(SimpleSpanProcessor . builder(... ). build())
308
- .setResource(resource)
309
- .build();
380
+ import io.opentelemetry.sdk.logs.SdkLoggerProvider ;
381
+ import io.opentelemetry.sdk.logs.export.LogRecordExporter ;
382
+ import io.opentelemetry.sdk.logs.export.SimpleLogRecordProcessor ;
383
+ import io.opentelemetry.sdk.resources.Resource ;
384
+ import io.opentelemetry.sdk.trace.SdkTracerProvider ;
385
+ import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor ;
386
+ import io.opentelemetry.sdk.trace.export.SpanExporter ;
387
+
388
+ public class SimpleExporter {
389
+ public static void create (
390
+ Resource resource , SpanExporter spanExporter , LogRecordExporter logExporter ) {
391
+ SdkTracerProvider sdkTracerProvider =
392
+ SdkTracerProvider . builder()
393
+ .addSpanProcessor(SimpleSpanProcessor . builder(spanExporter). build())
394
+ .setResource(resource)
395
+ .build();
310
396
311
- SdkLoggerProvider sdkLoggerProvider = SdkLoggerProvider . builder()
312
- .addLogRecordProcessor(
313
- SimpleLogRecordProcessor . builder(... ). build())
314
- .setResource(resource)
315
- .build();
397
+ SdkLoggerProvider sdkLoggerProvider =
398
+ SdkLoggerProvider . builder()
399
+ .addLogRecordProcessor(SimpleLogRecordProcessor . create(logExporter))
400
+ .setResource(resource)
401
+ .build();
402
+ }
403
+ }
316
404
```
317
405
318
406
{{< /tab >}} {{< /tabpane>}}
319
407
408
+ <!-- prettier-ignore-end -->
409
+
320
410
{{% /docs/languages/exporters/outro %}}
0 commit comments