|
1 | 1 | package org.a2aproject.sdk.examples.helloworld.client; |
2 | 2 |
|
| 3 | +import static org.a2aproject.sdk.extras.opentelemetry.client.OpenTelemetryClientTransportWrapper.OTEL_METER_KEY; |
3 | 4 | import static org.a2aproject.sdk.extras.opentelemetry.client.OpenTelemetryClientTransportWrapper.OTEL_TRACER_KEY; |
4 | 5 | import static org.a2aproject.sdk.extras.opentelemetry.client.propagation.OpenTelemetryClientPropagatorTransportWrapper.OTEL_OPEN_TELEMETRY_KEY; |
5 | 6 |
|
|
34 | 35 | import io.grpc.ManagedChannelBuilder; |
35 | 36 | import io.opentelemetry.api.trace.propagation.W3CTraceContextPropagator; |
36 | 37 | import io.opentelemetry.context.propagation.ContextPropagators; |
| 38 | +import io.opentelemetry.exporter.otlp.metrics.OtlpGrpcMetricExporter; |
37 | 39 | import io.opentelemetry.exporter.otlp.trace.OtlpGrpcSpanExporter; |
38 | 40 | import io.opentelemetry.sdk.OpenTelemetrySdk; |
| 41 | +import io.opentelemetry.sdk.metrics.SdkMeterProvider; |
| 42 | +import io.opentelemetry.sdk.metrics.export.PeriodicMetricReader; |
39 | 43 | import io.opentelemetry.sdk.resources.Resource; |
40 | 44 | import io.opentelemetry.sdk.trace.SdkTracerProvider; |
41 | 45 | import io.opentelemetry.sdk.trace.export.BatchSpanProcessor; |
@@ -136,20 +140,32 @@ public static void main(String[] args) { |
136 | 140 | } |
137 | 141 |
|
138 | 142 | static OpenTelemetrySdk initOpenTelemetry() { |
| 143 | + Resource resource = Resource.getDefault().toBuilder() |
| 144 | + .put("service.version", "1.0") |
| 145 | + .put("service.name", "helloworld-client") |
| 146 | + .build(); |
| 147 | + |
139 | 148 | SdkTracerProvider sdkTracerProvider = SdkTracerProvider.builder() |
140 | 149 | .addSpanProcessor(BatchSpanProcessor.builder( |
141 | 150 | OtlpGrpcSpanExporter.builder() |
142 | 151 | .setEndpoint("http://localhost:5317") |
143 | 152 | .build() |
144 | 153 | ).build()) |
145 | | - .setResource(Resource.getDefault().toBuilder() |
146 | | - .put("service.version", "1.0") |
147 | | - .put("service.name", "helloworld-client") |
148 | | - .build()) |
| 154 | + .setResource(resource) |
| 155 | + .build(); |
| 156 | + |
| 157 | + SdkMeterProvider sdkMeterProvider = SdkMeterProvider.builder() |
| 158 | + .registerMetricReader(PeriodicMetricReader.builder( |
| 159 | + OtlpGrpcMetricExporter.builder() |
| 160 | + .setEndpoint("http://localhost:5317") |
| 161 | + .build() |
| 162 | + ).build()) |
| 163 | + .setResource(resource) |
149 | 164 | .build(); |
150 | 165 |
|
151 | 166 | return OpenTelemetrySdk.builder() |
152 | 167 | .setTracerProvider(sdkTracerProvider) |
| 168 | + .setMeterProvider(sdkMeterProvider) |
153 | 169 | .setPropagators(ContextPropagators.create(W3CTraceContextPropagator.getInstance())) |
154 | 170 | .build(); |
155 | 171 | } |
@@ -186,6 +202,7 @@ private static void updateTransportConfig(ClientTransportConfig transportConfig, |
186 | 202 | if (openTelemetrySdk != null) { |
187 | 203 | Map<String, Object> parameters = new HashMap<>(transportConfig.getParameters()); |
188 | 204 | parameters.put(OTEL_TRACER_KEY, openTelemetrySdk.getTracer("helloworld-client")); |
| 205 | + parameters.put(OTEL_METER_KEY, openTelemetrySdk.getMeter("helloworld-client")); |
189 | 206 | parameters.put(OTEL_OPEN_TELEMETRY_KEY, openTelemetrySdk); |
190 | 207 | transportConfig.setParameters(parameters); |
191 | 208 | } |
|
0 commit comments