Skip to content

Commit 33ca552

Browse files
committed
add shutdown hook
Signed-off-by: Gregor Zeitlinger <gregor.zeitlinger@grafana.com>
1 parent 637fd5f commit 33ca552

2 files changed

Lines changed: 17 additions & 4 deletions

File tree

docs/content/otel/jvm-runtime-metrics.md

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,13 @@ OpenTelemetrySdk openTelemetry =
9393
.build())
9494
.build();
9595

96-
RuntimeMetrics.builder(openTelemetry).build();
96+
RuntimeMetrics runtimeMetrics =
97+
RuntimeMetrics.builder(openTelemetry).build();
98+
99+
// Close on shutdown to stop JMX metric collection
100+
Runtime.getRuntime()
101+
.addShutdownHook(new Thread(runtimeMetrics::close));
102+
97103
// Scrape at http://localhost:9464/metrics
98104
```
99105

@@ -134,7 +140,10 @@ OpenTelemetrySdk openTelemetry =
134140
.build())
135141
.build();
136142

137-
RuntimeMetrics.builder(openTelemetry).build();
143+
RuntimeMetrics runtimeMetrics =
144+
RuntimeMetrics.builder(openTelemetry).build();
145+
Runtime.getRuntime()
146+
.addShutdownHook(new Thread(runtimeMetrics::close));
138147

139148
// Expose everything on one endpoint
140149
HTTPServer.builder()

examples/example-otel-jvm-runtime-metrics/src/main/java/io/prometheus/metrics/examples/otelruntimemetrics/Main.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,13 @@ public static void main(String[] args) throws IOException, InterruptedException
5050
// - captureGcCause() adds a jvm.gc.cause attribute to jvm.gc.duration
5151
// - emitExperimentalTelemetry() enables buffer pools, extended CPU,
5252
// extended memory pools, and file descriptor metrics
53-
RuntimeMetrics.builder(openTelemetry).captureGcCause().emitExperimentalTelemetry().build();
53+
RuntimeMetrics runtimeMetrics =
54+
RuntimeMetrics.builder(openTelemetry).captureGcCause().emitExperimentalTelemetry().build();
5455

55-
// 5. Expose both Prometheus and OTel metrics on a single endpoint.
56+
// 5. Close RuntimeMetrics on shutdown to stop JMX metric collection.
57+
Runtime.getRuntime().addShutdownHook(new Thread(runtimeMetrics::close));
58+
59+
// 6. Expose both Prometheus and OTel metrics on a single endpoint.
5660
HTTPServer server = HTTPServer.builder().port(9400).registry(registry).buildAndStart();
5761

5862
System.out.println(

0 commit comments

Comments
 (0)