Skip to content

Commit a8793e3

Browse files
committed
try to add jetty 12 session metrics (failing)
1 parent 1027242 commit a8793e3

File tree

2 files changed

+59
-7
lines changed

2 files changed

+59
-7
lines changed

instrumentation/jmx-metrics/library/src/main/resources/jmx/rules/jetty.yaml

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ rules:
3434
metric: queue.size
3535
desc: The current job queue size
3636

37-
# Thread metrics for Jetty 11 and earlier
37+
# Thread metrics for Jetty 9 to 11
3838
- bean: org.eclipse.jetty.util.thread:type=queuedthreadpool,id=*
3939
prefix: jetty.thread.
4040
unit: "{thread}"
@@ -79,10 +79,36 @@ rules:
7979
unit: "{operation}"
8080
desc: The number of select calls
8181

82+
# Session metrics for Jetty 12
83+
- bean: org.eclipse.jetty.session:context=*,type=defaultsessioncache,id=*
84+
# org.eclipse.jetty.session:context=ROOT,type=defaultsessioncache,id=0
85+
prefix: jetty.session.
86+
unit: "{session}"
87+
metricAttribute:
88+
# 'context' corresponds to the webapp context path
89+
jetty.context: param(context)
90+
# 'id' is a "technical ID" with a single '0' value by default
91+
jetty.session.cache.id: param(id)
92+
mapping:
93+
# jetty.session.count
94+
sessionsCurrent:
95+
metric: count
96+
type: updowncounter
97+
desc: Current number of active sessions
98+
# jetty.session.count.max
99+
sessionsMax:
100+
metric: count.max
101+
# gauge because it can't be aggregated
102+
type: gauge
103+
desc: Maximum number of active sessions
104+
105+
# Session metrics for Jetty 9 to 11
82106
- bean: org.eclipse.jetty.server.session:context=*,type=sessionhandler,id=*
83107
prefix: jetty.session.
84108
metricAttribute:
109+
# 'context' corresponds to the webapp context path
85110
jetty.context: param(context)
111+
# 'id' is a "technical ID" with a single '0' value by default
86112
jetty.session.handler.id: param(id)
87113
mapping:
88114
# jetty.session.created.count

instrumentation/jmx-metrics/library/src/test/java/io/opentelemetry/instrumentation/jmx/rules/JettyIntegrationTest.java

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,11 @@
1111
import io.opentelemetry.instrumentation.jmx.rules.assertions.AttributeMatcherGroup;
1212
import java.time.Duration;
1313
import java.util.ArrayList;
14+
import java.util.Arrays;
1415
import java.util.Collections;
16+
import java.util.HashSet;
1517
import java.util.List;
18+
import java.util.Set;
1619
import org.junit.jupiter.params.ParameterizedTest;
1720
import org.junit.jupiter.params.provider.ValueSource;
1821
import org.testcontainers.containers.GenericContainer;
@@ -35,13 +38,13 @@ void testCollectedMetrics(int jettyMajorVersion) {
3538
jvmArgs.add(javaAgentJvmArgument());
3639
jvmArgs.addAll(javaPropertiesToJvmArgs(otelConfigProperties(yamlFiles)));
3740

38-
String jettyModules = "jmx,http,";
41+
Set<String> jettyModules = new HashSet<>(Arrays.asList("jmx", "http"));
3942
if (jettyMajorVersion >= 12) {
40-
jettyModules += "statistics";
43+
jettyModules.add("statistics");
4144
} else {
42-
jettyModules += "stats";
45+
jettyModules.add("stats");
4346
}
44-
String addModulesArg = "--add-to-startd=" + jettyModules;
47+
String addModulesArg = "--add-to-startd=" + String.join(",", jettyModules);
4548

4649
GenericContainer<?> container =
4750
new GenericContainer<>(
@@ -132,7 +135,31 @@ private static MetricsVerifier createMetricsVerifier(int jettyMajorVersion) {
132135
attributeWithAnyValue("jetty.selector.id"),
133136
attributeWithAnyValue("jetty.selector.context"))));
134137

135-
if (jettyMajorVersion < 12) {
138+
if (jettyMajorVersion >= 12) {
139+
verifier
140+
.add(
141+
"jetty.session.count",
142+
metric ->
143+
metric
144+
.isUpDownCounter()
145+
.hasDescription("Current number of active sessions")
146+
.hasUnit("{session}")
147+
.hasDataPointsWithAttributes(
148+
attributeGroup(
149+
attributeWithAnyValue("jetty.context"),
150+
attributeWithAnyValue("jetty.session.cache.id"))))
151+
.add(
152+
"jetty.session.count.max",
153+
metric ->
154+
metric
155+
.isUpDownCounter()
156+
.hasDescription("Maximum number of active sessions")
157+
.hasUnit("{session}")
158+
.hasDataPointsWithAttributes(
159+
attributeGroup(
160+
attributeWithAnyValue("jetty.context"),
161+
attributeWithAnyValue("jetty.session.cache.id"))));
162+
} else {
136163
verifier
137164
.add(
138165
"jetty.session.created.count",
@@ -179,7 +206,6 @@ private static MetricsVerifier createMetricsVerifier(int jettyMajorVersion) {
179206
attributeWithAnyValue("jetty.context"),
180207
attributeWithAnyValue("jetty.session.handler.id"))));
181208
}
182-
183209
return verifier;
184210
}
185211
}

0 commit comments

Comments
 (0)