Kibana Observability metrics expected format not otel?

I have tried to get JVM and other metrics from Wildfly to show up in Kibana Observability. Wildfly have support for exporting/pushing metrics with the OpenTelemetry Protocol (OTLP), in what I assume is the OTEL standard. I can see metrics documents in my index, but they are not shown in Kibana Observability.

Using the elastic-apm-agent-1.54.0.jar I'm able to get JVM metrics in Kibana Observability as expected.

I have attached examples below, showing the difference when using Wildfly's inbuilt tools, and the elastic-apm-agent. Maybe that can help checking if what Wildfly produce isn't enough for Kibana Observability.

Does anyone know if Kibana Observability needs more data than standard OTEL? (Assuming Wildfly produces OTEL)
Does anyone spot/understand why my JVM metrics isn't showing up in Kibana Observability?

Java: 17
Wildfly: 31
Elastic Stack: v8.7.1
Elastic apm agent: 1.54.0

Examples:

Document when using Wildfly micrometer subsystem exporting with otlp
{
  "_index": ".ds-metrics-apm.app.wildfly-default-2025.10.09-000001",
  "_id": "pT9JyZkBBUKxyBnqq0wv",
  "_version": 1,
  "_score": 0,
  "_source": {
    "@timestamp": "2025-10-09T14:04:31.424Z",
    "agent": {
      "name": "io.micrometer/java",
      "version": "1.12.0"
    },
    "data_stream": {
      "dataset": "apm.app.wildfly",
      "namespace": "default",
      "type": "metrics"
    },
    "ecs": {
      "version": "8.6.0-dev"
    },
    "event": {
      "agent_id_status": "missing",
      "ingested": "2025-10-09T14:04:32Z"
    },
    "gc": 18,
    "labels": {
      "name": "G1 Young Generation"
    },
    "metricset": {
      "name": "app"
    },
    "observer": {
      "hostname": "bda6434b3874",
      "type": "apm-server",
      "version": "8.7.1"
    },
    "processor": {
      "event": "metric",
      "name": "metric"
    },
    "service": {
      "language": {
        "name": "java"
      },
      "name": "wildfly"
    }
  },
  "fields": {
    "service.name": [
      "wildfly"
    ],
    "data_stream.namespace": [
      "default"
    ],
    "labels.name": [
      "G1 Young Generation"
    ],
    "processor.name": [
      "metric"
    ],
    "data_stream.type": [
      "metrics"
    ],
    "observer.hostname": [
      "bda6434b3874"
    ],
    "service.language.name": [
      "java"
    ],
    "metricset.name": [
      "app"
    ],
    "event.ingested": [
      "2025-10-09T14:04:32.000Z"
    ],
    "@timestamp": [
      "2025-10-09T14:04:31.424Z"
    ],
    "ecs.version": [
      "8.6.0-dev"
    ],
    "observer.type": [
      "apm-server"
    ],
    "observer.version": [
      "8.7.1"
    ],
    "processor.event": [
      "metric"
    ],
    "data_stream.dataset": [
      "apm.app.wildfly"
    ],
    "agent.version": [
      "1.12.0"
    ],
    "agent.name": [
      "io.micrometer/java"
    ],
    "event.agent_id_status": [
      "missing"
    ],
    "gc": [
      18
    ]
  }
}
Document when using elastic-apm-agent-1.54.0.jar
{
  "_index": ".ds-metrics-apm.internal-default-2025.10.06-000001",
  "_id": "dDEOxJkBBUKxyBnqFzSy",
  "_version": 1,
  "_score": 0,
  "_source": {
    "@timestamp": "2025-10-08T13:41:17.873Z",
    "agent": {
      "ephemeral_id": "032a8e38-de3f-418f-8ce2-488bc9229f64",
      "name": "java",
      "version": "1.54.0"
    },
    "container": {
      "id": "d841d6a12f4a3c352e0bbe46a251a60de77453c647b6babe18380df27eb0a823"
    },
    "data_stream": {
      "dataset": "apm.internal",
      "namespace": "default",
      "type": "metrics"
    },
    "ecs": {
      "version": "8.6.0-dev"
    },
    "event": {
      "agent_id_status": "missing",
      "ingested": "2025-10-08T13:41:21Z"
    },
    "host": {
      "architecture": "amd64",
      "hostname": "d841d6a12f4a",
      "ip": "172.20.0.5",
      "name": "d841d6a12f4a",
      "os": {
        "platform": "Linux"
      }
    },
    "jvm": {
      "gc": {
        "count": 28,
        "time": 182
      }
    },
    "labels": {
      "name": "G1 Young Generation"
    },
    "metricset": {
      "name": "app"
    },
    "observer": {
      "hostname": "bda6434b3874",
      "type": "apm-server",
      "version": "8.7.1"
    },
    "process": {
      "parent": {
        "pid": 1
      },
      "pid": 165,
      "title": "/opt/java/openjdk/bin/java"
    },
    "processor": {
      "event": "metric",
      "name": "metric"
    },
    "service": {
      "language": {
        "name": "Java",
        "version": "17.0.10"
      },
      "name": "otelpoc",
      "node": {
        "name": "d841d6a12f4a3c352e0bbe46a251a60de77453c647b6babe18380df27eb0a823"
      },
      "runtime": {
        "name": "Java",
        "version": "17.0.10"
      }
    }
  },
  "fields": {
    "service.node.name": [
      "d841d6a12f4a3c352e0bbe46a251a60de77453c647b6babe18380df27eb0a823"
    ],
    "process.parent.pid": [
      1
    ],
    "host.hostname": [
      "d841d6a12f4a"
    ],
    "process.pid": [
      165
    ],
    "service.language.name": [
      "Java"
    ],
    "container.id": [
      "d841d6a12f4a3c352e0bbe46a251a60de77453c647b6babe18380df27eb0a823"
    ],
    "process.title.text": [
      "/opt/java/openjdk/bin/java"
    ],
    "host.ip": [
      "172.20.0.5"
    ],
    "processor.event": [
      "metric"
    ],
    "agent.name": [
      "java"
    ],
    "host.name": [
      "d841d6a12f4a"
    ],
    "event.agent_id_status": [
      "missing"
    ],
    "service.name": [
      "otelpoc"
    ],
    "data_stream.namespace": [
      "default"
    ],
    "jvm.gc.time": [
      182
    ],
    "processor.name": [
      "metric"
    ],
    "service.runtime.name": [
      "Java"
    ],
    "labels.name": [
      "G1 Young Generation"
    ],
    "service.runtime.version": [
      "17.0.10"
    ],
    "data_stream.type": [
      "metrics"
    ],
    "observer.hostname": [
      "bda6434b3874"
    ],
    "host.architecture": [
      "amd64"
    ],
    "metricset.name": [
      "app"
    ],
    "event.ingested": [
      "2025-10-08T13:41:21.000Z"
    ],
    "@timestamp": [
      "2025-10-08T13:41:17.873Z"
    ],
    "observer.version": [
      "8.7.1"
    ],
    "ecs.version": [
      "8.6.0-dev"
    ],
    "observer.type": [
      "apm-server"
    ],
    "host.os.platform": [
      "Linux"
    ],
    "data_stream.dataset": [
      "apm.internal"
    ],
    "service.language.version": [
      "17.0.10"
    ],
    "jvm.gc.count": [
      28
    ],
    "agent.ephemeral_id": [
      "032a8e38-de3f-418f-8ce2-488bc9229f64"
    ],
    "agent.version": [
      "1.54.0"
    ],
    "process.title": [
      "/opt/java/openjdk/bin/java"
    ]
  }
}

Seems like this was a bug, and was fixed in v8.8. I will update my elastic stack tomorrow and try again. Will report back.

After upgrading my stack to v 8.19.5 I now get the message:

"Runtime metrics are not available for this Agent / SDK type."

I thought Kibana Observability Metrics supported the otel java agent after version 8.8+, but that does not seem to be the case? Ref.: Added support for OpenTelemetry process and system metrics by AlexanderWert · Pull Request #151826 · elastic/kibana · GitHub

I saw someone mention the property: otel.semconv.stability.opt.in=jvm, but that did not affect anything.

Is using the Elastic APM agent our only option now if we want metrics in Observability?
Does anyone know if this is supported in stack version 9.X+?
I cannot easily get elastic-stack-docker-part-two, that I'm using in my POC, to stack version 9+.