FROM azul/zulu-openjdk-alpine:25
# Install APM agent and a dependency for profiling support (libstdc++)
ADD https://repo1.maven.org/maven2/co/elastic/apm/elastic-apm-agent/1.55.0/elastic-apm-agent-1.55.0.jar /opt/elastic-apm-agent.jar
RUN chmod 0644 /opt/elastic-apm-agent.jar
RUN apk add --no-cache libstdc++
And then
java -javaagent:/opt/elastic-apm-agent.jar ...
For 17, this got me inferred spans. For 25, a warning is printed at startup:
WARNING: Install JVM debug symbols to improve profile accuracy
And I get no inferred spans.
Is this a feature that is still missing in Elastic APM’s Java agent for Java 25? Or is there a problem with the debug symbols in Azul Zulu 25?
If you need inferred spans in Java 25, I recommend moving to our EDOT agent, where inferred spans are fully supported. The inferred spans in the APM agent are experimental, and are on an old version of asyncprofiler that won’t work beyond Java 23. We have no current plans to upgrade this as it is a significant effort on an experimental option and we have the EDOT agent where it is fully supported
Very nice, thank you! I tried the EDOT agent and it’s working great. The only thing I couldn’t figure out so far is how to get the data for the metrics view back. “CPU usage”, “System memory usage”, GC details, etc. - the only thing I can see there is the thread count. I tried
And I see related messages at startup like “Created UpDownCounter for jvm.memory.used” but nothing in the Metrics view in Kibana. Do you know what I’m missing?
It looks like the Java 25 support limitation in the profiling documentation may be the key point here. Since the same setup works with Java 17 but produces the debug-symbol warning and no inferred spans on Java 25, it would be useful to confirm whether Java 25 profiling is officially supported by agent 1.55.0 and whether Azul Zulu 25 requires a different debug-symbol package. Testing with a newer APM agent version, if available, could also help determine whether this is a version-specific limitation.
As stated, in the APM agent inferred spans is experimental and is on an old unmaintained version of asyncprofiler. So if it doesn't work for you and you need it, moving to the EDOT agent is the recommended path as inferred spans there is NOT experimental, it is GA and fully supported.
Apache, Apache Lucene, Apache Hadoop, Hadoop, HDFS and the yellow elephant
logo are trademarks of the
Apache Software Foundation
in the United States and/or other countries.