Skip to content

Prevent connection to localhost:4317 when no port is exposed #1368

Description

@ale-ima

Hi,
I am running jmx_exporter as a Java Agent exporter in OpenTelemetry mode with Tomcat10.1 and with the following arguments to the JVM (notice that no port is used): -javaagent:/usr/lib/jmxexporter/jmx_prometheus_javaagent-1.5.0.jar=/etc/jmxexporter/jmx_exporter.yml -Dotel.java.global-autoconfigure.enabled=true

In /etc/jmxexporter/jmx_exporter.yml I have the following config:

openTelemetry:
  endpoint: https://my-otel-endpoint.example
  protocol: http/protobuf
  interval: 10
rules:
  ...

In tomcat logs I see the following log every minute:

04-Dec-2025 00:00:00.867 SEVERE [OkHttp http://localhost:4317/...] e1723a08afd7bca35570fd31a7656f59.io.prometheus.metrics.shaded.io_opentelemetry_2_16_0_alpha.sdk.internal.ThrottlingLogger.doLog Failed to export metrics. The request could not be executed. Error message: Failed to connect to localhost/[0:0:0:0:0:0:0:1]:4317
        java.net.ConnectException: Failed to connect to localhost/[0:0:0:0:0:0:0:1]:4317
                at e1723a08afd7bca35570fd31a7656f59.io.prometheus.metrics.shaded.io_opentelemetry_2_16_0_alpha.okhttp3.internal.connection.RealConnection.connectSocket(RealConnection.kt:297)
                at e1723a08afd7bca35570fd31a7656f59.io.prometheus.metrics.shaded.io_opentelemetry_2_16_0_alpha.okhttp3.internal.connection.RealConnection.connect(RealConnection.kt:207)
                at e1723a08afd7bca35570fd31a7656f59.io.prometheus.metrics.shaded.io_opentelemetry_2_16_0_alpha.okhttp3.internal.connection.ExchangeFinder.findConnection(ExchangeFinder.kt:226)
                at e1723a08afd7bca35570fd31a7656f59.io.prometheus.metrics.shaded.io_opentelemetry_2_16_0_alpha.okhttp3.internal.connection.ExchangeFinder.findHealthyConnection(ExchangeFinder.kt:106)
                at e1723a08afd7bca35570fd31a7656f59.io.prometheus.metrics.shaded.io_opentelemetry_2_16_0_alpha.okhttp3.internal.connection.ExchangeFinder.find(ExchangeFinder.kt:74)
                at e1723a08afd7bca35570fd31a7656f59.io.prometheus.metrics.shaded.io_opentelemetry_2_16_0_alpha.okhttp3.internal.connection.RealCall.initExchange$okhttp(RealCall.kt:255)
                at e1723a08afd7bca35570fd31a7656f59.io.prometheus.metrics.shaded.io_opentelemetry_2_16_0_alpha.okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.kt:32)
                at e1723a08afd7bca35570fd31a7656f59.io.prometheus.metrics.shaded.io_opentelemetry_2_16_0_alpha.okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
                at e1723a08afd7bca35570fd31a7656f59.io.prometheus.metrics.shaded.io_opentelemetry_2_16_0_alpha.okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.kt:95)
                at e1723a08afd7bca35570fd31a7656f59.io.prometheus.metrics.shaded.io_opentelemetry_2_16_0_alpha.okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
                at e1723a08afd7bca35570fd31a7656f59.io.prometheus.metrics.shaded.io_opentelemetry_2_16_0_alpha.okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.kt:83)
                at e1723a08afd7bca35570fd31a7656f59.io.prometheus.metrics.shaded.io_opentelemetry_2_16_0_alpha.okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
                at e1723a08afd7bca35570fd31a7656f59.io.prometheus.metrics.shaded.io_opentelemetry_2_16_0_alpha.okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.kt:76)
                at e1723a08afd7bca35570fd31a7656f59.io.prometheus.metrics.shaded.io_opentelemetry_2_16_0_alpha.okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
                at e1723a08afd7bca35570fd31a7656f59.io.prometheus.metrics.shaded.io_opentelemetry_2_16_0_alpha.exporter.sender.okhttp.internal.RetryInterceptor.intercept(RetryInterceptor.java:96)
                at e1723a08afd7bca35570fd31a7656f59.io.prometheus.metrics.shaded.io_opentelemetry_2_16_0_alpha.okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
                at e1723a08afd7bca35570fd31a7656f59.io.prometheus.metrics.shaded.io_opentelemetry_2_16_0_alpha.okhttp3.internal.connection.RealCall.getResponseWithInterceptorChain$okhttp(RealCall.kt:201)
                at e1723a08afd7bca35570fd31a7656f59.io.prometheus.metrics.shaded.io_opentelemetry_2_16_0_alpha.okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:517)
                at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
                at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
                at java.base/java.lang.Thread.run(Thread.java:1583)
                Suppressed: java.net.ConnectException: Failed to connect to localhost/127.0.0.1:4317
                        ... 21 more
                Caused by: java.net.ConnectException: Connection refused
                        at java.base/sun.nio.ch.Net.pollConnect(Native Method)
                        at java.base/sun.nio.ch.Net.pollConnectNow(Net.java:682)
                        at java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:542)
                        at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:592)
                        at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327)
                        at java.base/java.net.Socket.connect(Socket.java:751)
                        at e1723a08afd7bca35570fd31a7656f59.io.prometheus.metrics.shaded.io_opentelemetry_2_16_0_alpha.okhttp3.internal.platform.Platform.connectSocket(Platform.kt:128)
                        at e1723a08afd7bca35570fd31a7656f59.io.prometheus.metrics.shaded.io_opentelemetry_2_16_0_alpha.okhttp3.internal.connection.RealConnection.connectSocket(RealConnection.kt:295)
                        ... 20 more
        Caused by: java.net.ConnectException: Connection refused
                at java.base/sun.nio.ch.Net.pollConnect(Native Method)
                at java.base/sun.nio.ch.Net.pollConnectNow(Net.java:682)
                at java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:542)
                at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:592)
                at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327)
                at java.base/java.net.Socket.connect(Socket.java:751)
                at e1723a08afd7bca35570fd31a7656f59.io.prometheus.metrics.shaded.io_opentelemetry_2_16_0_alpha.okhttp3.internal.platform.Platform.connectSocket(Platform.kt:128)
                at e1723a08afd7bca35570fd31a7656f59.io.prometheus.metrics.shaded.io_opentelemetry_2_16_0_alpha.okhttp3.internal.connection.RealConnection.connectSocket(RealConnection.kt:295)

Is there a way to prevent this self connection when OpenTelemetry mode is used and no ports is exposed?
Thanks!

Metadata

Metadata

Assignees

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions