Skip to content

Commit 6752935

Browse files
authored
Cassandra and Clickhouse metadata updates (#15065)
1 parent 113be85 commit 6752935

File tree

12 files changed

+175
-23
lines changed

12 files changed

+175
-23
lines changed

docs/instrumentation-list.yaml

Lines changed: 79 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2309,7 +2309,10 @@ libraries:
23092309
cassandra:
23102310
- name: cassandra-3.0
23112311
description: |
2312-
Instruments the Cassandra database client, providing database client spans and metrics for Cassandra queries.
2312+
This instrumentation enables database client spans and database client metrics for the DataStax Cassandra Driver.
2313+
semantic_conventions:
2314+
- DATABASE_CLIENT_SPANS
2315+
- DATABASE_CLIENT_METRICS
23132316
library_link: https://github.com/apache/cassandra-java-driver
23142317
source_path: instrumentation/cassandra/cassandra-3.0
23152318
scope:
@@ -2348,6 +2351,24 @@ libraries:
23482351
- name: server.port
23492352
type: LONG
23502353
- when: otel.semconv-stability.opt-in=database
2354+
metrics:
2355+
- name: db.client.operation.duration
2356+
description: Duration of database client operations.
2357+
type: HISTOGRAM
2358+
unit: s
2359+
attributes:
2360+
- name: db.operation.name
2361+
type: STRING
2362+
- name: db.system.name
2363+
type: STRING
2364+
- name: network.peer.address
2365+
type: STRING
2366+
- name: network.peer.port
2367+
type: LONG
2368+
- name: server.address
2369+
type: STRING
2370+
- name: server.port
2371+
type: LONG
23512372
spans:
23522373
- span_kind: CLIENT
23532374
attributes:
@@ -2373,7 +2394,10 @@ libraries:
23732394
type: LONG
23742395
- name: cassandra-4.0
23752396
description: |
2376-
Instruments the Cassandra database client, providing database client spans and metrics for Cassandra queries.
2397+
This instrumentation enables database client spans and database client metrics for the DataStax Cassandra Driver.
2398+
semantic_conventions:
2399+
- DATABASE_CLIENT_SPANS
2400+
- DATABASE_CLIENT_METRICS
23772401
library_link: https://github.com/apache/cassandra-java-driver
23782402
source_path: instrumentation/cassandra/cassandra-4.0
23792403
scope:
@@ -2424,6 +2448,24 @@ libraries:
24242448
- name: server.port
24252449
type: LONG
24262450
- when: otel.semconv-stability.opt-in=database
2451+
metrics:
2452+
- name: db.client.operation.duration
2453+
description: Duration of database client operations.
2454+
type: HISTOGRAM
2455+
unit: s
2456+
attributes:
2457+
- name: db.operation.name
2458+
type: STRING
2459+
- name: db.system.name
2460+
type: STRING
2461+
- name: network.peer.address
2462+
type: STRING
2463+
- name: network.peer.port
2464+
type: LONG
2465+
- name: server.address
2466+
type: STRING
2467+
- name: server.port
2468+
type: LONG
24272469
spans:
24282470
- span_kind: CLIENT
24292471
attributes:
@@ -2461,7 +2503,10 @@ libraries:
24612503
type: LONG
24622504
- name: cassandra-4.4
24632505
description: |
2464-
Instruments the Cassandra database client, providing database client spans and metrics for Cassandra queries.
2506+
This instrumentation enables database client spans and database client metrics for the DataStax Cassandra Driver.
2507+
semantic_conventions:
2508+
- DATABASE_CLIENT_SPANS
2509+
- DATABASE_CLIENT_METRICS
24652510
library_link: https://github.com/apache/cassandra-java-driver
24662511
source_path: instrumentation/cassandra/cassandra-4.4
24672512
scope:
@@ -2514,6 +2559,24 @@ libraries:
25142559
- name: server.port
25152560
type: LONG
25162561
- when: otel.semconv-stability.opt-in=database
2562+
metrics:
2563+
- name: db.client.operation.duration
2564+
description: Duration of database client operations.
2565+
type: HISTOGRAM
2566+
unit: s
2567+
attributes:
2568+
- name: db.operation.name
2569+
type: STRING
2570+
- name: db.system.name
2571+
type: STRING
2572+
- name: network.peer.address
2573+
type: STRING
2574+
- name: network.peer.port
2575+
type: LONG
2576+
- name: server.address
2577+
type: STRING
2578+
- name: server.port
2579+
type: LONG
25172580
spans:
25182581
- span_kind: CLIENT
25192582
attributes:
@@ -2551,8 +2614,11 @@ libraries:
25512614
type: LONG
25522615
clickhouse:
25532616
- name: clickhouse-client-v1-0.5
2554-
description: This instrumentation enables database client spans and metrics for
2555-
the V1 ClickHouse client.
2617+
description: |
2618+
This instrumentation enables database client spans and database client metrics for the ClickHouse Java Client.
2619+
semantic_conventions:
2620+
- DATABASE_CLIENT_SPANS
2621+
- DATABASE_CLIENT_METRICS
25562622
library_link: https://github.com/ClickHouse/clickhouse-java
25572623
source_path: instrumentation/clickhouse/clickhouse-client-v1-0.5
25582624
scope:
@@ -2619,8 +2685,11 @@ libraries:
26192685
- name: server.port
26202686
type: LONG
26212687
- name: clickhouse-client-v2-0.8
2622-
description: This instrumentation enables database client spans and metrics for
2623-
the V2 ClickHouse client.
2688+
description: |
2689+
This instrumentation enables database client spans and database client metrics for the ClickHouse Java Client.
2690+
semantic_conventions:
2691+
- DATABASE_CLIENT_SPANS
2692+
- DATABASE_CLIENT_METRICS
26242693
library_link: https://github.com/ClickHouse/clickhouse-java
26252694
source_path: instrumentation/clickhouse/clickhouse-client-v2-0.8
26262695
scope:
@@ -7721,7 +7790,7 @@ libraries:
77217790
default: SCOPE_
77227791
- name: spring-web-3.1
77237792
description: |
7724-
This instrumentation provides a library integration that enables capturing HTTP client spans and metrics for Spring's RestTemplate. The agent integration enriches HTTP server spans and metrics with route information.
7793+
This instrumentation provides a library integration that enables capturing HTTP client spans and metrics for Spring's RestTemplate.
77257794
library_link: https://github.com/spring-projects/spring-framework
77267795
source_path: instrumentation/spring/spring-web/spring-web-3.1
77277796
scope:
@@ -7761,8 +7830,8 @@ libraries:
77617830
- name: url.full
77627831
type: STRING
77637832
- name: spring-web-6.0
7764-
description: This instrumentation enriches HTTP server spans and metrics with
7765-
route information.
7833+
description: |
7834+
This instrumentation provides a library integration that enables capturing HTTP client spans and metrics for Spring's RestTemplate.
77667835
library_link: https://github.com/spring-projects/spring-framework
77677836
source_path: instrumentation/spring/spring-web/spring-web-6.0
77687837
minimum_java_version: 17

instrumentation/cassandra/cassandra-3.0/javaagent/src/test/java/CassandraClientTest.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,11 @@
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

6+
import static io.opentelemetry.instrumentation.testing.junit.db.DbClientMetricsTestUtil.assertDurationMetric;
67
import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable;
78
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo;
9+
import static io.opentelemetry.semconv.DbAttributes.DB_OPERATION_NAME;
10+
import static io.opentelemetry.semconv.DbAttributes.DB_SYSTEM_NAME;
811
import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS;
912
import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_PORT;
1013
import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_TYPE;
@@ -33,6 +36,7 @@
3336
import java.util.stream.Stream;
3437
import org.junit.jupiter.api.AfterAll;
3538
import org.junit.jupiter.api.BeforeAll;
39+
import org.junit.jupiter.api.Test;
3640
import org.junit.jupiter.api.extension.RegisterExtension;
3741
import org.junit.jupiter.params.ParameterizedTest;
3842
import org.junit.jupiter.params.provider.Arguments;
@@ -231,6 +235,25 @@ void asyncTest(Parameter parameter) {
231235
session.close();
232236
}
233237

238+
@Test
239+
void testMetrics() {
240+
Session session = cluster.connect();
241+
242+
session.execute("DROP KEYSPACE IF EXISTS non_existent");
243+
244+
assertDurationMetric(
245+
testing,
246+
"io.opentelemetry.cassandra-3.0",
247+
DB_SYSTEM_NAME,
248+
DB_OPERATION_NAME,
249+
NETWORK_PEER_ADDRESS,
250+
NETWORK_PEER_PORT,
251+
SERVER_ADDRESS,
252+
SERVER_PORT);
253+
254+
session.close();
255+
}
256+
234257
private static Stream<Arguments> provideSyncParameters() {
235258
return Stream.of(
236259
Arguments.of(
Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
description: >
2-
Instruments the Cassandra database client, providing database client spans and metrics for
3-
Cassandra queries.
2+
This instrumentation enables database client spans and database client metrics for the DataStax
3+
Cassandra Driver.
4+
semantic_conventions:
5+
- DATABASE_CLIENT_SPANS
6+
- DATABASE_CLIENT_METRICS
47
library_link: https://github.com/apache/cassandra-java-driver
58
configurations:
69
- name: otel.instrumentation.common.db-statement-sanitizer.enabled
710
description: Enables statement sanitization for database queries.
811
type: boolean
9-
default: true
12+
default: true

instrumentation/cassandra/cassandra-4-common/testing/src/main/java/io/opentelemetry/cassandra/v4/common/AbstractCassandraTest.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,12 @@
55

66
package io.opentelemetry.cassandra.v4.common;
77

8+
import static io.opentelemetry.instrumentation.testing.junit.db.DbClientMetricsTestUtil.assertDurationMetric;
89
import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable;
910
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo;
1011
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies;
12+
import static io.opentelemetry.semconv.DbAttributes.DB_OPERATION_NAME;
13+
import static io.opentelemetry.semconv.DbAttributes.DB_SYSTEM_NAME;
1114
import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_ADDRESS;
1215
import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_PEER_PORT;
1316
import static io.opentelemetry.semconv.NetworkAttributes.NETWORK_TYPE;
@@ -41,6 +44,7 @@
4144
import java.util.stream.Stream;
4245
import org.junit.jupiter.api.AfterAll;
4346
import org.junit.jupiter.api.BeforeAll;
47+
import org.junit.jupiter.api.Test;
4448
import org.junit.jupiter.params.ParameterizedTest;
4549
import org.junit.jupiter.params.provider.Arguments;
4650
import org.junit.jupiter.params.provider.MethodSource;
@@ -62,6 +66,8 @@ public abstract class AbstractCassandraTest {
6266

6367
protected abstract InstrumentationExtension testing();
6468

69+
protected abstract String getInstrumentationName();
70+
6571
protected CqlSession wrap(CqlSession session) {
6672
return session;
6773
}
@@ -81,6 +87,25 @@ static void beforeAll() throws UnknownHostException {
8187
cassandraPort = cassandra.getMappedPort(9042);
8288
}
8389

90+
@Test
91+
void testMetrics() {
92+
CqlSession session = getSession(null);
93+
94+
session.execute("DROP KEYSPACE IF EXISTS non_existent");
95+
96+
assertDurationMetric(
97+
testing(),
98+
getInstrumentationName(),
99+
DB_SYSTEM_NAME,
100+
DB_OPERATION_NAME,
101+
NETWORK_PEER_ADDRESS,
102+
NETWORK_PEER_PORT,
103+
SERVER_ADDRESS,
104+
SERVER_PORT);
105+
106+
session.close();
107+
}
108+
84109
@AfterAll
85110
static void afterAll() {
86111
cassandra.stop();

instrumentation/cassandra/cassandra-4.0/javaagent/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ muzzle {
1313

1414
dependencies {
1515
library("com.datastax.oss:java-driver-core:4.0.0")
16+
latestDepTestLibrary("com.datastax.oss:java-driver-core:4.3.+") // see cassandra-4.4 module
1617

1718
compileOnly("com.google.auto.value:auto-value-annotations")
1819
annotationProcessor("com.google.auto.value:auto-value")

instrumentation/cassandra/cassandra-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/cassandra/v4_0/CassandraTest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@
1212

1313
class CassandraTest extends AbstractCassandraTest {
1414

15+
@Override
16+
protected String getInstrumentationName() {
17+
return "io.opentelemetry.cassandra-4.0";
18+
}
19+
1520
@RegisterExtension
1621
static final InstrumentationExtension testing = AgentInstrumentationExtension.create();
1722

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
description: >
2-
Instruments the Cassandra database client, providing database client spans and metrics for
3-
Cassandra queries.
2+
This instrumentation enables database client spans and database client metrics for the DataStax
3+
Cassandra Driver.
4+
semantic_conventions:
5+
- DATABASE_CLIENT_SPANS
6+
- DATABASE_CLIENT_METRICS
47
library_link: https://github.com/apache/cassandra-java-driver
58
configurations:
69
- name: otel.instrumentation.common.db-statement-sanitizer.enabled
710
description: Enables statement sanitization for database queries.
811
type: boolean
9-
default: true
12+
default: true

instrumentation/cassandra/cassandra-4.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/cassandra/v4_4/CassandraTest.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,12 @@
1010
import io.opentelemetry.testing.cassandra.v4_4.AbstractCassandra44Test;
1111
import org.junit.jupiter.api.extension.RegisterExtension;
1212

13-
public class CassandraTest extends AbstractCassandra44Test {
13+
class CassandraTest extends AbstractCassandra44Test {
14+
15+
@Override
16+
protected String getInstrumentationName() {
17+
return "io.opentelemetry.cassandra-4.4";
18+
}
1419

1520
@RegisterExtension
1621
static final InstrumentationExtension testing = AgentInstrumentationExtension.create();

instrumentation/cassandra/cassandra-4.4/library/src/test/java/io/opentelemetry/instrumentation/cassandra/v4_4/CassandraTest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,11 @@
1313

1414
public class CassandraTest extends AbstractCassandra44Test {
1515

16+
@Override
17+
protected String getInstrumentationName() {
18+
return "io.opentelemetry.cassandra-4.4";
19+
}
20+
1621
@RegisterExtension
1722
static final InstrumentationExtension testing = LibraryInstrumentationExtension.create();
1823

instrumentation/cassandra/cassandra-4.4/metadata.yaml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
description: >
2-
Instruments the Cassandra database client, providing database client spans and metrics for
3-
Cassandra queries.
2+
This instrumentation enables database client spans and database client metrics for the DataStax
3+
Cassandra Driver.
4+
semantic_conventions:
5+
- DATABASE_CLIENT_SPANS
6+
- DATABASE_CLIENT_METRICS
47
library_link: https://github.com/apache/cassandra-java-driver
58
configurations:
69
- name: otel.instrumentation.common.db-statement-sanitizer.enabled

0 commit comments

Comments
 (0)