
io.opentelemetry.javaagent.instrumentation.netty.v3_8.client.NettyClientSingletons Maven / Gradle / Ivy
/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/
package io.opentelemetry.javaagent.instrumentation.netty.v3_8.client;
import io.opentelemetry.api.GlobalOpenTelemetry;
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
import io.opentelemetry.instrumentation.api.instrumenter.SpanKindExtractor;
import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientAttributesExtractor;
import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientMetrics;
import io.opentelemetry.instrumentation.api.instrumenter.http.HttpSpanNameExtractor;
import io.opentelemetry.instrumentation.api.instrumenter.http.HttpSpanStatusExtractor;
import io.opentelemetry.instrumentation.api.instrumenter.net.PeerServiceAttributesExtractor;
import io.opentelemetry.instrumentation.netty.common.internal.NettyConnectionRequest;
import io.opentelemetry.instrumentation.netty.common.internal.NettyErrorHolder;
import io.opentelemetry.javaagent.bootstrap.internal.CommonConfig;
import io.opentelemetry.javaagent.instrumentation.netty.v3_8.HttpRequestAndChannel;
import org.jboss.netty.channel.Channel;
import org.jboss.netty.handler.codec.http.HttpResponse;
public final class NettyClientSingletons {
private static final String INSTRUMENTATION_NAME = "io.opentelemetry.netty-3.8";
private static final Instrumenter INSTRUMENTER;
private static final Instrumenter CONNECTION_INSTRUMENTER;
static {
NettyHttpClientAttributesGetter httpAttributesGetter = new NettyHttpClientAttributesGetter();
NettyNetClientAttributesGetter netAttributesGetter = new NettyNetClientAttributesGetter();
INSTRUMENTER =
Instrumenter.builder(
GlobalOpenTelemetry.get(),
INSTRUMENTATION_NAME,
HttpSpanNameExtractor.create(httpAttributesGetter))
.setSpanStatusExtractor(HttpSpanStatusExtractor.create(httpAttributesGetter))
.addAttributesExtractor(
HttpClientAttributesExtractor.builder(httpAttributesGetter, netAttributesGetter)
.setCapturedRequestHeaders(CommonConfig.get().getClientRequestHeaders())
.setCapturedResponseHeaders(CommonConfig.get().getClientResponseHeaders())
.build())
.addAttributesExtractor(
PeerServiceAttributesExtractor.create(
netAttributesGetter, CommonConfig.get().getPeerServiceMapping()))
.addOperationMetrics(HttpClientMetrics.get())
.addContextCustomizer(
(context, requestAndChannel, startAttributes) -> NettyErrorHolder.init(context))
.buildClientInstrumenter(HttpRequestHeadersSetter.INSTANCE);
NettyConnectNetAttributesGetter nettyConnectAttributesGetter =
new NettyConnectNetAttributesGetter();
CONNECTION_INSTRUMENTER =
Instrumenter.builder(
GlobalOpenTelemetry.get(), INSTRUMENTATION_NAME, NettyConnectionRequest::spanName)
.addAttributesExtractor(
HttpClientAttributesExtractor.create(
NettyConnectHttpAttributesGetter.INSTANCE, nettyConnectAttributesGetter))
.addAttributesExtractor(
PeerServiceAttributesExtractor.create(
nettyConnectAttributesGetter, CommonConfig.get().getPeerServiceMapping()))
.buildInstrumenter(SpanKindExtractor.alwaysClient());
}
public static Instrumenter instrumenter() {
return INSTRUMENTER;
}
public static Instrumenter connectionInstrumenter() {
return CONNECTION_INSTRUMENTER;
}
private NettyClientSingletons() {}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy