diff --git a/docs/src/main/asciidoc/infinispan-dev-services.adoc b/docs/src/main/asciidoc/infinispan-dev-services.adoc
index 96c601bfcca76..01d1e179fd862 100644
--- a/docs/src/main/asciidoc/infinispan-dev-services.adoc
+++ b/docs/src/main/asciidoc/infinispan-dev-services.adoc
@@ -118,12 +118,62 @@ quarkus.infinispan-client.conn-2.devservices.enabled=true
== Tracing with OpenTelemetry
-Infinispan supports instrumentation of the server via OpenTelemetry. Enable tracing setting `quarkus.infinispan-client.devservices.tracing.enabled` to true.
-The default otlp exporter endpoint is `http://localhost:4317`.
-If you are running Jaeger in a container as explained in the xref:opentelemetry.adoc[OpenTelemetry guide], since the containers
-are running in the default network, Infinispan container won't have access to localhost.
-You need to get the IP running the following command and configure the `quarkus.infinispan-client.devservices.tracing.exporter.otlp.endpoint` property.
+Infinispan supports server tracing using OpenTelemetry. Starting from Infinispan 15.0, you need
+to configure tracing in the server's settings.
+To enable this in Dev Services, you need to add extra settings to the running server using the
+`quarkus.infinispan-client.devservices.config-files` property.
+[source, yaml]
+----
+infinispan:
+ cacheContainer:
+ tracing:
+ collector-endpoint: "http://jaeger:4318" <1>
+ enabled: true <2>
+ exporter-protocol: "OTLP" <3>
+ service-name: "infinispan-server" <4>
+ security: false <5>
+----
+<1> Collector endpoint. Assuming a container service name 'jaeger' is running.
+<2> Enables tracing
+<3> Exporter protocol. OLTP is the OpenTelemetry protocol.
+<4> The service name that will be registered in the tracing collector, Jaeger in this case
+<5> Enables 'security' category tracing
+
+See below the equivalent in XML and JSON.
+
+[source, xml]
+----
+
+
+
+
+
+----
+
+[source, json]
+----
+{
+ "infinispan" : {
+ "cache-container" : {
+ "statistics" : true,
+ "tracing" : {
+ "collector-endpoint" : "http://jaeger:4318",
+ "enabled" : true,
+ "exporter-protocol" : "OTLP",
+ "service-name" : "infinispan-server",
+ "security" : false
+ }
+ }
+ }
+}
+----
+
+You need name the Jaeger service or get the IP running the following command and configure the exporter endpoint.
[source,bash]
----
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' jaeger
diff --git a/extensions/infinispan-client/deployment/src/main/java/io/quarkus/infinispan/client/deployment/devservices/InfinispanDevServiceProcessor.java b/extensions/infinispan-client/deployment/src/main/java/io/quarkus/infinispan/client/deployment/devservices/InfinispanDevServiceProcessor.java
index ae49676cb305f..0b9d5212cf86f 100644
--- a/extensions/infinispan-client/deployment/src/main/java/io/quarkus/infinispan/client/deployment/devservices/InfinispanDevServiceProcessor.java
+++ b/extensions/infinispan-client/deployment/src/main/java/io/quarkus/infinispan/client/deployment/devservices/InfinispanDevServiceProcessor.java
@@ -283,14 +283,24 @@ public QuarkusInfinispanContainer(String clientName, InfinispanDevServicesConfig
return " -c " + userConfigFile;
}).collect(Collectors.joining())).orElse("");
+ if (config.tracing.isPresent()) {
+ log.warn(
+ "Starting with Infinispan 15.0, Infinispan support for instrumentation of the server via OpenTelemetry has evolved. Enabling tracing setting `quarkus.infinispan-client.devservices.tracing.enabled` to true won't work.\n"
+ +
+ "You need to use the `quarkus.infinispan-client.devservices.tracing.enabled` property and provide a JSON, XML or YAML file as follows. Check xref:infinispan-dev-services.adoc[Infinispan Dev Services guide]");
+ log.warn("infinispan:\n" +
+ " cacheContainer:\n" +
+ " tracing:\n" +
+ " collector-endpoint: \"http://jaeger:4318\"\n" +
+ " enabled: true\n" +
+ " exporter-protocol: \"OTLP\"\n" +
+ " service-name: \"infinispan-server\"\n" +
+ " security: false");
+ }
+
if (config.mcastPort.isPresent()) {
command = command + " -Djgroups.mcast_port=" + config.mcastPort.getAsInt();
}
- if (config.tracing.isPresent()) {
- command = command + " -Dinfinispan.tracing.enabled=" + config.tracing.get();
- command = command + " -Dotel.exporter.otlp.endpoint=" + config.exporterOtlpEndpoint.get();
- command = command + " -Dotel.service.name=infinispan-server-service -Dotel.metrics.exporter=none";
- }
config.artifacts.ifPresent(a -> withArtifacts(a.toArray(new String[0])));
diff --git a/extensions/infinispan-client/runtime/src/main/java/io/quarkus/infinispan/client/runtime/InfinispanDevServicesConfig.java b/extensions/infinispan-client/runtime/src/main/java/io/quarkus/infinispan/client/runtime/InfinispanDevServicesConfig.java
index e4368b0126886..1a2a55c4a637e 100644
--- a/extensions/infinispan-client/runtime/src/main/java/io/quarkus/infinispan/client/runtime/InfinispanDevServicesConfig.java
+++ b/extensions/infinispan-client/runtime/src/main/java/io/quarkus/infinispan/client/runtime/InfinispanDevServicesConfig.java
@@ -113,12 +113,14 @@ public class InfinispanDevServicesConfig {
* Runs the Infinispan Server container with tracing enabled. Traces are disabled by default
*/
@ConfigItem(name = "tracing.enabled", defaultValue = "false")
+ @Deprecated(forRemoval = true)
public Optional tracing;
/**
* Sets Infinispan Server otlp endpoint. Default value is http://localhost:4317
*/
@ConfigItem(name = "tracing.exporter.otlp.endpoint", defaultValue = "http://localhost:4317")
+ @Deprecated(forRemoval = true)
public Optional exporterOtlpEndpoint;
/**