Skip to content

Commit f1c4431

Browse files
committed
Add db and rpc exception events
1 parent d50fd18 commit f1c4431

24 files changed

Lines changed: 183 additions & 104 deletions

File tree

instrumentation/apache-dubbo-2.7/library-autoconfigure/src/main/java/io/opentelemetry/instrumentation/apachedubbo/v2_7/DubboTelemetryBuilder.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
1919
import io.opentelemetry.instrumentation.api.instrumenter.InstrumenterBuilder;
2020
import io.opentelemetry.instrumentation.api.instrumenter.SpanNameExtractor;
21+
import io.opentelemetry.instrumentation.api.internal.Experimental;
2122
import io.opentelemetry.instrumentation.api.semconv.network.NetworkAttributesExtractor;
2223
import io.opentelemetry.instrumentation.api.semconv.network.ServerAttributesExtractor;
2324
import java.util.ArrayList;
@@ -132,6 +133,8 @@ public DubboTelemetry build() {
132133
AttributesExtractor.constant(PEER_SERVICE, peerService));
133134
}
134135

136+
Experimental.setExceptionEventName(serverInstrumenterBuilder, "rpc.server.call.exception");
137+
Experimental.setExceptionEventName(clientInstrumenterBuilder, "rpc.client.call.exception");
135138
return new DubboTelemetry(
136139
serverInstrumenterBuilder.buildServerInstrumenter(DubboHeadersGetter.INSTANCE),
137140
clientInstrumenterBuilder.buildClientInstrumenter(DubboHeadersSetter.INSTANCE));

instrumentation/cassandra/cassandra-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cassandra/v3_0/CassandraSingletons.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@
1111
import io.opentelemetry.instrumentation.api.incubator.semconv.db.DbClientSpanNameExtractor;
1212
import io.opentelemetry.instrumentation.api.incubator.semconv.db.SqlClientAttributesExtractor;
1313
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
14+
import io.opentelemetry.instrumentation.api.instrumenter.InstrumenterBuilder;
1415
import io.opentelemetry.instrumentation.api.instrumenter.SpanKindExtractor;
16+
import io.opentelemetry.instrumentation.api.internal.Experimental;
1517
import io.opentelemetry.javaagent.bootstrap.internal.AgentCommonConfig;
1618
import io.opentelemetry.semconv.incubating.DbIncubatingAttributes;
1719

@@ -26,7 +28,7 @@ public final class CassandraSingletons {
2628
static {
2729
CassandraSqlAttributesGetter attributesGetter = new CassandraSqlAttributesGetter();
2830

29-
INSTRUMENTER =
31+
InstrumenterBuilder<CassandraRequest, ExecutionInfo> builder =
3032
Instrumenter.<CassandraRequest, ExecutionInfo>builder(
3133
GlobalOpenTelemetry.get(),
3234
INSTRUMENTATION_NAME,
@@ -38,8 +40,9 @@ public final class CassandraSingletons {
3840
AgentCommonConfig.get().isQuerySanitizationEnabled())
3941
.build())
4042
.addAttributesExtractor(new CassandraAttributesExtractor())
41-
.addOperationMetrics(DbClientMetrics.get())
42-
.buildInstrumenter(SpanKindExtractor.alwaysClient());
43+
.addOperationMetrics(DbClientMetrics.get());
44+
Experimental.setExceptionEventName(builder, "db.client.operation.exception");
45+
INSTRUMENTER = builder.buildInstrumenter(SpanKindExtractor.alwaysClient());
4346
}
4447

4548
public static Instrumenter<CassandraRequest, ExecutionInfo> instrumenter() {

instrumentation/cassandra/cassandra-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cassandra/v4_0/CassandraSingletons.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@
1111
import io.opentelemetry.instrumentation.api.incubator.semconv.db.DbClientSpanNameExtractor;
1212
import io.opentelemetry.instrumentation.api.incubator.semconv.db.SqlClientAttributesExtractor;
1313
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
14+
import io.opentelemetry.instrumentation.api.instrumenter.InstrumenterBuilder;
1415
import io.opentelemetry.instrumentation.api.instrumenter.SpanKindExtractor;
16+
import io.opentelemetry.instrumentation.api.internal.Experimental;
1517
import io.opentelemetry.javaagent.bootstrap.internal.AgentCommonConfig;
1618
import io.opentelemetry.semconv.incubating.DbIncubatingAttributes;
1719

@@ -25,7 +27,7 @@ public final class CassandraSingletons {
2527
static {
2628
CassandraSqlAttributesGetter attributesGetter = new CassandraSqlAttributesGetter();
2729

28-
INSTRUMENTER =
30+
InstrumenterBuilder<CassandraRequest, ExecutionInfo> builder =
2931
Instrumenter.<CassandraRequest, ExecutionInfo>builder(
3032
GlobalOpenTelemetry.get(),
3133
INSTRUMENTATION_NAME,
@@ -37,8 +39,9 @@ public final class CassandraSingletons {
3739
AgentCommonConfig.get().isQuerySanitizationEnabled())
3840
.build())
3941
.addAttributesExtractor(new CassandraAttributesExtractor())
40-
.addOperationMetrics(DbClientMetrics.get())
41-
.buildInstrumenter(SpanKindExtractor.alwaysClient());
42+
.addOperationMetrics(DbClientMetrics.get());
43+
Experimental.setExceptionEventName(builder, "db.client.operation.exception");
44+
INSTRUMENTER = builder.buildInstrumenter(SpanKindExtractor.alwaysClient());
4245
}
4346

4447
public static Instrumenter<CassandraRequest, ExecutionInfo> instrumenter() {

instrumentation/cassandra/cassandra-4.4/library/src/main/java/io/opentelemetry/instrumentation/cassandra/v4_4/CassandraTelemetryBuilder.java

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@
1313
import io.opentelemetry.instrumentation.api.incubator.semconv.db.DbClientSpanNameExtractor;
1414
import io.opentelemetry.instrumentation.api.incubator.semconv.db.SqlClientAttributesExtractor;
1515
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
16+
import io.opentelemetry.instrumentation.api.instrumenter.InstrumenterBuilder;
1617
import io.opentelemetry.instrumentation.api.instrumenter.SpanKindExtractor;
18+
import io.opentelemetry.instrumentation.api.internal.Experimental;
1719

1820
/** A builder of {@link CassandraTelemetry}. */
1921
public class CassandraTelemetryBuilder {
@@ -64,15 +66,19 @@ protected Instrumenter<CassandraRequest, ExecutionInfo> createInstrumenter(
6466
OpenTelemetry openTelemetry, boolean statementSanitizationEnabled) {
6567
CassandraSqlAttributesGetter attributesGetter = new CassandraSqlAttributesGetter();
6668

67-
return Instrumenter.<CassandraRequest, ExecutionInfo>builder(
68-
openTelemetry, INSTRUMENTATION_NAME, DbClientSpanNameExtractor.create(attributesGetter))
69-
.addAttributesExtractor(
70-
SqlClientAttributesExtractor.builder(attributesGetter)
71-
.setTableAttribute(DB_CASSANDRA_TABLE)
72-
.setQuerySanitizationEnabled(statementSanitizationEnabled)
73-
.build())
74-
.addAttributesExtractor(new CassandraAttributesExtractor())
75-
.addOperationMetrics(DbClientMetrics.get())
76-
.buildInstrumenter(SpanKindExtractor.alwaysClient());
69+
InstrumenterBuilder<CassandraRequest, ExecutionInfo> builder =
70+
Instrumenter.<CassandraRequest, ExecutionInfo>builder(
71+
openTelemetry,
72+
INSTRUMENTATION_NAME,
73+
DbClientSpanNameExtractor.create(attributesGetter))
74+
.addAttributesExtractor(
75+
SqlClientAttributesExtractor.builder(attributesGetter)
76+
.setTableAttribute(DB_CASSANDRA_TABLE)
77+
.setQuerySanitizationEnabled(statementSanitizationEnabled)
78+
.build())
79+
.addAttributesExtractor(new CassandraAttributesExtractor())
80+
.addOperationMetrics(DbClientMetrics.get());
81+
Experimental.setExceptionEventName(builder, "db.client.operation.exception");
82+
return builder.buildInstrumenter(SpanKindExtractor.alwaysClient());
7783
}
7884
}

instrumentation/clickhouse/clickhouse-client-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/clickhouse/common/ClickHouseInstrumenterFactory.java

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@
1010
import io.opentelemetry.instrumentation.api.incubator.semconv.db.DbClientMetrics;
1111
import io.opentelemetry.instrumentation.api.incubator.semconv.db.DbClientSpanNameExtractor;
1212
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
13+
import io.opentelemetry.instrumentation.api.instrumenter.InstrumenterBuilder;
1314
import io.opentelemetry.instrumentation.api.instrumenter.SpanKindExtractor;
15+
import io.opentelemetry.instrumentation.api.internal.Experimental;
1416
import io.opentelemetry.instrumentation.api.semconv.network.ServerAttributesExtractor;
1517
import java.util.function.Function;
1618

@@ -21,15 +23,17 @@ public static Instrumenter<ClickHouseDbRequest, Void> createInstrumenter(
2123
ClickHouseAttributesGetter dbAttributesGetter =
2224
new ClickHouseAttributesGetter(errorCodeExtractor);
2325

24-
return Instrumenter.<ClickHouseDbRequest, Void>builder(
25-
GlobalOpenTelemetry.get(),
26-
instrumenterName,
27-
DbClientSpanNameExtractor.create(dbAttributesGetter))
28-
.addAttributesExtractor(DbClientAttributesExtractor.create(dbAttributesGetter))
29-
.addAttributesExtractor(
30-
ServerAttributesExtractor.create(new ClickHouseNetworkAttributesGetter()))
31-
.addOperationMetrics(DbClientMetrics.get())
32-
.buildInstrumenter(SpanKindExtractor.alwaysClient());
26+
InstrumenterBuilder<ClickHouseDbRequest, Void> builder =
27+
Instrumenter.<ClickHouseDbRequest, Void>builder(
28+
GlobalOpenTelemetry.get(),
29+
instrumenterName,
30+
DbClientSpanNameExtractor.create(dbAttributesGetter))
31+
.addAttributesExtractor(DbClientAttributesExtractor.create(dbAttributesGetter))
32+
.addAttributesExtractor(
33+
ServerAttributesExtractor.create(new ClickHouseNetworkAttributesGetter()))
34+
.addOperationMetrics(DbClientMetrics.get());
35+
Experimental.setExceptionEventName(builder, "db.client.operation.exception");
36+
return builder.buildInstrumenter(SpanKindExtractor.alwaysClient());
3337
}
3438

3539
private ClickHouseInstrumenterFactory() {}

instrumentation/couchbase/couchbase-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/couchbase/v2_0/CouchbaseSingletons.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import io.opentelemetry.instrumentation.api.instrumenter.InstrumenterBuilder;
1515
import io.opentelemetry.instrumentation.api.instrumenter.SpanKindExtractor;
1616
import io.opentelemetry.instrumentation.api.instrumenter.SpanNameExtractor;
17+
import io.opentelemetry.instrumentation.api.internal.Experimental;
1718

1819
public final class CouchbaseSingletons {
1920

@@ -40,6 +41,7 @@ public final class CouchbaseSingletons {
4041
builder.addAttributesExtractor(new ExperimentalAttributesExtractor());
4142
}
4243

44+
Experimental.setExceptionEventName(builder, "db.client.operation.exception");
4345
INSTRUMENTER = builder.buildInstrumenter(SpanKindExtractor.alwaysClient());
4446
}
4547

instrumentation/elasticsearch/elasticsearch-rest-common-5.0/library/src/main/java/io/opentelemetry/instrumentation/elasticsearch/rest/common/v5_0/internal/ElasticsearchRestInstrumenterFactory.java

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,10 @@
1010
import io.opentelemetry.instrumentation.api.incubator.semconv.db.DbClientMetrics;
1111
import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor;
1212
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
13+
import io.opentelemetry.instrumentation.api.instrumenter.InstrumenterBuilder;
1314
import io.opentelemetry.instrumentation.api.instrumenter.SpanKindExtractor;
1415
import io.opentelemetry.instrumentation.api.instrumenter.SpanNameExtractor;
16+
import io.opentelemetry.instrumentation.api.internal.Experimental;
1517
import java.util.List;
1618
import java.util.Set;
1719
import java.util.function.Function;
@@ -43,12 +45,14 @@ public static Instrumenter<ElasticsearchRestRequest, Response> create(
4345
spanNameExtractorTransformer.apply(
4446
new ElasticsearchSpanNameExtractor(dbClientAttributesGetter));
4547

46-
return Instrumenter.<ElasticsearchRestRequest, Response>builder(
47-
openTelemetry, instrumentationName, spanNameExtractor)
48-
.addAttributesExtractor(DbClientAttributesExtractor.create(dbClientAttributesGetter))
49-
.addAttributesExtractor(esClientAttributesExtractor)
50-
.addAttributesExtractors(attributesExtractors)
51-
.addOperationMetrics(DbClientMetrics.get())
52-
.buildInstrumenter(SpanKindExtractor.alwaysClient());
48+
InstrumenterBuilder<ElasticsearchRestRequest, Response> builder =
49+
Instrumenter.<ElasticsearchRestRequest, Response>builder(
50+
openTelemetry, instrumentationName, spanNameExtractor)
51+
.addAttributesExtractor(DbClientAttributesExtractor.create(dbClientAttributesGetter))
52+
.addAttributesExtractor(esClientAttributesExtractor)
53+
.addAttributesExtractors(attributesExtractors)
54+
.addOperationMetrics(DbClientMetrics.get());
55+
Experimental.setExceptionEventName(builder, "db.client.operation.exception");
56+
return builder.buildInstrumenter(SpanKindExtractor.alwaysClient());
5357
}
5458
}

instrumentation/elasticsearch/elasticsearch-transport-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/elasticsearch/transport/ElasticsearchTransportInstrumenterFactory.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
1515
import io.opentelemetry.instrumentation.api.instrumenter.InstrumenterBuilder;
1616
import io.opentelemetry.instrumentation.api.instrumenter.SpanKindExtractor;
17+
import io.opentelemetry.instrumentation.api.internal.Experimental;
1718
import org.elasticsearch.action.ActionResponse;
1819

1920
public final class ElasticsearchTransportInstrumenterFactory {
@@ -42,6 +43,7 @@ public static Instrumenter<ElasticTransportRequest, ActionResponse> create(
4243
instrumenterBuilder.addAttributesExtractor(experimentalAttributesExtractor);
4344
}
4445

46+
Experimental.setExceptionEventName(instrumenterBuilder, "db.client.operation.exception");
4547
return instrumenterBuilder.buildInstrumenter(SpanKindExtractor.alwaysClient());
4648
}
4749

instrumentation/geode-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/geode/GeodeSingletons.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@
1010
import io.opentelemetry.instrumentation.api.incubator.semconv.db.DbClientMetrics;
1111
import io.opentelemetry.instrumentation.api.incubator.semconv.db.DbClientSpanNameExtractor;
1212
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
13+
import io.opentelemetry.instrumentation.api.instrumenter.InstrumenterBuilder;
1314
import io.opentelemetry.instrumentation.api.instrumenter.SpanKindExtractor;
15+
import io.opentelemetry.instrumentation.api.internal.Experimental;
1416

1517
public final class GeodeSingletons {
1618
private static final String INSTRUMENTATION_NAME = "io.opentelemetry.geode-1.4";
@@ -20,14 +22,15 @@ public final class GeodeSingletons {
2022
static {
2123
GeodeDbAttributesGetter dbClientAttributesGetter = new GeodeDbAttributesGetter();
2224

23-
INSTRUMENTER =
25+
InstrumenterBuilder<GeodeRequest, Void> builder =
2426
Instrumenter.<GeodeRequest, Void>builder(
2527
GlobalOpenTelemetry.get(),
2628
INSTRUMENTATION_NAME,
2729
DbClientSpanNameExtractor.create(dbClientAttributesGetter))
2830
.addAttributesExtractor(DbClientAttributesExtractor.create(dbClientAttributesGetter))
29-
.addOperationMetrics(DbClientMetrics.get())
30-
.buildInstrumenter(SpanKindExtractor.alwaysClient());
31+
.addOperationMetrics(DbClientMetrics.get());
32+
Experimental.setExceptionEventName(builder, "db.client.operation.exception");
33+
INSTRUMENTER = builder.buildInstrumenter(SpanKindExtractor.alwaysClient());
3134
}
3235

3336
public static Instrumenter<GeodeRequest, Void> instrumenter() {

instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/GrpcTelemetryBuilder.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,8 @@ public GrpcTelemetry build() {
221221
AttributesExtractor.constant(PEER_SERVICE, peerService));
222222
}
223223

224+
Experimental.setExceptionEventName(serverInstrumenterBuilder, "rpc.server.call.exception");
225+
Experimental.setExceptionEventName(clientInstrumenterBuilder, "rpc.client.call.exception");
224226
return new GrpcTelemetry(
225227
serverInstrumenterBuilder.buildServerInstrumenter(GrpcRequestGetter.INSTANCE),
226228
// gRPC client interceptors require two phases, one to set up request and one to execute.

0 commit comments

Comments
 (0)