January 18, 2018

Elasticsearch, Logstash and Kibana also known as the ELK stack have been widely adapted by development and operation teams and used successfully by our customers for log analytics – as one piece of the puzzle – to provide outstanding reliable software systems. The Elastic APM solution (currently available as beta version) adds another piece to the puzzle.

Elastic APM instruments your application, collects performance metrics from your Node.js or Python application and ships the metric data to Elasticsearch. Kibana provides pre-configured dashboards and a dedicated APM UI to view performance metrics, transactions and other information like function and database calls.

Java and Elastic APM

While the Elastic Website tells us that Node.js and Python are supported and others are on the way like Ruby and JavaScript, we were surprised that good old Java is not mentioned. Maybe Java is also on the way and just not highlighted. We don’t know what’s on the road-map and asked ourselves why should we wait when we can close the gap ourselves? We took “If you don’t see what you need, you can build it or leverage the open source community”[1] seriously and built a Java agent that instruments Java applications and ships the performance metrics to Elasticsearch via the Elastic APM Server. There is no need to change the source code of your application: just start the agent along with it and you get the data basically for free. It’s a big benefit when you need performance metrics from an application and you have no access to the source code.

Using Kibana and X-Pack you can visualize the collected data, create dashboards, detect anomalies and create alerts. With the dedicated APM UI you can drill-down into transaction traces to see executed methods. Not having all relevant data in one place limits effectiveness in managing your application.


What we would like to have as well is an application flow map and real user experience metric data from the browser and iOS and Android devices – in one place. We have this on the way. In our next post, we will explore anomaly detection in Kibana to detect application performance anomalies in real-time.

Questions? Thoughts? You want stay up-to-date on the topic? We would love to hear from you. Tweet us at @novatecgmbh or email us at apm@novatec-gmbh.de

1 – https://www.elastic.co/solutions/apm

Leave a Comment


  1. S

    Is there a way to access the Java Agent written by you or will it stay closed source within NovaTec?

  2. C

    Hi Steffen,

    I’m glad to hear from you. You can find the Java agent’s prototype here: https://github.com/mariusoe/inspectIT/tree/elastic-apm-poc. In case you don’t find what you are looking for just get in touch with us.

    Regards, Christoph

  3. k


    Could you help me to istall this agent please ? I am not familar with java Env and I have to troboulshout performance problems in production.
    I’ve installed my Elastic stack 6.1
    Many thans in advance

  4. C


    you find the code branch here: https://github.com/mariusoe/inspectIT/tree/elastic-apm-poc

    You can follow the inspectIT user guide to set things up as there some parts of inspectIT needed until we fully decoupled the agent. https://inspectit-performance.atlassian.net/wiki/spaces/DOC/overview

    We would be glad about your feedback and to learn about your use cases and requirements. That’s how we can make design decisions that brings users the greatest value in using the agent.


  5. k

    Thank you for all these informations. My java version is 1.4.2 . It will be possible to monitor it with this version ?

    Application server Jboss EAP 5.

    Best regards

  6. I


    unfortunately, the agent Christoph linked here is only working with Java 1.6+. From our experience, most of the people already moved to Java 1.6, at least. We are already in the Java 10 release candidate time, the version 1.4.2 is so old.

    However, we do have the knowledge inside of our department on how can we instrument and collect data from the Java 1.4.2 application as well. We could offer you this as part of our consulting services. Let us know if you are interested.


  7. k

    Hi Christophe;

    thank you for your help .

    I’ve installed the agent on my application server. How di I tell him to which elastic server send data ?


  8. k

    Many thanks for your help. Finally migration to 1.6 done . I’ll test on it and give yoou feedback

  9. A

    Dear all ;

    Even following documentation, I am not able to install inspectIT agent with jboss. Could you help me please

    many thanks in advance

  10. k

    agent jar installed . but didn’t communicate with elastic apm
    java -javaagent:/root/inspectIT/inspectit.agent.java/build/release/inspectit-agent.jar -Dinspectit.repository= -Dinspectit.agent.name=Instance1 -version
    févr. 21, 2018 10:59:54 AM rocks.inspectit.agent.java.javaagent.JavaAgent premain
    INFOS: inspectIT Agent: Starting initialization…
    10:59:56.274 [main] INFO rocks.inspectit.agent.java.SpringAgent – Location of inspectit-agent.jar set to: /root/inspectIT/inspectit.agent.java/build/release/inspectit-agent.jar
    10:59:56,255 |-INFO in ch.qos.logback.classic.LoggerContext[default] – Could NOT find resource [logback.groovy]
    10:59:56,255 |-INFO in ch.qos.logback.classic.LoggerContext[default] – Could NOT find resource [logback-test.xml]
    10:59:56,255 |-INFO in ch.qos.logback.classic.LoggerContext[default] – Could NOT find resource [logback.xml]
    10:59:56,258 |-INFO in ch.qos.logback.classic.BasicConfigurator@345f69f3 – Setting up default configuration.
    10:59:56,300 |-WARN in Logger[rocks.inspectit.agent.java.SpringAgent] – No appenders present in context [default] for logger [rocks.inspectit.agent.java.SpringAgent].

    févr. 21, 2018 11:00:03 AM rocks.inspectit.agent.java.javaagent.JavaAgent preloadClasses
    INFOS: Preloading classes …
    févr. 21, 2018 11:00:03 AM rocks.inspectit.agent.java.javaagent.JavaAgent preloadClasses
    INFOS: Preloading classes complete…
    févr. 21, 2018 11:00:03 AM rocks.inspectit.agent.java.javaagent.JavaAgent premain
    INFOS: inspectIT Agent: Initialization complete…
    openjdk version “1.8.0_161”
    OpenJDK Runtime Environment (build 1.8.0_161-b14)
    OpenJDK 64-Bit Server VM (build 25.161-b14, mixed mode)

    on the apm server side I have no data received from this server
    any help please ?

  11. C

    To setup the Java agent you need to follow the general setup https://inspectit-performance.atlassian.net/wiki/spaces/DOC18/pages/93009260/Installation+Guide and you need to add additional parameters to ship data to elastic.

    * Install CMR (required because the agent polls the instrumentation from the CMR
    * Add java agent to application server
    – Add -Dinspectit.repository=[REPOSITORY_IP]:[REPOSITORY_PORT] -Dinspectit.agent.name=[AGENT_DISPLAY_NAME]
    – Add -Delastic-apm.host=: to the JVM parameters when including the agent.

    You need a running elastic search + elastic apm instance.

    The agent will report the data directly to Elastic APM and polls its instrumentation configuration (what should be monitored) from the CMR.

By continuing to use the site, you agree to the use of cookies. more information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.