Skip to content

Commit be9b14d

Browse files
committed
fix: improve README
1 parent 20f27dd commit be9b14d

2 files changed

Lines changed: 29 additions & 2 deletions

File tree

‎contrib/temporal-opentelemetry-v2/README.md‎

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
Module `io.temporal:temporal-opentelemetry-v2` provides replay-safe
44
OpenTelemetry tracing, metrics, and logs for Temporal.
55

6+
> [!WARNING]
7+
> This module is experimental, and its API may change.
8+
69
## Setup
710

811
Use the same version as the rest of your Temporal Java SDK dependencies:
@@ -18,7 +21,13 @@ attach the plugin to your service stubs:
1821

1922
```java
2023
import io.opentelemetry.api.GlobalOpenTelemetry;
24+
import io.opentelemetry.exporter.otlp.logs.OtlpGrpcLogRecordExporter;
25+
import io.opentelemetry.exporter.otlp.metrics.OtlpGrpcMetricExporter;
2126
import io.opentelemetry.exporter.otlp.trace.OtlpGrpcSpanExporter;
27+
import io.opentelemetry.sdk.logs.SdkLoggerProvider;
28+
import io.opentelemetry.sdk.logs.export.BatchLogRecordProcessor;
29+
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
30+
import io.opentelemetry.sdk.metrics.export.PeriodicMetricReader;
2231
import io.opentelemetry.sdk.trace.SdkTracerProvider;
2332
import io.opentelemetry.sdk.trace.export.BatchSpanProcessor;
2433
import io.temporal.client.WorkflowClient;
@@ -34,6 +43,16 @@ ReplaySafeOpenTelemetry openTelemetry =
3443
SdkTracerProvider.builder()
3544
.addSpanProcessor(
3645
BatchSpanProcessor.builder(OtlpGrpcSpanExporter.builder().build()).build()))
46+
.setMeterProviderBuilder(
47+
SdkMeterProvider.builder()
48+
.registerMetricReader(
49+
PeriodicMetricReader.builder(OtlpGrpcMetricExporter.builder().build())
50+
.build()))
51+
.setLoggerProviderBuilder(
52+
SdkLoggerProvider.builder()
53+
.addLogRecordProcessor(
54+
BatchLogRecordProcessor.builder(OtlpGrpcLogRecordExporter.builder().build())
55+
.build()))
3756
.build();
3857
GlobalOpenTelemetry.set(openTelemetry);
3958

@@ -51,6 +70,13 @@ Plugins configured on `WorkflowServiceStubsOptions` propagate to clients and
5170
workers created from those stubs. It can also be configured directly on
5271
`WorkflowClientOptions`.
5372

73+
Build `ReplaySafeOpenTelemetry` before anything else uses the OpenTelemetry
74+
`Context`, and register it as the global before building the plugin. Otherwise,
75+
`OpenTelemetryPlugin.Builder.build()` throws `IllegalStateException`.
76+
77+
Call `ReplaySafeOpenTelemetry.close()` after your workers and clients have
78+
stopped to export buffered telemetry and shut down its providers.
79+
5480
## Tracing
5581

5682
The plugin propagates application trace context through Temporal headers.
@@ -81,7 +107,8 @@ try (Scope ignored = span.makeCurrent()) {
81107

82108
## Metrics
83109

84-
Create synchronous metrics in workflow, client, and activity code with the standard OpenTelemetry API:
110+
Create metrics in workflow, client, and activity code with the standard
111+
OpenTelemetry API. Workflow code supports only synchronous instruments:
85112

86113
```java
87114
import io.opentelemetry.api.GlobalOpenTelemetry;

‎contrib/temporal-opentelemetry-v2/src/test/java/io/temporal/opentelemetry/v2/OtelTestBase.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
import io.opentelemetry.sdk.logs.SdkLoggerProvider;
1010
import io.opentelemetry.sdk.logs.data.LogRecordData;
1111
import io.opentelemetry.sdk.logs.export.SimpleLogRecordProcessor;
12-
import io.opentelemetry.sdk.testing.exporter.InMemoryLogRecordExporter;
1312
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
1413
import io.opentelemetry.sdk.metrics.data.MetricData;
14+
import io.opentelemetry.sdk.testing.exporter.InMemoryLogRecordExporter;
1515
import io.opentelemetry.sdk.testing.exporter.InMemoryMetricReader;
1616
import io.opentelemetry.sdk.testing.exporter.InMemorySpanExporter;
1717
import io.opentelemetry.sdk.trace.SdkTracerProvider;

0 commit comments

Comments
 (0)