How solve "GET unknown route" from APM Java?

Kibana version:

Elasticsearch version:

APM Server version:

APM Agent language and version:
APM Agent 1.7.0

Browser version:
Chrome 78.0.3904

Original install method (e.g. download page, yum, deb, from source, etc.) and version:
ELK Stack URL Download: , Kibana and Beats
APM Agent URL Download:

Description of the problem including expected versus actual behavior. Please include screenshots (if relevant):

I installed and let the ELK Stack configuration default. After that, i installed APM Agent Java in Tomcat Server and edited the

export CATALINA_OPTS="-Xms512M -Xmx3072M"
export CATALINA_OPTS="$CATALINA_OPTS -javaagent:/opt/tomcat/elastic-apm-agent-1.7.0.jar"
export CATALINA_OPTS="$CATALINA_OPTS -Delastic.apm.service_name=tomcat-appx"
export CATALINA_OPTS="$CATALINA_OPTS -Delastic.apm.application_packages=appx"
export CATALINA_OPTS="$CATALINA_OPTS -Delastic.apm.server_urls="

I followed the wizard to enable APM Server and add service "tomcat-appx".

Some transactions was classified like "GET Unknown route".

How can i solved this?

Hi @dancristian,

By default, transactions are named with the Servlet name that handled the request.
Thus, if request does not reach a servlet, you get those unknown route transactions.

There are two possible cases:

  • your requests reach a servlet but Elastic agent is not properly able to detect those
  • your requests do not reach a servlet: handled by filter, static resources, ...

Regarding detection of Servlets, agent has a 'pre-filter' heuristic to only consider classes which name
ends with 'Servlet'. This heuristic can be disabled by setting the internal configuration enable_type_matching_name_pre_filtering=false.
Please note that this has an impact on all plugins, thus a small extra overhead during application startup time is expected.

In the second case, it is possible to change the default transaction naming to use URL path instead.

The major implication is that it may create lots of duplicate transactions if they have similar paths
like /usr/{id} where {id} is the user ID, you can get as many transactions as there are users.

Thus, if required, you can mitigate this by using
url_groups, which will allow to use wildcards in transaction URLs.

Another option is to set transaction names using our API:

Also, could you provide us some details about the application ?
For example do you have a list of all servlets that should be instrumented ?

1 Like

This topic was automatically closed 20 days after the last reply. New replies are no longer allowed.