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. use_path_as_transaction_name.
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:
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.